vendor: update all dependencies

This commit is contained in:
Nick Craig-Wood 2018-06-17 17:59:12 +01:00
parent 3f0789e2db
commit 08021c4636
2474 changed files with 435818 additions and 282709 deletions

View file

@ -10,5 +10,5 @@ Please fill out the sections below to help us address your issue.
### Steps to reproduce
If you have have an runnable example, please include it.
If you have an runnable example, please include it.

View file

@ -3,7 +3,7 @@
"Pattern": "/sdk-for-go/api/",
"StripPrefix": "/sdk-for-go/api",
"Include": ["/src/github.com/aws/aws-sdk-go/aws", "/src/github.com/aws/aws-sdk-go/service"],
"Exclude": ["/src/cmd", "/src/github.com/aws/aws-sdk-go/awstesting", "/src/github.com/aws/aws-sdk-go/awsmigrate"],
"Exclude": ["/src/cmd", "/src/github.com/aws/aws-sdk-go/awstesting", "/src/github.com/aws/aws-sdk-go/awsmigrate", "/src/github.com/aws/aws-sdk-go/private"],
"IgnoredSuffixes": ["iface"]
},
"Github": {

View file

@ -40,11 +40,8 @@ matrix:
- os: osx
go: tip
install:
- make get-deps
script:
- make unit-with-race-cover
- make ci-test
branches:
only:

View file

@ -1,3 +1,278 @@
Release v1.14.8 (2018-06-15)
===
### Service Client Updates
* `service/mediaconvert`: Updates service API and documentation
* This release adds language code support according to the ISO-639-3 standard. Custom 3-character language codes are now supported on input and output for both audio and captions.
Release v1.14.7 (2018-06-14)
===
### Service Client Updates
* `service/apigateway`: Updates service API and documentation
* Support for PRIVATE endpoint configuration type
* `service/dynamodb`: Updates service API and documentation
* Added two new fields SSEType and KMSMasterKeyArn to SSEDescription block in describe-table output.
* `service/iotanalytics`: Updates service API and documentation
Release v1.14.6 (2018-06-13)
===
### Service Client Updates
* `service/servicecatalog`: Updates service API
* Introduced new length limitations for few of the product fields.
* `service/ssm`: Updates service API and documentation
* Added support for new parameter, CloudWatchOutputConfig, for SendCommand API. Users can now have RunCommand output sent to CloudWatchLogs.
Release v1.14.5 (2018-06-12)
===
### Service Client Updates
* `service/devicefarm`: Updates service API and documentation
* Adding VPCEndpoint support for Remote access. Allows customers to be able to access their private endpoints/services running in their VPC during remote access.
* `service/ecs`: Updates service API and documentation
* Introduces daemon scheduling capability to deploy one task per instance on selected instances in a cluster. Adds a "force" flag to the DeleteService API to delete a service without requiring to scale down the number of tasks to zero.
### SDK Enhancements
* `service/rds/rdsutils`: Clean up the rdsutils package and adds a new builder to construct connection strings ([#1985](https://github.com/aws/aws-sdk-go/pull/1985))
* Rewords documentation to be more useful and provides links to prior setup needed to support authentication tokens. Introduces a builder that allows for building connection strings
### SDK Bugs
* `aws/signer/v4`: Fix X-Amz-Content-Sha256 being in to query for presign ([#1976](https://github.com/aws/aws-sdk-go/pull/1976))
* Fixes the bug which would allow the X-Amz-Content-Sha256 header to be promoted to the query string when presigning a S3 request. This bug also was preventing users from setting their own sha256 value for a presigned URL. Presigned requests generated with the custom sha256 would of always failed with invalid signature.
* Fixes [#1974](https://github.com/aws/aws-sdk-go/pull/1974)
Release v1.14.4 (2018-06-11)
===
### Service Client Updates
* `service/clouddirectory`: Updates service API and documentation
* Amazon Cloud Directory now supports optional attributes on Typed Links, giving users the ability to associate and manage data on Typed Links.
* `service/rds`: Updates service documentation
* Changed lists of valid EngineVersion values to links to the RDS User Guide.
* `service/storagegateway`: Updates service API and documentation
* AWS Storage Gateway now enables you to create cached volumes and tapes with AWS KMS support.
Release v1.14.3 (2018-06-08)
===
### Service Client Updates
* `service/mediatailor`: Updates service API
Release v1.14.2 (2018-06-07)
===
### Service Client Updates
* `service/medialive`: Updates service API, documentation, and paginators
* AWS Elemental MediaLive now makes channel log information available through Amazon CloudWatch Logs. You can set up each MediaLive channel with a logging level; when the channel is run, logs will automatically be published to your account on Amazon CloudWatch Logs
Release v1.14.1 (2018-06-05)
===
### Service Client Updates
* `service/ce`: Updates service API and documentation
* `service/polly`: Updates service API and documentation
* Amazon Polly adds new French voice - "Lea"
* `service/rds`: Updates service API and documentation
* This release adds customizable processor features for RDS instances.
* `service/secretsmanager`: Updates service documentation
* Documentation updates for secretsmanager
* `service/shield`: Updates service API and documentation
* DDoS Response Team access management for AWS Shield
Release v1.14.0 (2018-06-04)
===
### Service Client Updates
* `service/AWSMigrationHub`: Updates service documentation
* `service/appstream`: Updates service API and documentation
* Amazon AppStream 2.0 adds support for Google Drive for G Suite. With this feature, customers will be able to connect their G Suite accounts with AppStream 2.0 and enable Google Drive access for an AppStream 2.0 stack. Users of the stack can then link their Google Drive using their G Suite login credentials and use their existing files stored in Drive with their AppStream 2.0 applications. File changes will be synced automatically to Google cloud.
* `service/ec2`: Updates service API and documentation
* You are now able to use instance storage (up to 3600 GB of NVMe based SSD) on M5 instances, the next generation of EC2's General Purpose instances in us-east-1, us-west-2, us-east-2, eu-west-1 and ca-central-1. M5 instances offer up to 96 vCPUs, 384 GiB of DDR4 instance memory, 25 Gbps in Network bandwidth and improved EBS and Networking bandwidth on smaller instance sizes and provide a balance of compute, memory and network resources for many applications.
* `service/eks`: Adds new service
* `service/mediaconvert`: Updates service API and documentation
* This release adds the support for Common Media Application Format (CMAF) fragmented outputs, RF64 WAV audio output format, and HEV1 or HEVC1 MP4 packaging types when using HEVC in DASH or CMAF outputs.
* `service/sagemaker`: Updates service API, documentation, and paginators
* Amazon SageMaker has added the ability to run hyperparameter tuning jobs. A hyperparameter tuning job will create and evaluate multiple training jobs while tuning algorithm hyperparameters, to optimize a customer specified objective metric.
### SDK Features
* Add support for EventStream based APIs (S3 SelectObjectContent) ([#1941](https://github.com/aws/aws-sdk-go/pull/1941))
* Adds support for EventStream asynchronous APIs such as S3 SelectObjectContents API. This API allows your application to receiving multiple events asynchronously from the API response. Your application recieves these events from a channel on the API response.
* See PR [#1941](https://github.com/aws/aws-sdk-go/pull/1941) for example.
* Fixes [#1895](https://github.com/aws/aws-sdk-go/issues/1895)
Release v1.13.60 (2018-06-01)
===
### Service Client Updates
* `service/ds`: Updates service API and documentation
* Added ResetUserPassword API. Customers can now reset their users' passwords without providing the old passwords in Simple AD and Microsoft AD.
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/iot`: Updates service API and documentation
* We are releasing force CancelJob and CancelJobExecution functionalities to customers.
* `service/mediatailor`: Adds new service
* `service/redshift`: Updates service documentation
* Documentation updates for redshift
* `service/sns`: Updates service API, documentation, and paginators
* The SNS Subscribe API has been updated with two new optional parameters: Attributes and ReturnSubscriptionArn. Attributes is a map of subscription attributes which can be one or more of: FilterPolicy, DeliveryPolicy, and RawMessageDelivery. ReturnSubscriptionArn is a boolean parameter that overrides the default behavior of returning "pending confirmation" for subscriptions that require confirmation instead of returning the subscription ARN.
### SDK Bugs
* `private/mode/api`: Fix error code constants being generated incorrectly.([#1958](https://github.com/aws/aws-sdk-go/issues/1958))
* Fixes the SDK's code generation to not modify the error code text value when generating error code constants. This prevents generating error code values which are invalid and will never be sent by the service. This change does not change the error code constant variable name generated by the SDK, only the value of the error code.
* Fixes [#1856](https://github.com/aws/aws-sdk-go/issues/1856)
Release v1.13.59 (2018-05-31)
===
* `aws/endpoints`: Updated Regions and Endpoints metadata.
Release v1.13.58 (2018-05-30)
===
### Service Client Updates
* `service/elasticloadbalancingv2`: Updates service API and documentation
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/neptune`: Adds new service
* Amazon Neptune is a fast, reliable graph database service that makes it easy to build and run applications that work with highly connected datasets. Neptune supports popular graph models Property Graph and W3C's Resource Description Frame (RDF), and their respective query languages Apache TinkerPop Gremlin 3.3.2 and SPARQL 1.1.
Release v1.13.57 (2018-05-29)
===
### Service Client Updates
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/pi`: Adds new service
Release v1.13.56 (2018-05-25)
===
### Service Client Updates
* `service/appstream`: Updates service API and documentation
* This API update enables customers to control whether users can transfer data between their local devices and their streaming applications through file uploads and downloads, clipboard operations, or printing to local devices
* `service/config`: Updates service API and documentation
* `service/glue`: Updates service API and documentation
* AWS Glue now sends a delay notification to Amazon CloudWatch Events when an ETL job runs longer than the specified delay notification threshold.
* `service/iot`: Updates service API
* We are exposing DELETION_IN_PROGRESS as a new job status in regards to the release of DeleteJob API.
Release v1.13.55 (2018-05-24)
===
### Service Client Updates
* `service/codebuild`: Updates service API
* AWS CodeBuild Adds Support for Windows Builds.
* `service/elasticloadbalancingv2`: Updates service documentation
* `service/rds`: Updates service API and documentation
* This release adds CloudWatch Logs integration capabilities to RDS Aurora MySQL clusters
* `service/secretsmanager`: Updates service documentation
* Documentation updates for secretsmanager
Release v1.13.54 (2018-05-22)
===
### Service Client Updates
* `service/ecs`: Updates service API and documentation
* Amazon Elastic Container Service (ECS) adds service discovery for services that use host or bridged network mode. ECS can now also register instance IPs for active tasks using bridged and host networking with Route 53, making them available via DNS.
* `service/inspector`: Updates service API
* We are launching the ability to target all EC2 instances. With this launch, resourceGroupArn is now optional for CreateAssessmentTarget and UpdateAssessmentTarget. If resourceGroupArn is not specified, all EC2 instances in the account in the AWS region are included in the assessment target.
Release v1.13.53 (2018-05-21)
===
### Service Client Updates
* `service/cloudformation`: Updates service API and documentation
* 1) Filtered Update for StackSet based on Accounts and Regions: This feature will allow flexibility for the customers to roll out updates on a StackSet based on specific Accounts and Regions. 2) Support for customized ExecutionRoleName: This feature will allow customers to attach ExecutionRoleName to the StackSet thus ensuring more security and controlling the behavior of any AWS resources in the target accounts.
Release v1.13.52 (2018-05-18)
===
### Service Client Updates
* `service/email`: Updates service documentation
* Fixed a broken link in the documentation for S3Action.
* `service/iot`: Updates service API and documentation
* We are releasing DeleteJob and DeleteJobExecution APIs to allow customer to delete resources created using AWS IoT Jobs.
Release v1.13.51 (2018-05-17)
===
### Service Client Updates
* `service/codedeploy`: Updates service documentation
* Documentation updates for codedeploy
* `service/cognito-idp`: Updates service API and documentation
* `service/ec2`: Updates service API and documentation
* You are now able to use instance storage (up to 1800 GB of NVMe based SSD) on C5 instances, the next generation of EC2's compute optimized instances in us-east-1, us-west-2, us-east-2, eu-west-1 and ca-central-1. C5 instances offer up to 72 vCPUs, 144 GiB of DDR4 instance memory, 25 Gbps in Network bandwidth and improved EBS and Networking bandwidth on smaller instance sizes to deliver improved performance for compute-intensive workloads.You can now run bare metal workloads on EC2 with i3.metal instances. As a new instance size belonging to the I3 instance family, i3.metal instances have the same characteristics as other instances in the family, including NVMe SSD-backed instance storage optimized for low latency, very high random I/O performance, and high sequential read throughput. I3.metal instances are powered by 2.3 GHz Intel Xeon processors, offering 36 hyper-threaded cores (72 logical processors), 512 GiB of memory, and 15.2 TB of NVMe SSD-backed instance storage. These instances deliver high networking throughput and lower latency with up to 25 Gbps of aggregate network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking.
Release v1.13.50 (2018-05-16)
===
### Service Client Updates
* `service/secretsmanager`: Updates service documentation
* Documentation updates for secretsmanager
* `service/servicecatalog`: Updates service API and documentation
* Users can now pass a new option to ListAcceptedPortfolioShares called portfolio-share-type with a value of AWS_SERVICECATALOG in order to access Getting Started Portfolios that contain selected products representing common customer use cases.
Release v1.13.49 (2018-05-15)
===
### Service Client Updates
* `service/config`: Updates service API
Release v1.13.48 (2018-05-14)
===
### Service Client Updates
* `service/codebuild`: Updates service API and documentation
* Adding support for more override fields for StartBuild API, add support for idempotency token field for StartBuild API in AWS CodeBuild.
* `service/iot1click-devices`: Adds new service
* `service/iot1click-projects`: Adds new service
* `service/organizations`: Updates service documentation
* Documentation updates for organizations
Release v1.13.47 (2018-05-10)
===
### Service Client Updates
* `service/firehose`: Updates service API and documentation
* With this release, Amazon Kinesis Data Firehose can convert the format of your input data from JSON to Apache Parquet or Apache ORC before storing the data in Amazon S3. Parquet and ORC are columnar data formats that save space and enable faster queries compared to row-oriented formats like JSON.
Release v1.13.46 (2018-05-10)
===
### Service Client Updates
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/gamelift`: Updates service API and documentation
* AutoScaling Target Tracking scaling simplification along with StartFleetActions and StopFleetActions APIs to suspend and resume automatic scaling at will.
Release v1.13.45 (2018-05-10)
===
### Service Client Updates
* `service/budgets`: Updates service API and documentation
* Updating the regex for the NumericValue fields.
* `service/ec2`: Updates service API and documentation
* Enable support for latest flag with Get Console Output
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/rds`: Updates service API and documentation
* Changes to support the Aurora MySQL Backtrack feature.
Release v1.13.44 (2018-05-08)
===
### Service Client Updates
* `service/ec2`: Updates service API and documentation
* Enable support for specifying CPU options during instance launch.
* `service/rds`: Updates service documentation
* Correction to the documentation about copying unencrypted snapshots.
Release v1.13.43 (2018-05-07)
===
### Service Client Updates
* `service/alexaforbusiness`: Updates service API
* `service/budgets`: Updates service API and documentation
* "With this release, customers can use AWS Budgets to monitor how much of their Amazon EC2, Amazon RDS, Amazon Redshift, and Amazon ElastiCache instance usage is covered by reservations, and receive alerts when their coverage falls below the threshold they define."
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/es`: Updates service API, documentation, and paginators
* This change brings support for Reserved Instances to AWS Elasticsearch.
* `service/s3`: Updates service API and documentation
* Added BytesReturned details for Progress and Stats Events for Amazon S3 Select .
Release v1.13.42 (2018-05-04)
===
@ -266,7 +541,7 @@ Release v1.13.19 (2018-03-22)
### SDK Bugs
* `aws/endpoints`: Use service metadata for fallback signing name ([#1854](https://github.com/aws/aws-sdk-go/pull/1854))
* Updates the SDK's endpoint resolution to fallback deriving the service's signing name from the service's modeled metadata in addition the the endpoints modeled data.
* Updates the SDK's endpoint resolution to fallback deriving the service's signing name from the service's modeled metadata in addition the endpoints modeled data.
* Fixes [#1850](https://github.com/aws/aws-sdk-go/issues/1850)
Release v1.13.18 (2018-03-21)
===
@ -1003,7 +1278,7 @@ Release v1.12.31 (2017-11-20)
* DescribeGroups API and miscellaneous enhancements
### SDK Bugs
* `aws/client`: Retry delays for throttled exception were not limited to 5 mintues [#1654](https://github.com/aws/aws-sdk-go/pull/1654)
* `aws/client`: Retry delays for throttled exception were not limited to 5 minutes [#1654](https://github.com/aws/aws-sdk-go/pull/1654)
* Fixes [#1653](https://github.com/aws/aws-sdk-go/issues/1653)
Release v1.12.30 (2017-11-17)
===
@ -1135,7 +1410,7 @@ Release v1.12.21 (2017-11-02)
* `aws/endpoints`: Updated Regions and Endpoints metadata.
### SDK Bugs
* `aws/request`: Fix bug in request presign creating invalide URL ([#1624](https://github.com/aws/aws-sdk-go/pull/1624))
* `aws/request`: Fix bug in request presign creating invalid URL ([#1624](https://github.com/aws/aws-sdk-go/pull/1624))
* Fixes a bug the Request Presign and PresignRequest methods that would allow a invalid expire duration as input. A expire time of 0 would be interpreted by the SDK to generate a normal request signature, not a presigned URL. This caused the returned URL unusable.
* Fixes [#1617](https://github.com/aws/aws-sdk-go/issues/1617)
Release v1.12.20 (2017-11-01)

View file

@ -89,7 +89,7 @@ go test -tags codegen ./private/...
See the `Makefile` for additional testing tags that can be used in testing.
To test on multiple platform the SDK includes several DockerFiles under the
`awstesting/sandbox` folder, and associated make recipes to to execute
`awstesting/sandbox` folder, and associated make recipes to execute
unit testing within environments configured for specific Go versions.
```

View file

@ -13,6 +13,7 @@ SDK_ONLY_PKGS=$(shell go list ./... | grep -v "/vendor/")
SDK_UNIT_TEST_ONLY_PKGS=$(shell go list -tags ${UNIT_TEST_TAGS} ./... | grep -v "/vendor/")
SDK_GO_1_4=$(shell go version | grep "go1.4")
SDK_GO_1_5=$(shell go version | grep "go1.5")
SDK_GO_1_6=$(shell go version | grep "go1.6")
SDK_GO_VERSION=$(shell go version | awk '''{print $$3}''' | tr -d '''\n''')
all: get-deps generate unit
@ -35,7 +36,7 @@ help:
@echo " get-deps-tests to get the SDK's test dependencies"
@echo " get-deps-verify to get the SDK's verification dependencies"
generate: gen-test gen-endpoints gen-services
generate: cleanup-models gen-test gen-endpoints gen-services
gen-test: gen-protocol-test
@ -48,6 +49,10 @@ gen-protocol-test:
gen-endpoints:
go generate ./models/endpoints/
cleanup-models:
@echo "Cleaning up stale model versions"
@./cleanup_models.sh
build:
@echo "go build SDK and vendor packages"
@go build ${SDK_ONLY_PKGS}
@ -60,6 +65,18 @@ unit-with-race-cover: get-deps-tests build verify
@echo "go test SDK and vendor packages"
@go test -tags ${UNIT_TEST_TAGS} -race -cpu=1,2,4 $(SDK_UNIT_TEST_ONLY_PKGS)
ci-test: ci-test-generate unit-with-race-cover ci-test-generate-validate
ci-test-generate: get-deps
@echo "CI test generated code"
@if [ \( -z "${SDK_GO_1_6}" \) -a \( -z "${SDK_GO_1_5}" \) ]; then make generate; else echo "skipping generate"; fi
ci-test-generate-validate:
@echo "CI test validate no generated code changes"
@gitstatus=`if [ \( -z "${SDK_GO_1_6}" \) -a \( -z "${SDK_GO_1_5}" \) ]; then git status --porcelain; else echo "skipping validation"; fi`; \
echo "$$gitstatus"; \
if [ "$$gitstatus" != "" ] && [ "$$gitstatus" != "skipping validation" ]; then git diff; exit 1; fi
integration: get-deps-tests integ-custom smoke-tests performance
integ-custom:
@ -118,6 +135,13 @@ sandbox-go19: sandbox-build-go19
sandbox-test-go19: sandbox-build-go19
docker run -t aws-sdk-go-1.9
sandbox-build-go110:
docker build -f ./awstesting/sandbox/Dockerfile.test.go1.8 -t "aws-sdk-go-1.10" .
sandbox-go110: sandbox-build-go110
docker run -i -t aws-sdk-go-1.10 bash
sandbox-test-go110: sandbox-build-go110
docker run -t aws-sdk-go-1.10
sandbox-build-gotip:
@echo "Run make update-aws-golang-tip, if this test fails because missing aws-golang:tip container"
docker build -f ./awstesting/sandbox/Dockerfile.test.gotip -t "aws-sdk-go-tip" .

View file

@ -334,7 +334,7 @@ take a callback function that will be called for each page of the API's response
```
Waiter helper methods provide the functionality to wait for an AWS resource
state. These methods abstract the logic needed to to check the state of an
state. These methods abstract the logic needed to check the state of an
AWS resource, and wait until that resource is in a desired state. The waiter
will block until the resource is in the state that is desired, an error occurs,
or the waiter times out. If a resource times out the error code returned will

View file

@ -3,6 +3,7 @@ package metadata
// ClientInfo wraps immutable data from the client.Client structure.
type ClientInfo struct {
ServiceName string
ServiceID string
APIVersion string
Endpoint string
SigningName string

View file

@ -178,7 +178,8 @@ func (e *Expiry) IsExpired() bool {
type Credentials struct {
creds Value
forceRefresh bool
m sync.Mutex
m sync.RWMutex
provider Provider
}
@ -201,6 +202,17 @@ func NewCredentials(provider Provider) *Credentials {
// If Credentials.Expire() was called the credentials Value will be force
// expired, and the next call to Get() will cause them to be refreshed.
func (c *Credentials) Get() (Value, error) {
// Check the cached credentials first with just the read lock.
c.m.RLock()
if !c.isExpired() {
creds := c.creds
c.m.RUnlock()
return creds, nil
}
c.m.RUnlock()
// Credentials are expired need to retrieve the credentials taking the full
// lock.
c.m.Lock()
defer c.m.Unlock()
@ -234,8 +246,8 @@ func (c *Credentials) Expire() {
// If the Credentials were forced to be expired with Expire() this will
// reflect that override.
func (c *Credentials) IsExpired() bool {
c.m.Lock()
defer c.m.Unlock()
c.m.RLock()
defer c.m.RUnlock()
return c.isExpired()
}

View file

@ -0,0 +1,90 @@
// +build go1.9
package credentials
import (
"fmt"
"strconv"
"sync"
"testing"
"time"
)
func BenchmarkCredentials_Get(b *testing.B) {
stub := &stubProvider{}
cases := []int{1, 10, 100, 500, 1000, 10000}
for _, c := range cases {
b.Run(strconv.Itoa(c), func(b *testing.B) {
creds := NewCredentials(stub)
var wg sync.WaitGroup
wg.Add(c)
for i := 0; i < c; i++ {
go func() {
for j := 0; j < b.N; j++ {
v, err := creds.Get()
if err != nil {
b.Fatalf("expect no error %v, %v", v, err)
}
}
wg.Done()
}()
}
b.ResetTimer()
wg.Wait()
})
}
}
func BenchmarkCredentials_Get_Expire(b *testing.B) {
p := &blockProvider{}
expRates := []int{10000, 1000, 100}
cases := []int{1, 10, 100, 500, 1000, 10000}
for _, expRate := range expRates {
for _, c := range cases {
b.Run(fmt.Sprintf("%d-%d", expRate, c), func(b *testing.B) {
creds := NewCredentials(p)
var wg sync.WaitGroup
wg.Add(c)
for i := 0; i < c; i++ {
go func(id int) {
for j := 0; j < b.N; j++ {
v, err := creds.Get()
if err != nil {
b.Fatalf("expect no error %v, %v", v, err)
}
// periodically expire creds to cause rwlock
if id == 0 && j%expRate == 0 {
creds.Expire()
}
}
wg.Done()
}(i)
}
b.ResetTimer()
wg.Wait()
})
}
}
}
type blockProvider struct {
creds Value
expired bool
err error
}
func (s *blockProvider) Retrieve() (Value, error) {
s.expired = false
s.creds.ProviderName = "blockProvider"
time.Sleep(time.Millisecond)
return s.creds, s.err
}
func (s *blockProvider) IsExpired() bool {
return s.expired
}

46
vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go generated vendored Normal file
View file

@ -0,0 +1,46 @@
// Package csm provides Client Side Monitoring (CSM) which enables sending metrics
// via UDP connection. Using the Start function will enable the reporting of
// metrics on a given port. If Start is called, with different parameters, again,
// a panic will occur.
//
// Pause can be called to pause any metrics publishing on a given port. Sessions
// that have had their handlers modified via InjectHandlers may still be used.
// However, the handlers will act as a no-op meaning no metrics will be published.
//
// Example:
// r, err := csm.Start("clientID", ":31000")
// if err != nil {
// panic(fmt.Errorf("failed starting CSM: %v", err))
// }
//
// sess, err := session.NewSession(&aws.Config{})
// if err != nil {
// panic(fmt.Errorf("failed loading session: %v", err))
// }
//
// r.InjectHandlers(&sess.Handlers)
//
// client := s3.New(sess)
// resp, err := client.GetObject(&s3.GetObjectInput{
// Bucket: aws.String("bucket"),
// Key: aws.String("key"),
// })
//
// // Will pause monitoring
// r.Pause()
// resp, err = client.GetObject(&s3.GetObjectInput{
// Bucket: aws.String("bucket"),
// Key: aws.String("key"),
// })
//
// // Resume monitoring
// r.Continue()
//
// Start returns a Reporter that is used to enable or disable monitoring. If
// access to the Reporter is required later, calling Get will return the Reporter
// singleton.
//
// Example:
// r := csm.Get()
// r.Continue()
package csm

67
vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go generated vendored Normal file
View file

@ -0,0 +1,67 @@
package csm
import (
"fmt"
"sync"
)
var (
lock sync.Mutex
)
// Client side metric handler names
const (
APICallMetricHandlerName = "awscsm.SendAPICallMetric"
APICallAttemptMetricHandlerName = "awscsm.SendAPICallAttemptMetric"
)
// Start will start the a long running go routine to capture
// client side metrics. Calling start multiple time will only
// start the metric listener once and will panic if a different
// client ID or port is passed in.
//
// Example:
// r, err := csm.Start("clientID", "127.0.0.1:8094")
// if err != nil {
// panic(fmt.Errorf("expected no error, but received %v", err))
// }
// sess := session.NewSession()
// r.InjectHandlers(sess.Handlers)
//
// svc := s3.New(sess)
// out, err := svc.GetObject(&s3.GetObjectInput{
// Bucket: aws.String("bucket"),
// Key: aws.String("key"),
// })
func Start(clientID string, url string) (*Reporter, error) {
lock.Lock()
defer lock.Unlock()
if sender == nil {
sender = newReporter(clientID, url)
} else {
if sender.clientID != clientID {
panic(fmt.Errorf("inconsistent client IDs. %q was expected, but received %q", sender.clientID, clientID))
}
if sender.url != url {
panic(fmt.Errorf("inconsistent URLs. %q was expected, but received %q", sender.url, url))
}
}
if err := connect(url); err != nil {
sender = nil
return nil, err
}
return sender, nil
}
// Get will return a reporter if one exists, if one does not exist, nil will
// be returned.
func Get() *Reporter {
lock.Lock()
defer lock.Unlock()
return sender
}

View file

@ -0,0 +1,74 @@
package csm
import (
"encoding/json"
"fmt"
"net"
"testing"
)
func startUDPServer(done chan struct{}, fn func([]byte)) (string, error) {
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
if err != nil {
return "", err
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
return "", err
}
buf := make([]byte, 1024)
go func() {
defer conn.Close()
for {
select {
case <-done:
return
default:
}
n, _, err := conn.ReadFromUDP(buf)
fn(buf[:n])
if err != nil {
panic(err)
}
}
}()
return conn.LocalAddr().String(), nil
}
func TestDifferentParams(t *testing.T) {
defer func() {
if r := recover(); r == nil {
t.Errorf("expected panic with different parameters")
}
}()
Start("clientID2", ":0")
}
var MetricsCh = make(chan map[string]interface{}, 1)
var Done = make(chan struct{})
func init() {
url, err := startUDPServer(Done, func(b []byte) {
m := map[string]interface{}{}
if err := json.Unmarshal(b, &m); err != nil {
panic(fmt.Sprintf("expected no error, but received %v", err))
}
MetricsCh <- m
})
if err != nil {
panic(err)
}
_, err = Start("clientID", url)
if err != nil {
panic(err)
}
}

View file

@ -0,0 +1,40 @@
package csm_test
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/csm"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
func ExampleStart() {
r, err := csm.Start("clientID", ":31000")
if err != nil {
panic(fmt.Errorf("failed starting CSM: %v", err))
}
sess, err := session.NewSession(&aws.Config{})
if err != nil {
panic(fmt.Errorf("failed loading session: %v", err))
}
r.InjectHandlers(&sess.Handlers)
client := s3.New(sess)
client.GetObject(&s3.GetObjectInput{
Bucket: aws.String("bucket"),
Key: aws.String("key"),
})
// Pauses monitoring
r.Pause()
client.GetObject(&s3.GetObjectInput{
Bucket: aws.String("bucket"),
Key: aws.String("key"),
})
// Resume monitoring
r.Continue()
}

51
vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go generated vendored Normal file
View file

@ -0,0 +1,51 @@
package csm
import (
"strconv"
"time"
)
type metricTime time.Time
func (t metricTime) MarshalJSON() ([]byte, error) {
ns := time.Duration(time.Time(t).UnixNano())
return []byte(strconv.FormatInt(int64(ns/time.Millisecond), 10)), nil
}
type metric struct {
ClientID *string `json:"ClientId,omitempty"`
API *string `json:"Api,omitempty"`
Service *string `json:"Service,omitempty"`
Timestamp *metricTime `json:"Timestamp,omitempty"`
Type *string `json:"Type,omitempty"`
Version *int `json:"Version,omitempty"`
AttemptCount *int `json:"AttemptCount,omitempty"`
Latency *int `json:"Latency,omitempty"`
Fqdn *string `json:"Fqdn,omitempty"`
UserAgent *string `json:"UserAgent,omitempty"`
AttemptLatency *int `json:"AttemptLatency,omitempty"`
SessionToken *string `json:"SessionToken,omitempty"`
Region *string `json:"Region,omitempty"`
AccessKey *string `json:"AccessKey,omitempty"`
HTTPStatusCode *int `json:"HttpStatusCode,omitempty"`
XAmzID2 *string `json:"XAmzId2,omitempty"`
XAmzRequestID *string `json:"XAmznRequestId,omitempty"`
AWSException *string `json:"AwsException,omitempty"`
AWSExceptionMessage *string `json:"AwsExceptionMessage,omitempty"`
SDKException *string `json:"SdkException,omitempty"`
SDKExceptionMessage *string `json:"SdkExceptionMessage,omitempty"`
DestinationIP *string `json:"DestinationIp,omitempty"`
ConnectionReused *int `json:"ConnectionReused,omitempty"`
AcquireConnectionLatency *int `json:"AcquireConnectionLatency,omitempty"`
ConnectLatency *int `json:"ConnectLatency,omitempty"`
RequestLatency *int `json:"RequestLatency,omitempty"`
DNSLatency *int `json:"DnsLatency,omitempty"`
TCPLatency *int `json:"TcpLatency,omitempty"`
SSLLatency *int `json:"SslLatency,omitempty"`
}

54
vendor/github.com/aws/aws-sdk-go/aws/csm/metricChan.go generated vendored Normal file
View file

@ -0,0 +1,54 @@
package csm
import (
"sync/atomic"
)
const (
runningEnum = iota
pausedEnum
)
var (
// MetricsChannelSize of metrics to hold in the channel
MetricsChannelSize = 100
)
type metricChan struct {
ch chan metric
paused int64
}
func newMetricChan(size int) metricChan {
return metricChan{
ch: make(chan metric, size),
}
}
func (ch *metricChan) Pause() {
atomic.StoreInt64(&ch.paused, pausedEnum)
}
func (ch *metricChan) Continue() {
atomic.StoreInt64(&ch.paused, runningEnum)
}
func (ch *metricChan) IsPaused() bool {
v := atomic.LoadInt64(&ch.paused)
return v == pausedEnum
}
// Push will push metrics to the metric channel if the channel
// is not paused
func (ch *metricChan) Push(m metric) bool {
if ch.IsPaused() {
return false
}
select {
case ch.ch <- m:
return true
default:
return false
}
}

View file

@ -0,0 +1,72 @@
package csm
import (
"testing"
)
func TestMetricChanPush(t *testing.T) {
ch := newMetricChan(5)
defer close(ch.ch)
pushed := ch.Push(metric{})
if !pushed {
t.Errorf("expected metrics to be pushed")
}
if e, a := 1, len(ch.ch); e != a {
t.Errorf("expected %d, but received %d", e, a)
}
}
func TestMetricChanPauseContinue(t *testing.T) {
ch := newMetricChan(5)
defer close(ch.ch)
ch.Pause()
if !ch.IsPaused() {
t.Errorf("expected to be paused, but did not pause properly")
}
ch.Continue()
if ch.IsPaused() {
t.Errorf("expected to be not paused, but did not continue properly")
}
pushed := ch.Push(metric{})
if !pushed {
t.Errorf("expected metrics to be pushed")
}
if e, a := 1, len(ch.ch); e != a {
t.Errorf("expected %d, but received %d", e, a)
}
}
func TestMetricChanPushWhenPaused(t *testing.T) {
ch := newMetricChan(5)
defer close(ch.ch)
ch.Pause()
pushed := ch.Push(metric{})
if pushed {
t.Errorf("expected metrics to not be pushed")
}
if e, a := 0, len(ch.ch); e != a {
t.Errorf("expected %d, but received %d", e, a)
}
}
func TestMetricChanNonBlocking(t *testing.T) {
ch := newMetricChan(0)
defer close(ch.ch)
pushed := ch.Push(metric{})
if pushed {
t.Errorf("expected metrics to be not pushed")
}
if e, a := 0, len(ch.ch); e != a {
t.Errorf("expected %d, but received %d", e, a)
}
}

230
vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go generated vendored Normal file
View file

@ -0,0 +1,230 @@
package csm
import (
"encoding/json"
"net"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request"
)
const (
// DefaultPort is used when no port is specified
DefaultPort = "31000"
)
// Reporter will gather metrics of API requests made and
// send those metrics to the CSM endpoint.
type Reporter struct {
clientID string
url string
conn net.Conn
metricsCh metricChan
done chan struct{}
}
var (
sender *Reporter
)
func connect(url string) error {
const network = "udp"
if err := sender.connect(network, url); err != nil {
return err
}
if sender.done == nil {
sender.done = make(chan struct{})
go sender.start()
}
return nil
}
func newReporter(clientID, url string) *Reporter {
return &Reporter{
clientID: clientID,
url: url,
metricsCh: newMetricChan(MetricsChannelSize),
}
}
func (rep *Reporter) sendAPICallAttemptMetric(r *request.Request) {
if rep == nil {
return
}
now := time.Now()
creds, _ := r.Config.Credentials.Get()
m := metric{
ClientID: aws.String(rep.clientID),
API: aws.String(r.Operation.Name),
Service: aws.String(r.ClientInfo.ServiceID),
Timestamp: (*metricTime)(&now),
UserAgent: aws.String(r.HTTPRequest.Header.Get("User-Agent")),
Region: r.Config.Region,
Type: aws.String("ApiCallAttempt"),
Version: aws.Int(1),
XAmzRequestID: aws.String(r.RequestID),
AttemptCount: aws.Int(r.RetryCount + 1),
AttemptLatency: aws.Int(int(now.Sub(r.AttemptTime).Nanoseconds() / int64(time.Millisecond))),
AccessKey: aws.String(creds.AccessKeyID),
}
if r.HTTPResponse != nil {
m.HTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode)
}
if r.Error != nil {
if awserr, ok := r.Error.(awserr.Error); ok {
setError(&m, awserr)
}
}
rep.metricsCh.Push(m)
}
func setError(m *metric, err awserr.Error) {
msg := err.Message()
code := err.Code()
switch code {
case "RequestError",
"SerializationError",
request.CanceledErrorCode:
m.SDKException = &code
m.SDKExceptionMessage = &msg
default:
m.AWSException = &code
m.AWSExceptionMessage = &msg
}
}
func (rep *Reporter) sendAPICallMetric(r *request.Request) {
if rep == nil {
return
}
now := time.Now()
m := metric{
ClientID: aws.String(rep.clientID),
API: aws.String(r.Operation.Name),
Service: aws.String(r.ClientInfo.ServiceID),
Timestamp: (*metricTime)(&now),
Type: aws.String("ApiCall"),
AttemptCount: aws.Int(r.RetryCount + 1),
Latency: aws.Int(int(time.Now().Sub(r.Time) / time.Millisecond)),
XAmzRequestID: aws.String(r.RequestID),
}
// TODO: Probably want to figure something out for logging dropped
// metrics
rep.metricsCh.Push(m)
}
func (rep *Reporter) connect(network, url string) error {
if rep.conn != nil {
rep.conn.Close()
}
conn, err := net.Dial(network, url)
if err != nil {
return awserr.New("UDPError", "Could not connect", err)
}
rep.conn = conn
return nil
}
func (rep *Reporter) close() {
if rep.done != nil {
close(rep.done)
}
rep.metricsCh.Pause()
}
func (rep *Reporter) start() {
defer func() {
rep.metricsCh.Pause()
}()
for {
select {
case <-rep.done:
rep.done = nil
return
case m := <-rep.metricsCh.ch:
// TODO: What to do with this error? Probably should just log
b, err := json.Marshal(m)
if err != nil {
continue
}
rep.conn.Write(b)
}
}
}
// Pause will pause the metric channel preventing any new metrics from
// being added.
func (rep *Reporter) Pause() {
lock.Lock()
defer lock.Unlock()
if rep == nil {
return
}
rep.close()
}
// Continue will reopen the metric channel and allow for monitoring
// to be resumed.
func (rep *Reporter) Continue() {
lock.Lock()
defer lock.Unlock()
if rep == nil {
return
}
if !rep.metricsCh.IsPaused() {
return
}
rep.metricsCh.Continue()
}
// InjectHandlers will will enable client side metrics and inject the proper
// handlers to handle how metrics are sent.
//
// Example:
// // Start must be called in order to inject the correct handlers
// r, err := csm.Start("clientID", "127.0.0.1:8094")
// if err != nil {
// panic(fmt.Errorf("expected no error, but received %v", err))
// }
//
// sess := session.NewSession()
// r.InjectHandlers(&sess.Handlers)
//
// // create a new service client with our client side metric session
// svc := s3.New(sess)
func (rep *Reporter) InjectHandlers(handlers *request.Handlers) {
if rep == nil {
return
}
apiCallHandler := request.NamedHandler{Name: APICallMetricHandlerName, Fn: rep.sendAPICallMetric}
handlers.Complete.PushFrontNamed(apiCallHandler)
apiCallAttemptHandler := request.NamedHandler{Name: APICallAttemptMetricHandlerName, Fn: rep.sendAPICallAttemptMetric}
handlers.AfterRetry.PushFrontNamed(apiCallAttemptHandler)
}

View file

@ -0,0 +1,233 @@
package csm_test
import (
"fmt"
"net"
"net/http"
"net/http/httptest"
"testing"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/csm"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws/signer/v4"
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
)
func startUDPServer(done chan struct{}, fn func([]byte)) (string, error) {
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
if err != nil {
return "", err
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
return "", err
}
buf := make([]byte, 1024)
i := 0
go func() {
defer conn.Close()
for {
i++
select {
case <-done:
return
default:
}
n, _, err := conn.ReadFromUDP(buf)
fn(buf[:n])
if err != nil {
panic(err)
}
}
}()
return conn.LocalAddr().String(), nil
}
func TestReportingMetrics(t *testing.T) {
reporter := csm.Get()
if reporter == nil {
t.Errorf("expected non-nil reporter")
}
sess := session.New()
sess.Handlers.Clear()
reporter.InjectHandlers(&sess.Handlers)
md := metadata.ClientInfo{}
op := &request.Operation{}
r := request.New(*sess.Config, md, sess.Handlers, client.DefaultRetryer{NumMaxRetries: 0}, op, nil, nil)
sess.Handlers.Complete.Run(r)
m := <-csm.MetricsCh
for k, v := range m {
switch k {
case "Timestamp":
if _, ok := v.(float64); !ok {
t.Errorf("expected a float value, but received %T", v)
}
case "Type":
if e, a := "ApiCall", v.(string); e != a {
t.Errorf("expected %q, but received %q", e, a)
}
}
}
}
type mockService struct {
*client.Client
}
type input struct{}
type output struct{}
func (s *mockService) Request(i input) *request.Request {
op := &request.Operation{
Name: "foo",
HTTPMethod: "POST",
HTTPPath: "/",
}
o := output{}
req := s.NewRequest(op, &i, &o)
return req
}
func BenchmarkWithCSM(b *testing.B) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(fmt.Sprintf("{}")))
}))
cfg := aws.Config{
Endpoint: aws.String(server.URL),
}
sess := session.New(&cfg)
r := csm.Get()
r.InjectHandlers(&sess.Handlers)
c := sess.ClientConfig("id", &cfg)
svc := mockService{
client.New(
*c.Config,
metadata.ClientInfo{
ServiceName: "service",
ServiceID: "id",
SigningName: "signing",
SigningRegion: "region",
Endpoint: server.URL,
APIVersion: "0",
JSONVersion: "1.1",
TargetPrefix: "prefix",
},
c.Handlers,
),
}
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(jsonrpc.UnmarshalErrorHandler)
for i := 0; i < b.N; i++ {
req := svc.Request(input{})
req.Send()
}
}
func BenchmarkWithCSMNoUDPConnection(b *testing.B) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(fmt.Sprintf("{}")))
}))
cfg := aws.Config{
Endpoint: aws.String(server.URL),
}
sess := session.New(&cfg)
r := csm.Get()
r.Pause()
r.InjectHandlers(&sess.Handlers)
defer r.Pause()
c := sess.ClientConfig("id", &cfg)
svc := mockService{
client.New(
*c.Config,
metadata.ClientInfo{
ServiceName: "service",
ServiceID: "id",
SigningName: "signing",
SigningRegion: "region",
Endpoint: server.URL,
APIVersion: "0",
JSONVersion: "1.1",
TargetPrefix: "prefix",
},
c.Handlers,
),
}
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(jsonrpc.UnmarshalErrorHandler)
for i := 0; i < b.N; i++ {
req := svc.Request(input{})
req.Send()
}
}
func BenchmarkWithoutCSM(b *testing.B) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(fmt.Sprintf("{}")))
}))
cfg := aws.Config{
Endpoint: aws.String(server.URL),
}
sess := session.New(&cfg)
c := sess.ClientConfig("id", &cfg)
svc := mockService{
client.New(
*c.Config,
metadata.ClientInfo{
ServiceName: "service",
ServiceID: "id",
SigningName: "signing",
SigningRegion: "region",
Endpoint: server.URL,
APIVersion: "0",
JSONVersion: "1.1",
TargetPrefix: "prefix",
},
c.Handlers,
),
}
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(jsonrpc.UnmarshalErrorHandler)
for i := 0; i < b.N; i++ {
req := svc.Request(input{})
req.Send()
}
}

View file

@ -48,6 +48,7 @@ const (
A4bServiceID = "a4b" // A4b.
AcmServiceID = "acm" // Acm.
AcmPcaServiceID = "acm-pca" // AcmPca.
ApiMediatailorServiceID = "api.mediatailor" // ApiMediatailor.
ApiPricingServiceID = "api.pricing" // ApiPricing.
ApigatewayServiceID = "apigateway" // Apigateway.
ApplicationAutoscalingServiceID = "application-autoscaling" // ApplicationAutoscaling.
@ -123,12 +124,14 @@ const (
MediaconvertServiceID = "mediaconvert" // Mediaconvert.
MedialiveServiceID = "medialive" // Medialive.
MediapackageServiceID = "mediapackage" // Mediapackage.
MediastoreServiceID = "mediastore" // Mediastore.
MeteringMarketplaceServiceID = "metering.marketplace" // MeteringMarketplace.
MghServiceID = "mgh" // Mgh.
MobileanalyticsServiceID = "mobileanalytics" // Mobileanalytics.
ModelsLexServiceID = "models.lex" // ModelsLex.
MonitoringServiceID = "monitoring" // Monitoring.
MturkRequesterServiceID = "mturk-requester" // MturkRequester.
NeptuneServiceID = "neptune" // Neptune.
OpsworksServiceID = "opsworks" // Opsworks.
OpsworksCmServiceID = "opsworks-cm" // OpsworksCm.
OrganizationsServiceID = "organizations" // Organizations.
@ -306,6 +309,16 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
"api.mediatailor": service{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
},
},
"api.pricing": service{
Defaults: endpoint{
CredentialScope: credentialScope{
@ -433,6 +446,7 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
@ -1045,6 +1059,7 @@ var awsPartition = partition{
"elasticfilesystem": service{
Endpoints: endpoints{
"ap-northeast-2": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
@ -1241,11 +1256,13 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
@ -1345,6 +1362,7 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
@ -1437,12 +1455,15 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-south-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
@ -1504,6 +1525,7 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-west-1": endpoint{},
@ -1526,6 +1548,17 @@ var awsPartition = partition{
"us-west-2": endpoint{},
},
},
"mediastore": service{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-west-2": endpoint{},
},
},
"metering.marketplace": service{
Defaults: endpoint{
CredentialScope: credentialScope{
@ -1606,6 +1639,35 @@ var awsPartition = partition{
"us-east-1": endpoint{},
},
},
"neptune": service{
Endpoints: endpoints{
"eu-west-1": endpoint{
Hostname: "rds.eu-west-1.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-west-1",
},
},
"us-east-1": endpoint{
Hostname: "rds.us-east-1.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-east-1",
},
},
"us-east-2": endpoint{
Hostname: "rds.us-east-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-east-2",
},
},
"us-west-2": endpoint{
Hostname: "rds.us-west-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-west-2",
},
},
},
},
"opsworks": service{
Endpoints: endpoints{
@ -1789,10 +1851,11 @@ var awsPartition = partition{
"runtime.sagemaker": service{
Endpoints: endpoints{
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
"ap-northeast-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
},
},
"s3": service{
@ -1857,10 +1920,11 @@ var awsPartition = partition{
"sagemaker": service{
Endpoints: endpoints{
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
"ap-northeast-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
},
},
"sdb": service{
@ -2065,6 +2129,10 @@ var awsPartition = partition{
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"eu-west-3": endpoint{},
"fips-us-east-1": endpoint{},
"fips-us-east-2": endpoint{},
"fips-us-west-1": endpoint{},
"fips-us-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{
SSLCommonName: "queue.{dnsSuffix}",
@ -2098,6 +2166,7 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"ca-central-1": endpoint{},
@ -2106,6 +2175,7 @@ var awsPartition = partition{
"eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@ -2268,6 +2338,7 @@ var awsPartition = partition{
Protocols: []string{"https"},
},
Endpoints: endpoints{
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
@ -2294,6 +2365,7 @@ var awsPartition = partition{
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
"us-west-2": endpoint{},
},
@ -2487,13 +2559,15 @@ var awscnPartition = partition{
"ecr": service{
Endpoints: endpoints{
"cn-north-1": endpoint{},
"cn-north-1": endpoint{},
"cn-northwest-1": endpoint{},
},
},
"ecs": service{
Endpoints: endpoints{
"cn-north-1": endpoint{},
"cn-north-1": endpoint{},
"cn-northwest-1": endpoint{},
},
},
"elasticache": service{

View file

@ -71,6 +71,12 @@ const (
// LogDebugWithRequestErrors states the SDK should log when service requests fail
// to build, send, validate, or unmarshal.
LogDebugWithRequestErrors
// LogDebugWithEventStreamBody states the SDK should log EventStream
// request and response bodys. This should be used to log the EventStream
// wire unmarshaled message content of requests and responses made while
// using the SDK Will also enable LogDebug.
LogDebugWithEventStreamBody
)
// A Logger is a minimalistic interface for the SDK to log messages to. Should

View file

@ -14,6 +14,7 @@ type Handlers struct {
Send HandlerList
ValidateResponse HandlerList
Unmarshal HandlerList
UnmarshalStream HandlerList
UnmarshalMeta HandlerList
UnmarshalError HandlerList
Retry HandlerList
@ -30,6 +31,7 @@ func (h *Handlers) Copy() Handlers {
Send: h.Send.copy(),
ValidateResponse: h.ValidateResponse.copy(),
Unmarshal: h.Unmarshal.copy(),
UnmarshalStream: h.UnmarshalStream.copy(),
UnmarshalError: h.UnmarshalError.copy(),
UnmarshalMeta: h.UnmarshalMeta.copy(),
Retry: h.Retry.copy(),
@ -45,6 +47,7 @@ func (h *Handlers) Clear() {
h.Send.Clear()
h.Sign.Clear()
h.Unmarshal.Clear()
h.UnmarshalStream.Clear()
h.UnmarshalMeta.Clear()
h.UnmarshalError.Clear()
h.ValidateResponse.Clear()
@ -172,6 +175,21 @@ func (l *HandlerList) SwapNamed(n NamedHandler) (swapped bool) {
return swapped
}
// Swap will swap out all handlers matching the name passed in. The matched
// handlers will be swapped in. True is returned if the handlers were swapped.
func (l *HandlerList) Swap(name string, replace NamedHandler) bool {
var swapped bool
for i := 0; i < len(l.list); i++ {
if l.list[i].Name == name {
l.list[i] = replace
swapped = true
}
}
return swapped
}
// SetBackNamed will replace the named handler if it exists in the handler list.
// If the handler does not exist the handler will be added to the end of the list.
func (l *HandlerList) SetBackNamed(n NamedHandler) {

View file

@ -46,6 +46,7 @@ type Request struct {
Handlers Handlers
Retryer
AttemptTime time.Time
Time time.Time
Operation *Operation
HTTPRequest *http.Request
@ -121,6 +122,7 @@ func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers,
Handlers: handlers.Copy(),
Retryer: retryer,
AttemptTime: time.Now(),
Time: time.Now(),
ExpireTime: 0,
Operation: operation,
@ -368,9 +370,9 @@ func (r *Request) Build() error {
return r.Error
}
// Sign will sign the request returning error if errors are encountered.
// Sign will sign the request, returning error if errors are encountered.
//
// Send will build the request prior to signing. All Sign Handlers will
// Sign will build the request prior to signing. All Sign Handlers will
// be executed in the order they were set.
func (r *Request) Sign() error {
r.Build()
@ -440,7 +442,7 @@ func (r *Request) GetBody() io.ReadSeeker {
return r.safeBody
}
// Send will send the request returning error if errors are encountered.
// Send will send the request, returning error if errors are encountered.
//
// Send will sign the request prior to sending. All Send Handlers will
// be executed in the order they were set.
@ -461,6 +463,7 @@ func (r *Request) Send() error {
}()
for {
r.AttemptTime = time.Now()
if aws.BoolValue(r.Retryable) {
if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {
r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d",

View file

@ -21,7 +21,7 @@ func (noBody) WriteTo(io.Writer) (int64, error) { return 0, nil }
var NoBody = noBody{}
// ResetBody rewinds the request body back to its starting position, and
// set's the HTTP Request body reference. When the body is read prior
// sets the HTTP Request body reference. When the body is read prior
// to being sent in the HTTP request it will need to be rewound.
//
// ResetBody will automatically be called by the SDK's build handler, but if

View file

@ -11,7 +11,7 @@ import (
var NoBody = http.NoBody
// ResetBody rewinds the request body back to its starting position, and
// set's the HTTP Request body reference. When the body is read prior
// sets the HTTP Request body reference. When the body is read prior
// to being sent in the HTTP request it will need to be rewound.
//
// ResetBody will automatically be called by the SDK's build handler, but if

View file

@ -35,8 +35,12 @@ type Pagination struct {
// NewRequest should always be built from the same API operations. It is
// undefined if different API operations are returned on subsequent calls.
NewRequest func() (*Request, error)
// EndPageOnSameToken, when enabled, will allow the paginator to stop on
// token that are the same as its previous tokens.
EndPageOnSameToken bool
started bool
prevTokens []interface{}
nextTokens []interface{}
err error
@ -49,7 +53,15 @@ type Pagination struct {
//
// Will always return true if Next has not been called yet.
func (p *Pagination) HasNextPage() bool {
return !(p.started && len(p.nextTokens) == 0)
if !p.started {
return true
}
hasNextPage := len(p.nextTokens) != 0
if p.EndPageOnSameToken {
return hasNextPage && !awsutil.DeepEqual(p.nextTokens, p.prevTokens)
}
return hasNextPage
}
// Err returns the error Pagination encountered when retrieving the next page.
@ -96,6 +108,7 @@ func (p *Pagination) Next() bool {
return false
}
p.prevTokens = p.nextTokens
p.nextTokens = req.nextPageTokens()
p.curPage = req.Data

View file

@ -466,20 +466,48 @@ func TestPagination_Standalone(t *testing.T) {
Value, PrevToken, NextToken *string
}
cases := [][]testCase{
type testCaseList struct {
StopOnSameToken bool
Cases []testCase
}
cases := []testCaseList{
{
testCase{aws.String("FirstValue"), aws.String("InitalToken"), aws.String("FirstToken")},
testCase{aws.String("SecondValue"), aws.String("FirstToken"), aws.String("SecondToken")},
testCase{aws.String("ThirdValue"), aws.String("SecondToken"), nil},
Cases: []testCase{
testCase{aws.String("FirstValue"), aws.String("InitalToken"), aws.String("FirstToken")},
testCase{aws.String("SecondValue"), aws.String("FirstToken"), aws.String("SecondToken")},
testCase{aws.String("ThirdValue"), aws.String("SecondToken"), nil},
},
StopOnSameToken: false,
},
{
testCase{aws.String("FirstValue"), aws.String("InitalToken"), aws.String("FirstToken")},
testCase{aws.String("SecondValue"), aws.String("FirstToken"), aws.String("SecondToken")},
testCase{aws.String("ThirdValue"), aws.String("SecondToken"), aws.String("")},
Cases: []testCase{
testCase{aws.String("FirstValue"), aws.String("InitalToken"), aws.String("FirstToken")},
testCase{aws.String("SecondValue"), aws.String("FirstToken"), aws.String("SecondToken")},
testCase{aws.String("ThirdValue"), aws.String("SecondToken"), aws.String("")},
},
StopOnSameToken: false,
},
{
Cases: []testCase{
testCase{aws.String("FirstValue"), aws.String("InitalToken"), aws.String("FirstToken")},
testCase{aws.String("SecondValue"), aws.String("FirstToken"), aws.String("SecondToken")},
testCase{nil, aws.String("SecondToken"), aws.String("SecondToken")},
},
StopOnSameToken: true,
},
{
Cases: []testCase{
testCase{aws.String("FirstValue"), aws.String("InitalToken"), aws.String("FirstToken")},
testCase{aws.String("SecondValue"), aws.String("FirstToken"), aws.String("SecondToken")},
testCase{aws.String("SecondValue"), aws.String("SecondToken"), aws.String("SecondToken")},
},
StopOnSameToken: true,
},
}
for _, c := range cases {
for _, testcase := range cases {
c := testcase.Cases
input := testPageInput{
NextToken: c[0].PrevToken,
}
@ -487,6 +515,7 @@ func TestPagination_Standalone(t *testing.T) {
svc := awstesting.NewClient()
i := 0
p := request.Pagination{
EndPageOnSameToken: testcase.StopOnSameToken,
NewRequest: func() (*request.Request, error) {
r := svc.NewRequest(
&request.Operation{

View file

@ -96,9 +96,23 @@ type envConfig struct {
//
// AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle
CustomCABundle string
csmEnabled string
CSMEnabled bool
CSMPort string
CSMClientID string
}
var (
csmEnabledEnvKey = []string{
"AWS_CSM_ENABLED",
}
csmPortEnvKey = []string{
"AWS_CSM_PORT",
}
csmClientIDEnvKey = []string{
"AWS_CSM_CLIENT_ID",
}
credAccessEnvKey = []string{
"AWS_ACCESS_KEY_ID",
"AWS_ACCESS_KEY",
@ -157,6 +171,12 @@ func envConfigLoad(enableSharedConfig bool) envConfig {
setFromEnvVal(&cfg.Creds.SecretAccessKey, credSecretEnvKey)
setFromEnvVal(&cfg.Creds.SessionToken, credSessionEnvKey)
// CSM environment variables
setFromEnvVal(&cfg.csmEnabled, csmEnabledEnvKey)
setFromEnvVal(&cfg.CSMPort, csmPortEnvKey)
setFromEnvVal(&cfg.CSMClientID, csmClientIDEnvKey)
cfg.CSMEnabled = len(cfg.csmEnabled) > 0
// Require logical grouping of credentials
if len(cfg.Creds.AccessKeyID) == 0 || len(cfg.Creds.SecretAccessKey) == 0 {
cfg.Creds = credentials.Value{}

View file

@ -15,6 +15,7 @@ import (
"github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
"github.com/aws/aws-sdk-go/aws/csm"
"github.com/aws/aws-sdk-go/aws/defaults"
"github.com/aws/aws-sdk-go/aws/endpoints"
"github.com/aws/aws-sdk-go/aws/request"
@ -81,10 +82,16 @@ func New(cfgs ...*aws.Config) *Session {
r.Error = err
})
}
return s
}
return deprecatedNewSession(cfgs...)
s := deprecatedNewSession(cfgs...)
if envCfg.CSMEnabled {
enableCSM(&s.Handlers, envCfg.CSMClientID, envCfg.CSMPort, s.Config.Logger)
}
return s
}
// NewSession returns a new Session created from SDK defaults, config files,
@ -300,10 +307,22 @@ func deprecatedNewSession(cfgs ...*aws.Config) *Session {
}
initHandlers(s)
return s
}
func enableCSM(handlers *request.Handlers, clientID string, port string, logger aws.Logger) {
logger.Log("Enabling CSM")
if len(port) == 0 {
port = csm.DefaultPort
}
r, err := csm.Start(clientID, "127.0.0.1:"+port)
if err != nil {
return
}
r.InjectHandlers(handlers)
}
func newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*Session, error) {
cfg := defaults.Config()
handlers := defaults.Handlers()
@ -343,6 +362,9 @@ func newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*Session,
}
initHandlers(s)
if envCfg.CSMEnabled {
enableCSM(&s.Handlers, envCfg.CSMClientID, envCfg.CSMPort, s.Config.Logger)
}
// Setup HTTP client with custom cert bundle if enabled
if opts.CustomCABundle != nil {

View file

@ -48,7 +48,7 @@ func TestPresignHandler(t *testing.T) {
expectedHost := "bucket.s3.mock-region.amazonaws.com"
expectedDate := "19700101T000000Z"
expectedHeaders := "content-disposition;host;x-amz-acl"
expectedSig := "a46583256431b09eb45ba4af2e6286d96a9835ed13721023dc8076dfdcb90fcb"
expectedSig := "2d76a414208c0eac2a23ef9c834db9635ecd5a0fbb447a00ad191f82d854f55b"
expectedCred := "AKID/19700101/mock-region/s3/aws4_request"
u, _ := url.Parse(urlstr)
@ -71,8 +71,8 @@ func TestPresignHandler(t *testing.T) {
if e, a := "300", urlQ.Get("X-Amz-Expires"); e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := "UNSIGNED-PAYLOAD", urlQ.Get("X-Amz-Content-Sha256"); e != a {
t.Errorf("expect %v, got %v", e, a)
if a := urlQ.Get("X-Amz-Content-Sha256"); len(a) != 0 {
t.Errorf("expect no content sha256 got %v", a)
}
if e, a := "+", urlstr; strings.Contains(a, e) { // + encoded as %20
@ -98,7 +98,7 @@ func TestPresignRequest(t *testing.T) {
expectedHost := "bucket.s3.mock-region.amazonaws.com"
expectedDate := "19700101T000000Z"
expectedHeaders := "content-disposition;host;x-amz-acl"
expectedSig := "a46583256431b09eb45ba4af2e6286d96a9835ed13721023dc8076dfdcb90fcb"
expectedSig := "2d76a414208c0eac2a23ef9c834db9635ecd5a0fbb447a00ad191f82d854f55b"
expectedCred := "AKID/19700101/mock-region/s3/aws4_request"
expectedHeaderMap := http.Header{
"x-amz-acl": []string{"public-read"},
@ -128,8 +128,8 @@ func TestPresignRequest(t *testing.T) {
if e, a := "300", urlQ.Get("X-Amz-Expires"); e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := "UNSIGNED-PAYLOAD", urlQ.Get("X-Amz-Content-Sha256"); e != a {
t.Errorf("expect %v, got %v", e, a)
if a := urlQ.Get("X-Amz-Content-Sha256"); len(a) != 0 {
t.Errorf("expect no content sha256 got %v", a)
}
if e, a := "+", urlstr; strings.Contains(a, e) { // + encoded as %20
@ -169,7 +169,7 @@ func TestStandaloneSign_WithPort(t *testing.T) {
cases := []struct {
description string
url string
url string
expectedSig string
}{
{
@ -213,7 +213,7 @@ func TestStandalonePresign_WithPort(t *testing.T) {
cases := []struct {
description string
url string
url string
expectedSig string
}{
{
@ -241,7 +241,7 @@ func TestStandalonePresign_WithPort(t *testing.T) {
for _, c := range cases {
signer := v4.NewSigner(unit.Session.Config.Credentials)
req, _ := http.NewRequest("GET", c.url, nil)
_, err := signer.Presign(req, nil, "es", "us-east-1", 5 * time.Minute, time.Unix(0, 0))
_, err := signer.Presign(req, nil, "es", "us-east-1", 5*time.Minute, time.Unix(0, 0))
if err != nil {
t.Fatalf("expect no error, got %v", err)
}

View file

@ -135,6 +135,7 @@ var requiredSignedHeaders = rules{
"X-Amz-Server-Side-Encryption-Customer-Key-Md5": struct{}{},
"X-Amz-Storage-Class": struct{}{},
"X-Amz-Website-Redirect-Location": struct{}{},
"X-Amz-Content-Sha256": struct{}{},
},
},
patterns{"X-Amz-Meta-"},
@ -671,8 +672,15 @@ func (ctx *signingCtx) buildSignature() {
func (ctx *signingCtx) buildBodyDigest() error {
hash := ctx.Request.Header.Get("X-Amz-Content-Sha256")
if hash == "" {
if ctx.unsignedPayload || (ctx.isPresign && ctx.ServiceName == "s3") {
includeSHA256Header := ctx.unsignedPayload ||
ctx.ServiceName == "s3" ||
ctx.ServiceName == "glacier"
s3Presign := ctx.isPresign && ctx.ServiceName == "s3"
if ctx.unsignedPayload || s3Presign {
hash = "UNSIGNED-PAYLOAD"
includeSHA256Header = !s3Presign
} else if ctx.Body == nil {
hash = emptyStringSHA256
} else {
@ -681,7 +689,8 @@ func (ctx *signingCtx) buildBodyDigest() error {
}
hash = hex.EncodeToString(makeSha256Reader(ctx.Body))
}
if ctx.unsignedPayload || ctx.ServiceName == "s3" || ctx.ServiceName == "glacier" {
if includeSHA256Header {
ctx.Request.Header.Set("X-Amz-Content-Sha256", hash)
}
}

View file

@ -223,16 +223,36 @@ func TestSignBodyGlacier(t *testing.T) {
}
}
func TestPresignEmptyBodyS3(t *testing.T) {
req, body := buildRequest("s3", "us-east-1", "hello")
func TestPresign_SignedPayload(t *testing.T) {
req, body := buildRequest("glacier", "us-east-1", "hello")
signer := buildSigner()
signer.Presign(req, body, "s3", "us-east-1", 5*time.Minute, time.Now())
signer.Presign(req, body, "glacier", "us-east-1", 5*time.Minute, time.Now())
hash := req.Header.Get("X-Amz-Content-Sha256")
if e, a := "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", hash; e != a {
t.Errorf("expect %v, got %v", e, a)
}
}
func TestPresign_UnsignedPayload(t *testing.T) {
req, body := buildRequest("service-name", "us-east-1", "hello")
signer := buildSigner()
signer.UnsignedPayload = true
signer.Presign(req, body, "service-name", "us-east-1", 5*time.Minute, time.Now())
hash := req.Header.Get("X-Amz-Content-Sha256")
if e, a := "UNSIGNED-PAYLOAD", hash; e != a {
t.Errorf("expect %v, got %v", e, a)
}
}
func TestPresign_UnsignedPayload_S3(t *testing.T) {
req, body := buildRequest("s3", "us-east-1", "hello")
signer := buildSigner()
signer.Presign(req, body, "s3", "us-east-1", 5*time.Minute, time.Now())
if a := req.Header.Get("X-Amz-Content-Sha256"); len(a) != 0 {
t.Errorf("expect no content sha256 got %v", a)
}
}
func TestSignUnseekableBody(t *testing.T) {
req, body := buildRequestWithBodyReader("mock-service", "mock-region", bytes.NewBuffer([]byte("hello")))
signer := buildSigner()

View file

@ -5,4 +5,4 @@ package aws
const SDKName = "aws-sdk-go"
// SDKVersion is the version of this SDK
const SDKVersion = "1.13.42"
const SDKVersion = "1.14.8"

View file

@ -0,0 +1,188 @@
// +build integration
package s3
import (
"bytes"
"encoding/csv"
"fmt"
"io"
"os"
"path/filepath"
"strings"
"testing"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/service/s3"
)
func TestSelectObjectContent(t *testing.T) {
keyName := "selectObject.csv"
putTestFile(t, filepath.Join("testdata", "positive_select.csv"), keyName)
resp, err := svc.SelectObjectContent(&s3.SelectObjectContentInput{
Bucket: bucketName,
Key: &keyName,
Expression: aws.String("Select * from S3Object"),
ExpressionType: aws.String(s3.ExpressionTypeSql),
InputSerialization: &s3.InputSerialization{
CSV: &s3.CSVInput{
FieldDelimiter: aws.String(","),
FileHeaderInfo: aws.String(s3.FileHeaderInfoIgnore),
},
},
OutputSerialization: &s3.OutputSerialization{
CSV: &s3.CSVOutput{
FieldDelimiter: aws.String(","),
},
},
})
if err != nil {
t.Fatalf("expect no error, %v", err)
}
defer resp.EventStream.Close()
var sum int64
var processed int64
for event := range resp.EventStream.Events() {
switch tv := event.(type) {
case *s3.RecordsEvent:
sum += int64(len(tv.Payload))
case *s3.StatsEvent:
processed = *tv.Details.BytesProcessed
}
}
if sum == 0 {
t.Errorf("expect selected content, got none")
}
if processed == 0 {
t.Errorf("expect selected status bytes processed, got none")
}
if err := resp.EventStream.Err(); err != nil {
t.Fatalf("exect no error, %v", err)
}
}
func TestSelectObjectContent_Error(t *testing.T) {
keyName := "negativeSelect.csv"
buf := make([]byte, 0, 1024*1024*6)
buf = append(buf, []byte("name,number\n")...)
line := []byte("jj,0\n")
for i := 0; i < (cap(buf)/len(line))-2; i++ {
buf = append(buf, line...)
}
buf = append(buf, []byte("gg,NaN\n")...)
putTestContent(t, bytes.NewReader(buf), keyName)
resp, err := svc.SelectObjectContent(&s3.SelectObjectContentInput{
Bucket: bucketName,
Key: &keyName,
Expression: aws.String("SELECT name FROM S3Object WHERE cast(number as int) < 1"),
ExpressionType: aws.String(s3.ExpressionTypeSql),
InputSerialization: &s3.InputSerialization{
CSV: &s3.CSVInput{
FileHeaderInfo: aws.String(s3.FileHeaderInfoUse),
},
},
OutputSerialization: &s3.OutputSerialization{
CSV: &s3.CSVOutput{
FieldDelimiter: aws.String(","),
},
},
})
if err != nil {
t.Fatalf("expect no error, %v", err)
}
defer resp.EventStream.Close()
var sum int64
for event := range resp.EventStream.Events() {
switch tv := event.(type) {
case *s3.RecordsEvent:
sum += int64(len(tv.Payload))
}
}
if sum == 0 {
t.Errorf("expect selected content")
}
err = resp.EventStream.Err()
if err == nil {
t.Fatalf("exepct error")
}
aerr := err.(awserr.Error)
if a := aerr.Code(); len(a) == 0 {
t.Errorf("expect, error code")
}
if a := aerr.Message(); len(a) == 0 {
t.Errorf("expect, error message")
}
}
func TestSelectObjectContent_Stream(t *testing.T) {
keyName := "selectGopher.csv"
buf := `name,number
gopher,0
ᵷodɥǝɹ,1
`
// Put a mock CSV file to the S3 bucket so that its contents can be
// selected.
putTestContent(t, strings.NewReader(buf), keyName)
// Make the Select Object Content API request using the object uploaded.
resp, err := svc.SelectObjectContent(&s3.SelectObjectContentInput{
Bucket: bucketName,
Key: &keyName,
Expression: aws.String("SELECT name FROM S3Object WHERE cast(number as int) < 1"),
ExpressionType: aws.String(s3.ExpressionTypeSql),
InputSerialization: &s3.InputSerialization{
CSV: &s3.CSVInput{
FileHeaderInfo: aws.String(s3.FileHeaderInfoUse),
},
},
OutputSerialization: &s3.OutputSerialization{
CSV: &s3.CSVOutput{},
},
})
if err != nil {
fmt.Fprintf(os.Stderr, "failed making API request, %v\n", err)
return
}
defer resp.EventStream.Close()
results, resultWriter := io.Pipe()
go func() {
defer resultWriter.Close()
for event := range resp.EventStream.Events() {
switch e := event.(type) {
case *s3.RecordsEvent:
resultWriter.Write(e.Payload)
case *s3.StatsEvent:
fmt.Printf("Processed %d bytes\n", *e.Details.BytesProcessed)
}
}
}()
// Printout the results
resReader := csv.NewReader(results)
for {
record, err := resReader.Read()
if err == io.EOF {
break
}
fmt.Println(record)
}
if err := resp.EventStream.Err(); err != nil {
fmt.Fprintf(os.Stderr, "reading from event stream failed, %v\n", err)
}
}

View file

@ -4,6 +4,7 @@ package s3
import (
"fmt"
"io"
"os"
"testing"
@ -65,3 +66,24 @@ func teardown() {
svc.DeleteBucket(&s3.DeleteBucketInput{Bucket: bucketName})
}
func putTestFile(t *testing.T, filename, key string) {
f, err := os.Open(filename)
if err != nil {
t.Fatalf("failed to open testfile, %v", err)
}
defer f.Close()
putTestContent(t, f, key)
}
func putTestContent(t *testing.T, reader io.ReadSeeker, key string) {
_, err := svc.PutObject(&s3.PutObjectInput{
Bucket: bucketName,
Key: aws.String(key),
Body: reader,
})
if err != nil {
t.Errorf("expect no error, got %v", err)
}
}

View file

@ -0,0 +1,556 @@
A,B,C,D,E,F,G,H,I,J
0,0,0.5,217.371,217.658,218.002,269.445,487.447,2.106,489.554
0,0,490.077,0.657,0.84,1.588,121.092,122.681,2.185,124.867
0,9,490.077,1.602,1.676,1.977,184.155,186.132,1.198,187.331
0,6,490.384,1.787,1.962,2.451,270.592,273.044,4.158,277.202
0,5,491.125,0.693,0.877,1.9,295.589,297.49,19.456,316.946
0,8,491.348,1.833,1.924,66.432,250.035,316.467,2.379,318.847
0,0,614.955,0.455,0.507,8.554,229.261,237.815,15.761,253.577
0,9,677.418,0.493,0.546,14.288,176.628,190.917,6.522,197.44
0,3,491.864,1.034,1.109,250.552,132.254,382.806,2.485,385.291
0,2,491.351,1.763,1.807,276.239,122.283,398.523,26.436,424.96
0,4,490.154,1.867,1.935,341.544,86.243,427.787,15.659,443.447
0,8,810.203,0.381,0.453,21.4,101.836,123.236,9.01,132.246
0,6,767.595,0.54,0.592,68.928,105.705,174.633,0.93,175.564
0,0,868.54,0.384,0.483,8.721,82.83,91.552,37.154,128.706
0,9,874.866,0.472,0.574,41.728,80.617,122.345,11.14,133.486
0,1,490.757,2.284,2.336,426.145,91.084,517.229,0.507,517.736
0,7,490.755,1.652,1.816,426.521,90.913,517.435,2.244,519.679
0,6,943.165,0.324,0.391,2.676,116.421,119.098,0.452,119.551
0,2,916.32,0.609,0.884,81.097,83.55,164.647,1.342,165.989
0,8,942.462,0.374,0.464,55.682,84.915,140.597,46.844,187.442
0,4,933.61,0.377,0.451,64.784,131.147,195.932,9.997,205.929
0,5,808.083,0.565,0.641,190.27,140.808,331.078,0.465,331.543
0,3,877.165,0.47,0.546,121.153,141.078,262.231,2.558,264.789
0,7,1010.442,0.372,0.441,2.201,129.116,131.318,7.148,138.467
0,6,1062.725,0.483,0.581,6.402,80.848,87.251,45.416,132.668
0,1,1008.502,1.579,1.706,65.348,121.324,186.672,1.251,187.924
0,0,997.256,0.402,0.832,76.472,121.367,197.839,18.513,216.353
0,9,1008.364,1.428,1.582,70.936,133.941,204.878,2.255,207.133
0,8,1129.916,0.458,0.551,19.07,113.216,132.287,0.38,132.667
0,4,1139.547,0.388,0.457,9.775,113.036,122.812,1.531,124.343
0,2,1082.318,0.352,0.43,67.775,112.768,180.543,22.578,203.122
0,5,1139.629,0.416,0.466,10.429,135.269,145.699,2.425,148.124
0,3,1141.962,0.394,0.472,53.375,92.295,145.67,0.212,145.883
0,0,1213.618,0.408,0.481,2.655,112.525,115.18,0.547,115.728
0,9,1215.504,0.427,0.672,2.233,111.382,113.615,1.145,114.761
0,6,1195.403,0.437,0.511,25.098,109.564,134.662,22.852,157.515
0,7,1148.919,0.486,1.021,138.981,91.884,230.865,16.504,247.369
0,4,1263.894,0.711,0.788,33.761,98.396,132.158,0.671,132.83
0,1,1196.433,0.301,0.364,100.757,99.252,200.01,1.116,201.126
0,8,1262.594,0.964,1.248,66.394,96.747,163.141,1.173,164.315
0,2,1285.445,0.209,0.254,43.808,97.338,141.146,0.548,141.694
0,9,1330.271,0.288,0.355,35.329,84.511,119.84,16.98,136.821
0,6,1352.928,0.474,0.579,12.904,100.981,113.886,0.517,114.403
0,0,1329.353,0.294,0.366,36.781,100.857,137.638,0.532,138.171
0,2,1427.143,0.532,0.58,9.336,79.756,89.093,1.239,90.332
0,4,1396.736,0.503,0.592,44.925,80.622,125.548,10.972,136.52
0,8,1426.921,0.631,0.71,15.906,90.068,105.975,1.38,107.356
0,5,1287.759,0.278,0.316,181.454,80.529,261.984,10.774,272.759
0,1,1397.566,0.268,0.324,99.635,82.55,182.186,8.445,190.632
0,0,1467.53,1.354,1.536,33.298,87.09,120.388,0.517,120.905
0,7,1396.3,0.593,0.684,104.729,87.108,191.838,1.133,192.971
0,9,1467.103,1.422,1.546,42.719,82.771,125.491,9.398,134.89
0,3,1287.85,0.245,0.272,248.437,79.849,328.286,9.318,337.605
0,6,1467.339,0.933,1.132,69.074,88.797,157.871,0.891,158.762
0,4,1533.267,0.449,0.548,42.003,81.379,123.383,9.108,132.491
0,2,1517.483,0.32,0.399,56.455,91.585,148.04,0.44,148.48
0,8,1534.284,0.425,0.48,39.738,91.427,131.166,1.247,132.413
0,5,1560.528,0.396,0.499,19.318,86.69,106.008,1.54,107.548
0,6,1626.109,0.34,0.43,6.88,82.575,89.455,0.568,90.023
0,1,1588.231,0.451,0.541,44.902,84.635,129.537,24.285,153.823
0,7,1589.279,0.288,0.352,57.597,94.892,152.489,0.555,153.044
0,9,1602.002,0.424,0.68,45.095,94.862,139.957,0.797,140.755
0,5,1668.084,0.29,0.351,29.143,84.196,113.34,26.201,139.542
0,4,1665.766,0.373,0.457,34.457,107.029,141.486,0.715,142.201
0,2,1665.971,0.303,0.375,47.175,94.572,141.748,0.861,142.609
0,0,1588.445,0.517,0.625,154.081,80.415,234.496,7.112,241.608
0,3,1625.463,0.647,0.751,143.666,83.075,226.742,21.951,248.694
0,7,1742.325,0.53,0.624,25.438,84.393,109.831,22.061,131.893
0,1,1742.079,0.555,0.659,34.769,97.152,131.921,0.364,132.286
0,8,1666.705,0.883,1.046,113.237,94.162,207.4,1.118,208.519
0,2,1808.586,0.3,0.362,21.568,78.537,100.106,1.979,102.085
0,0,1830.064,0.405,0.481,7.114,81.532,88.647,2.392,91.04
0,6,1716.143,0.49,0.557,121.371,87.089,208.46,14.395,222.856
0,5,1807.634,0.442,0.527,36.463,94.602,131.065,1.369,132.434
0,8,1875.228,0.164,0.198,3.582,79.597,83.179,1.504,84.684
0,1,1874.367,0.562,0.645,28.304,79.054,107.358,0.456,107.815
0,4,1807.975,0.4,0.482,99.4,81.109,180.509,1.133,181.643
0,9,1742.773,0.339,0.39,168.948,80.077,249.025,2.367,251.393
0,3,1874.166,0.495,0.593,38.988,84.602,123.59,7.982,131.572
0,8,1959.921,0.415,0.494,9.861,82.855,92.717,2.765,95.483
0,2,1910.682,0.995,1.109,69.161,85.346,154.507,1.625,156.133
0,0,1921.114,0.394,0.473,92.984,80.599,173.584,1.153,174.738
0,3,2005.748,0.476,0.556,7.441,83.841,91.283,1.422,92.705
0,5,1940.076,0.325,0.401,73.91,84.342,158.253,1.718,159.972
0,7,1874.22,0.557,0.642,140.027,91.031,231.059,1.754,232.814
0,6,1939.008,0.377,0.455,95.473,81.569,177.042,1.072,178.115
0,4,1989.626,0.314,0.388,51.23,81.724,132.955,11.694,144.65
0,9,1994.183,0.321,0.394,57.158,82.743,139.902,0.758,140.66
0,2,2066.819,0.204,0.259,13.808,84.448,98.256,1.366,99.623
0,1,1982.189,0.295,0.368,99.448,85.395,184.843,1.56,186.403
0,8,2055.408,0.203,0.253,51.567,82.101,133.668,1.073,134.741
0,9,2134.846,0.25,0.306,16.106,85.649,101.755,0.176,101.931
0,1,2168.598,0.229,0.302,6.826,81.481,88.307,1.143,89.45
0,4,2134.304,0.373,0.492,45.962,81.137,127.099,0.549,127.648
0,7,2107.039,0.483,0.555,73.813,81.641,155.455,1.562,157.017
0,6,2117.128,0.208,0.255,63.776,83.028,146.805,1.656,148.461
0,8,2190.154,0.225,0.285,29.098,80.996,110.094,1.344,111.439
0,9,2236.784,0.256,0.32,4.01,82.88,86.89,2.12,89.011
0,2,2166.449,0.317,0.395,80.763,84.208,164.971,2.32,167.291
0,5,2100.052,0.294,0.365,146.743,86.973,233.716,0.672,234.389
0,3,2098.458,0.241,0.3,150.5,84.733,235.234,1.292,236.526
0,0,2095.857,0.215,0.271,153.005,85.917,238.923,0.534,239.458
0,6,2265.593,0.182,0.218,20.159,80.738,100.897,1.449,102.347
0,4,2261.957,0.207,0.256,42.386,82.309,124.696,1.433,126.13
0,7,2264.061,0.243,0.288,51.339,80.631,131.97,0.973,132.943
0,8,2301.604,0.391,0.474,24.05,81.886,105.937,1.805,107.743
0,1,2258.053,0.206,0.26,93.644,81.876,175.52,1.331,176.852
0,0,2335.321,0.204,0.245,21.603,81.849,103.452,0.941,104.394
0,6,2367.949,0.434,0.515,6.274,83.161,89.435,4.495,93.931
0,3,2334.991,0.332,0.403,58.507,88.463,146.971,1.116,148.088
0,8,2409.356,0.385,0.463,13.78,83.24,97.02,0.344,97.364
0,5,2334.448,0.364,0.451,106.034,82.488,188.523,1.39,189.914
0,9,2325.809,0.429,0.506,114.736,84.279,199.015,1.209,200.225
0,2,2333.745,0.423,0.517,106.853,85.698,192.551,1.745,194.296
0,4,2388.097,0.399,0.498,67.532,84.096,151.628,0.599,152.228
0,3,2483.086,0.35,0.427,19.21,81.612,100.822,3.51,104.333
0,1,2434.913,0.435,0.577,86.727,83.002,169.729,1.902,171.632
0,7,2397.012,0.331,0.416,142.874,80.866,223.74,1.672,225.413
0,6,2461.891,0.36,0.441,78.194,82.238,160.433,0.613,161.046
0,9,2526.038,0.665,0.74,32.614,86.809,119.423,1.275,120.699
0,4,2540.332,0.326,0.387,42.093,80.618,122.711,2.268,124.979
0,8,2506.727,0.378,0.456,99.838,79.225,179.064,0.294,179.358
0,6,2622.939,0.33,0.385,1.186,81.73,82.917,2.248,85.165
0,3,2587.429,0.61,0.72,59.939,82.437,142.376,0.97,143.346
0,1,2606.549,0.391,0.459,40.636,83.436,124.072,2.096,126.169
0,7,2622.432,0.383,0.463,30.735,80.765,111.501,0.733,112.234
0,2,2528.046,0.199,0.244,128.905,85.696,214.602,0.334,214.936
0,4,2665.318,0.312,0.399,26.866,81.414,108.281,0.222,108.504
0,5,2524.369,0.329,0.413,167.907,84.934,252.841,1.305,254.147
0,8,2686.096,0.401,0.494,7.747,85.181,92.928,2.125,95.053
0,0,2439.722,0.357,0.696,254.259,89.099,343.358,2.809,346.167
0,9,2646.75,0.681,0.799,73.064,84.639,157.704,3.532,161.236
0,6,2708.115,0.4,0.481,14.501,86.758,101.259,0.934,102.194
0,3,2730.783,0.303,0.377,35.013,88.845,123.858,1.666,125.524
0,1,2732.726,0.318,0.414,53.138,78.873,132.011,0.237,132.249
0,0,2785.893,0.375,0.447,25.451,83.295,108.746,4.165,112.911
0,9,2807.993,0.31,0.384,35.981,91.657,127.639,0.466,128.106
0,2,2742.992,0.403,0.56,101.119,91.707,192.827,5.458,198.285
0,8,2781.157,0.365,0.446,70.781,90.886,161.667,0.817,162.484
0,1,2864.982,0.311,0.402,19.474,86.691,106.165,3.435,109.601
0,3,2856.319,0.429,0.493,54.672,82.88,137.553,0.33,137.884
0,5,2778.523,0.309,0.392,132.818,84.58,217.399,1.527,218.927
0,0,2898.815,0.362,0.463,12.416,86.002,98.418,1.107,99.525
0,7,2734.674,0.744,0.873,195.477,83.728,279.205,7.848,287.053
0,4,2773.831,0.339,0.428,156.128,91.457,247.585,1.311,248.897
0,6,2810.317,0.339,0.432,125.657,102.335,227.993,2.034,230.027
0,2,2941.285,0.294,0.367,38.02,79.84,117.86,1.696,119.556
0,8,2943.648,0.293,0.373,38.288,79.728,118.016,2.042,120.058
0,9,2936.108,0.466,0.563,63.933,82.084,146.017,1.602,147.619
0,4,3022.735,0.269,0.339,3.697,87.616,91.313,0.516,91.83
0,3,2994.213,0.418,0.495,42.946,81.806,124.752,0.29,125.043
0,1,2974.591,0.641,0.762,72.809,81.187,153.997,1.512,155.51
0,9,3083.737,0.352,0.425,15.144,84.807,99.951,1.383,101.335
0,6,3040.353,0.399,0.48,61.605,83.294,144.899,9.906,154.806
0,2,3060.852,0.407,0.487,40.928,92.521,133.449,0.893,134.342
0,0,2998.348,0.336,0.417,115.561,82.329,197.89,2.808,200.698
0,8,3063.714,0.314,0.391,50.53,84.619,135.15,28.56,163.71
0,1,3130.111,0.381,0.484,36.604,82.182,118.787,1.306,120.094
0,5,2997.458,0.349,0.427,169.477,83.501,252.978,2.447,255.425
0,7,3021.738,0.425,0.518,148.774,83.974,232.748,0.411,233.16
0,3,3119.263,0.315,0.392,50.462,85,135.463,4.92,140.383
0,4,3114.576,0.397,0.465,66.492,81.543,148.035,1.216,149.251
0,9,3185.086,0.49,0.563,0.843,79.106,79.95,28.271,108.222
0,6,3195.164,0.659,0.878,41.861,81.999,123.86,0.305,124.166
0,8,3227.436,0.588,0.685,13.471,80.559,94.03,0.675,94.705
0,0,3199.056,0.344,0.417,55.856,81.147,137.003,2.313,139.317
0,2,3195.197,0.89,0.993,59.866,83.95,143.817,2.518,146.336
0,1,3250.212,0.555,0.641,53.457,80.43,133.887,1.541,135.428
0,5,3252.89,0.347,0.424,55.768,81.876,137.644,2.326,139.971
0,9,3293.317,0.516,0.622,39.115,78.826,117.941,1.674,119.615
0,2,3341.541,0.379,0.456,26.056,81.181,107.238,1.453,108.691
0,4,3263.836,0.304,0.385,109.176,79.223,188.399,1.336,189.736
0,6,3319.341,0.424,0.509,52.086,83.572,135.658,1.93,137.589
0,3,3259.654,0.318,0.4,115.781,84.483,200.264,2.851,203.116
0,9,3412.942,0.36,0.432,19.904,83.186,103.091,0.294,103.386
0,5,3392.869,0.364,0.438,46.674,81.708,128.382,2.336,130.718
0,7,3254.902,0.434,0.504,184.8,83.725,268.526,1.536,270.063
0,0,3338.38,0.334,0.412,104.769,84.635,189.405,0.579,189.984
0,8,3322.15,0.363,0.429,120.337,85.709,206.047,1.064,207.111
0,3,3462.777,0.285,0.363,32.857,78.802,111.659,3.064,114.724
0,2,3450.24,0.329,0.416,53.507,82.338,135.845,0.291,136.137
0,1,3385.654,0.404,0.479,125.574,82.017,207.591,1.116,208.708
0,6,3456.937,0.306,0.374,58.496,80.921,139.418,1.87,141.288
0,4,3453.579,0.31,0.387,61.685,82.969,144.655,1.418,146.073
0,8,3529.268,0.324,0.408,31.325,78.86,110.186,1.213,111.4
0,5,3523.596,0.334,0.417,39.494,83.382,122.877,0.347,123.225
0,7,3524.971,0.36,0.472,47.432,80.801,128.234,0.953,129.187
0,4,3599.659,0.319,0.398,27.195,80.69,107.885,1.895,109.781
0,3,3577.512,0.571,0.652,51.889,82.948,134.837,1.141,135.979
0,1,3594.371,0.341,0.422,42.685,81.099,123.785,1.473,125.259
0,7,3654.167,0.306,0.383,15.528,81.986,97.515,2.405,99.92
0,9,3516.338,0.397,0.472,178.897,79.745,258.642,2.238,260.881
0,2,3586.389,1.185,1.333,109.11,81.551,190.661,2.03,192.692
0,5,3646.833,0.424,0.488,56.484,81.305,137.789,1.209,138.999
0,0,3528.372,0.397,0.487,176.378,80.819,257.198,0.746,257.944
0,6,3598.234,0.336,0.428,102.676,85.142,187.818,1.845,189.664
0,8,3640.677,0.476,0.58,83.915,81.6,165.515,12.681,178.196
0,4,3709.449,0.415,0.495,25.988,83.141,109.13,1.996,111.126
0,3,3713.499,0.322,0.402,55.534,81.807,137.341,0.906,138.248
0,0,3786.324,0.919,1.147,3.983,80.348,84.331,1.885,86.217
0,7,3754.097,0.438,0.543,36.421,81.782,118.204,1.217,119.421
0,9,3777.227,0.339,0.419,18.041,81.599,99.641,2.512,102.154
0,1,3719.638,0.353,0.419,112.793,82.398,195.191,1.433,196.624
0,4,3820.583,0.299,0.38,14.112,83.485,97.598,1.551,99.149
0,6,3787.905,0.358,0.44,49.391,82.265,131.656,1.218,132.874
0,2,3779.087,0.323,0.402,81.512,79.373,160.885,3.793,164.679
0,5,3785.843,1.116,1.253,82.986,77.901,160.888,1.176,162.064
0,8,3818.882,0.383,0.46,80.581,80.539,161.121,2.24,163.361
0,9,3879.424,0.314,0.394,21.002,81.687,102.689,1.579,104.268
0,6,3920.787,0.287,0.38,3.32,80.808,84.129,2.54,86.669
0,7,3873.527,0.371,0.436,60.962,79.343,140.305,1.693,141.998
0,5,3947.917,0.324,0.401,18.55,86.417,104.968,1.132,106.101
0,3,3851.755,0.345,0.42,114.969,87.007,201.977,0.317,202.294
0,9,3983.709,0.467,0.534,6.466,81.73,88.196,0.443,88.64
0,8,3982.255,0.767,0.998,14.279,81.449,95.729,1.705,97.435
0,4,3919.74,0.346,0.424,85.31,79.932,165.243,0.644,165.887
0,7,4015.534,0.333,0.409,17.541,80.366,97.907,1.668,99.575
0,1,3916.272,0.432,0.512,128.903,84.8,213.703,2.03,215.733
0,0,3872.552,0.463,0.605,190.345,81.085,271.43,2.323,273.754
0,2,3943.776,0.456,0.565,124.062,79.417,203.479,2.947,206.427
0,5,4054.025,0.473,0.519,16.707,81.618,98.325,2.546,100.872
0,4,4085.637,0.444,0.528,14.533,83.168,97.701,1.309,99.01
0,7,4115.136,0.466,0.563,10.979,80.789,91.768,1.994,93.762
0,9,4072.356,0.332,0.411,61.405,81.35,142.756,1.96,144.716
0,6,4007.465,0.323,0.404,173.194,81.587,254.782,1.562,256.344
0,0,4146.315,0.415,0.495,47.446,82.791,130.237,1.332,131.569
0,3,4054.052,0.334,0.407,140.693,83.369,224.063,5.103,229.166
0,8,4079.697,0.352,0.431,114.177,84.118,198.295,7.426,205.722
0,4,4184.657,0.346,0.42,13.748,86.813,100.561,0.308,100.869
0,2,4150.211,0.297,0.391,50.058,85.067,135.125,2.111,137.237
0,9,4217.079,0.289,0.372,15.913,78.546,94.459,1.492,95.952
0,7,4208.903,0.592,0.799,46.416,79.377,125.794,1.363,127.157
0,5,4154.904,0.378,0.458,105.65,86.733,192.384,0.306,192.69
0,1,4132.012,0.351,0.423,128.658,87.255,215.914,1.377,217.291
0,6,4263.817,0.316,0.392,7.054,80.022,87.076,2.867,89.944
0,2,4287.456,0.418,0.519,13.658,77.869,91.528,1.837,93.365
0,8,4285.427,0.371,0.448,46.607,81.282,127.89,1.193,129.083
0,6,4353.769,0.428,0.512,12.728,83.385,96.114,1.372,97.486
0,9,4313.041,0.452,0.544,65.025,81.466,146.492,1.454,147.947
0,7,4336.069,0.547,0.631,62.669,80.678,143.347,1.741,145.089
0,4,4285.532,0.421,0.489,126.035,80.128,206.164,1.865,208.029
0,1,4349.311,0.344,0.419,83.199,81.257,164.457,2.457,166.915
0,5,4347.602,0.336,0.415,84.785,84.577,169.362,0.205,169.568
0,3,4283.225,0.311,0.39,165.412,81.631,247.043,2.736,249.779
0,6,4451.266,0.349,0.435,16.483,81.492,97.976,1.693,99.669
0,2,4380.832,0.957,1.096,87.309,82.649,169.959,1.588,171.547
0,8,4414.518,0.362,0.479,53.482,84.438,137.92,1.534,139.454
0,0,4277.9,0.615,0.698,190.489,85.361,275.85,1.139,276.99
0,4,4493.572,0.353,0.433,5.668,79.869,85.538,1.985,87.523
0,9,4460.995,0.297,0.379,72.698,82.185,154.884,1.312,156.196
0,7,4481.166,0.353,0.43,52.934,82.767,135.702,0.9,136.602
0,1,4516.236,0.426,0.513,21.016,82.575,103.591,1.242,104.834
0,0,4554.897,0.284,0.36,14.035,80.027,94.063,0.644,94.708
0,2,4552.387,0.34,0.416,49.053,82.256,131.309,1.498,132.807
0,6,4550.944,0.374,0.452,58.083,82.241,140.324,0.226,140.55
0,5,4517.178,0.287,0.348,92.038,83.638,175.677,2.136,177.813
0,3,4533.015,0.387,0.482,81.677,80.321,161.999,0.881,162.88
0,8,4553.982,0.403,0.5,92.788,79.698,172.487,2.855,175.343
0,0,4649.615,0.455,0.528,19.45,84.334,103.785,1.69,105.475
0,4,4581.108,0.727,0.888,88.144,85.538,173.683,0.515,174.198
0,7,4617.775,0.309,0.38,57.266,80.933,138.2,1.523,139.723
0,9,4617.201,0.408,0.513,79.382,81.334,160.716,0.872,161.589
0,1,4621.077,0.313,0.394,79.38,80.484,159.864,1.538,161.403
0,5,4695,0.323,0.398,26.916,80.04,106.957,1.254,108.212
0,8,4729.336,0.417,0.504,8.58,81.443,90.024,1.481,91.506
0,6,4691.503,0.315,0.393,52.131,81.54,133.672,1.764,135.436
0,7,4757.506,0.336,0.402,8.604,82.634,91.239,2.208,93.447
0,3,4695.901,0.364,0.612,110.355,79.703,190.059,2.086,192.145
0,4,4755.316,0.387,0.444,71.444,80.424,151.868,1.02,152.889
0,1,4782.487,0.804,0.913,71.209,80.168,151.377,1.373,152.751
0,2,4685.202,0.318,0.395,168.695,81.247,249.943,1.572,251.515
0,0,4755.102,0.475,0.548,109.227,80.705,189.933,0.478,190.411
0,7,4850.962,0.47,0.583,25.01,82.997,108.007,1.157,109.164
0,5,4803.219,0.334,0.445,72.976,85.095,158.071,1.135,159.207
0,9,4778.799,0.486,0.589,120.634,80.375,201.009,1.331,202.341
0,4,4908.214,0.415,0.488,15.698,82.28,97.979,1.139,99.118
0,6,4826.949,0.393,0.479,97.059,83.146,180.206,1.672,181.879
0,8,4820.854,0.484,0.577,109.039,81.594,190.634,0.318,190.953
0,2,4936.725,0.354,0.431,6.303,83.521,89.824,1.867,91.692
0,3,4888.057,0.498,0.577,71.038,81.397,152.435,0.342,152.777
0,5,4962.434,0.279,0.331,14.723,82.679,97.402,0.279,97.682
0,7,4960.133,0.327,0.397,44.946,83.613,128.56,0.245,128.805
0,3,5040.845,0.439,0.546,14.402,85.033,99.435,2.166,101.602
0,8,5011.814,0.411,0.481,59.326,83.914,143.24,1.398,144.639
0,2,5028.425,0.366,0.446,42.929,84.889,127.819,0.305,128.124
0,0,4945.521,0.346,0.418,150.986,80.727,231.713,2.023,233.737
0,9,4981.151,0.45,0.557,115.5,82.904,198.405,2.823,201.228
0,5,5060.124,0.398,0.501,64.278,83.236,147.514,2.355,149.869
0,6,5008.836,0.28,0.353,115.728,85.538,201.267,0.603,201.871
0,1,4935.247,0.379,0.458,189.72,85.303,275.023,0.465,275.488
0,4,5007.34,0.542,0.741,117.463,85.645,203.108,2.146,205.255
0,7,5088.946,0.313,0.394,49.444,81.597,131.042,1.646,132.688
0,3,5142.457,0.399,0.478,5.147,81.287,86.435,0.881,87.317
0,2,5156.557,0.291,0.362,5.203,81.382,86.585,1.92,88.505
0,8,5156.462,0.521,0.69,19.219,80.308,99.528,1.821,101.349
0,9,5182.387,0.32,0.399,23.899,80.953,104.852,1.121,105.973
0,7,5221.642,0.307,0.391,5.745,81.815,87.561,1.817,89.378
0,0,5179.266,0.363,0.443,49.741,84.892,134.633,2.054,136.688
0,5,5210.018,0.568,0.643,61.334,81.577,142.911,1.418,144.33
0,3,5229.782,0.339,0.44,49.632,85.029,134.661,1.34,136.002
0,1,5210.738,0.792,1.471,86.688,81.747,168.435,0.87,169.305
0,9,5288.37,0.428,0.512,5.724,86.497,92.221,2.111,94.333
0,2,5245.07,0.351,0.431,61.536,81.418,142.954,1.728,144.682
0,0,5315.961,0.382,0.447,20.382,79.869,100.252,1.409,101.661
0,8,5257.815,0.423,0.49,92.566,80.892,173.459,1.496,174.955
0,7,5311.029,0.435,0.516,52.528,81.313,133.841,1.413,135.255
0,6,5210.712,1.532,1.63,151.833,85.155,236.989,1.118,238.107
0,3,5365.791,0.299,0.377,50.784,81.585,132.369,1.452,133.822
0,2,5389.757,0.474,0.554,26.667,82.959,109.627,1.814,111.441
0,0,5417.631,0.784,0.907,8.897,81.026,89.924,1.412,91.336
0,4,5212.602,0.386,0.447,217.003,82.217,299.221,1.166,300.387
0,9,5382.712,0.311,0.389,75.127,83.211,158.339,1.983,160.323
0,5,5354.356,0.305,0.39,112.1,80.95,193.05,1.376,194.427
0,7,5446.296,0.356,0.432,36.105,80.157,116.262,0.92,117.183
0,1,5380.053,0.405,0.494,111.048,85.12,196.168,1.345,197.514
0,6,5448.827,0.315,0.388,42.469,86.109,128.578,0.571,129.149
0,8,5432.778,0.329,0.409,64.109,83.938,148.048,0.344,148.393
0,4,5512.997,0.298,0.374,12.336,81.353,93.69,2.014,95.704
0,3,5499.624,0.486,0.595,59.894,82.285,142.179,1.619,143.799
0,5,5548.792,0.428,0.535,10.625,83.853,94.479,1.992,96.472
0,2,5501.208,0.575,0.684,90.412,78.346,168.759,0.685,169.444
0,4,5608.705,0.558,0.815,8.557,78.683,87.24,1.117,88.358
0,1,5577.576,0.426,0.513,55.869,79.618,135.487,1.607,137.095
0,0,5508.975,0.328,0.404,126.867,81.307,208.175,1.943,210.118
0,9,5543.047,0.36,0.436,90.905,85.163,176.069,2.65,178.719
0,2,5670.662,0.41,0.496,11.867,80.168,92.035,2.243,94.278
0,7,5563.487,0.303,0.384,127.359,84.02,211.379,1.073,212.452
0,6,5577.982,0.339,0.414,117.634,83.729,201.363,0.301,201.665
0,5,5645.292,0.373,0.455,50.568,84.436,135.005,1.355,136.36
0,4,5697.074,0.417,0.514,14.751,79.581,94.332,2.424,96.757
0,3,5643.43,0.367,0.462,102.833,81.493,184.327,2.916,187.244
0,0,5719.101,0.348,0.427,42.935,78.555,121.491,1.886,123.377
0,8,5581.178,0.307,0.381,181.001,83.057,264.059,1.295,265.354
0,9,5721.773,0.324,0.406,46.37,81.578,127.949,1.29,129.239
0,2,5764.95,0.399,0.477,28.761,79.071,107.832,2.316,110.149
0,1,5714.679,0.318,0.404,98.197,82.491,180.689,1.885,182.574
0,4,5793.839,0.314,0.382,30.597,81.38,111.978,1.234,113.212
0,7,5775.948,0.332,0.413,51.577,84.088,135.665,0.377,136.043
0,3,5830.686,0.955,1.072,11.735,81.606,93.341,1.701,95.043
0,9,5851.02,0.333,0.414,18.739,81.701,100.441,1.33,101.771
0,2,5875.109,0.396,0.478,15.164,81.893,97.058,1.217,98.275
0,5,5781.659,0.318,0.386,119.27,83.15,202.42,0.376,202.797
0,7,5911.998,0.339,0.418,11.726,82.093,93.82,1.495,95.315
0,3,5925.738,0.447,0.516,21.925,79.87,101.795,0.344,102.14
0,0,5842.488,0.338,0.409,124.073,81.734,205.807,2.047,207.855
0,6,5779.654,0.326,0.406,188.882,82.945,271.828,0.958,272.786
0,1,5897.261,0.301,0.377,74.047,81.4,155.448,0.967,156.415
0,8,5846.539,0.337,0.429,140.2,79.976,220.176,2.328,222.505
0,9,5952.801,0.344,0.421,54.536,79.755,134.291,1.41,135.702
0,7,6007.318,0.522,0.618,14.816,79.956,94.772,16.419,111.192
0,2,5973.394,0.518,0.592,60.307,84.753,145.06,0.75,145.81
0,5,5984.463,0.449,0.524,50.467,84.478,134.945,1.93,136.876
0,4,5907.056,0.402,0.484,129.229,84.9,214.129,1.722,215.851
0,3,6027.888,0.42,0.494,39.048,80.015,119.064,1.978,121.042
0,0,6050.355,1.316,1.485,29.107,82.111,111.218,1.742,112.96
0,1,6053.684,0.311,0.379,47.288,81.844,129.132,1.182,130.315
0,6,6052.444,0.503,0.615,67.027,81.05,148.077,1.152,149.229
0,5,6121.346,0.337,0.446,23.684,78.068,101.752,2.019,103.772
0,8,6069.053,0.397,0.478,79.682,79.537,159.219,1.582,160.802
0,9,6088.518,0.344,0.419,65.681,81.3,146.982,13.495,160.477
0,7,6118.543,0.547,0.608,50.691,81.862,132.554,0.377,132.931
0,3,6148.938,0.351,0.416,38.998,82.443,121.442,10.62,132.062
0,1,6184.009,0.625,0.847,30.097,79.57,109.667,2.015,111.682
0,4,6122.915,0.478,0.554,133.957,92.839,226.796,1.7,228.497
0,2,6119.207,0.42,0.468,136.749,95.595,232.345,3.165,235.51
0,5,6225.127,0.307,0.389,30.625,98.714,129.339,0.471,129.811
0,8,6229.86,0.669,0.746,51.831,97.397,149.228,1.67,150.898
0,6,6201.683,0.393,0.475,85.686,96.242,181.928,5.483,187.412
0,9,6249.004,0.394,0.467,68.533,82.42,150.954,0.531,151.485
0,0,6163.324,0.47,0.577,154.586,83.082,237.668,12.538,250.207
0,7,6251.483,0.329,0.409,71.341,90.405,161.747,0.44,162.188
0,3,6281.008,0.413,0.572,45.589,86.798,132.388,1.088,133.476
0,1,6295.702,0.418,0.499,51.953,79.591,131.545,1.322,132.867
0,4,6351.453,0.526,0.622,1.002,79.648,80.651,2.773,83.424
0,2,6354.728,0.554,0.647,34.466,80.677,115.143,0.939,116.083
0,5,6354.95,0.507,0.659,65.208,80.513,145.721,4.54,150.262
0,6,6389.103,0.371,0.453,31.17,84.714,115.884,0.492,116.376
0,0,6413.542,0.446,0.573,10.238,84.236,94.475,0.223,94.699
0,1,6428.577,0.312,0.401,27.804,81.855,109.659,1.676,111.336
0,7,6413.677,0.485,0.6,45.942,80.918,126.86,2.002,128.863
0,2,6470.818,0.322,0.4,18.925,81.521,100.446,0.952,101.399
0,4,6434.885,0.367,0.43,63.441,84.026,147.468,2.273,149.741
0,0,6508.249,0.291,0.367,14.539,80.234,94.774,2.012,96.787
0,9,6400.496,0.321,0.422,124.092,86.419,210.512,2.121,212.633
0,6,6505.483,0.332,0.395,50.891,82.623,133.515,2.367,135.883
0,5,6505.215,0.47,0.546,66.876,80.667,147.543,1.659,149.202
0,2,6572.224,0.316,0.376,17.54,84.437,101.978,0.329,102.308
0,4,6584.634,0.383,0.482,15.541,81.204,96.746,1.192,97.939
0,9,6613.139,0.441,0.554,10.492,79.826,90.318,1.596,91.915
0,7,6542.547,0.337,0.417,113.17,80.125,193.295,1.239,194.535
0,0,6605.043,0.334,0.415,57.477,82.496,139.973,1.355,141.329
0,3,6414.491,0.775,0.919,247.767,84.12,331.888,2.017,333.905
0,8,6380.768,0.437,0.526,281.598,85.832,367.431,0.649,368.081
0,5,6654.422,0.74,0.895,7.715,86.517,94.233,1.298,95.531
0,1,6539.923,0.391,0.483,149.274,83.239,232.513,2.996,235.509
0,4,6682.579,0.336,0.416,6.481,86.19,92.672,10.253,102.925
0,6,6641.381,0.317,0.393,59.657,84.226,143.884,0.521,144.405
0,9,6705.064,0.411,0.478,19.864,80.4,100.264,1.428,101.693
0,2,6674.542,0.419,0.494,53.331,81.556,134.888,1.243,136.131
0,7,6737.093,0.433,0.512,18.865,80.421,99.287,0.362,99.649
0,8,6748.856,0.377,0.434,17.681,84.385,102.067,0.776,102.843
0,6,6785.795,0.516,0.607,9.629,79.503,89.133,2.355,91.488
0,5,6749.962,0.412,0.48,73.922,79.8,153.722,1.568,155.291
0,0,6746.38,0.315,0.39,110.351,80.636,190.987,1.112,192.1
0,7,6836.754,0.55,0.613,24.537,80.93,105.467,2.694,108.162
0,8,6851.707,0.33,0.393,20.472,81.812,102.285,1.242,103.527
0,6,6877.293,0.396,0.464,12.523,81.162,93.686,1.659,95.345
0,4,6785.508,0.589,0.692,115.734,86.656,202.391,0.733,203.124
0,1,6775.441,0.33,0.414,130.532,83.319,213.851,1.687,215.538
0,9,6806.765,0.34,0.423,99.015,85.013,184.029,3.078,187.108
0,3,6748.406,0.486,0.618,174.309,81.219,255.529,4.272,259.801
0,5,6905.264,0.568,0.647,23.753,80.364,104.118,0.631,104.749
0,8,6955.243,0.326,0.406,2.524,80.645,83.169,0.755,83.925
0,0,6938.49,0.461,0.541,27.562,81.761,109.323,1.228,110.552
0,2,6810.68,0.93,1.1,197.267,80.838,278.105,1.271,279.376
0,7,6944.924,0.37,0.455,63.266,82.346,145.613,1.637,147.251
0,4,6988.643,0.466,0.606,34.89,83.461,118.352,3.998,122.35
0,3,7008.212,0.533,0.621,66.77,79.833,146.603,1.377,147.98
0,0,7049.053,0.377,0.459,25.731,82.163,107.895,1.657,109.553
0,6,6972.667,0.354,0.428,119.457,80.472,199.93,0.336,200.266
0,7,7092.184,0.337,0.406,4.213,82.36,86.573,1.179,87.752
0,9,6993.88,0.439,0.511,110.675,82.611,193.287,1.277,194.564
0,1,6990.987,0.309,0.389,131.279,80.628,211.907,1.199,213.107
0,8,7039.181,1.011,1.109,91.879,83.571,175.451,1.855,177.306
0,2,7090.066,0.356,0.455,51.305,82.594,133.899,1.56,135.459
0,4,7111.004,0.415,0.497,30.584,84.877,115.461,1.764,117.225
0,5,7010.022,0.464,0.541,141.61,82.79,224.4,2.016,226.417
0,0,7158.615,0.364,0.442,4.359,80.082,84.441,1.28,85.722
0,6,7172.942,0.521,0.598,26.196,79.661,105.858,1.066,106.924
0,3,7156.204,0.42,0.502,53.726,79.747,133.473,1.584,135.058
0,1,7204.101,0.331,0.416,26.093,81.632,107.725,2,109.726
0,0,7244.345,0.32,0.398,21.466,80.972,102.438,1.166,103.605
0,5,7236.446,0.493,0.55,41.039,79.52,120.56,2.102,122.662
0,9,7188.454,0.601,0.747,110.165,80.817,190.983,0.996,191.979
0,8,7216.494,0.341,0.427,81.98,80.888,162.869,2.197,165.067
0,7,7179.945,0.403,0.485,119.842,81.613,201.455,0.476,201.931
0,2,7225.536,0.484,0.582,74.136,81.65,155.786,1.136,156.923
0,1,7313.837,0.452,0.567,18.595,83.189,101.784,2.503,104.288
0,6,7279.875,0.328,0.411,61.184,81.339,142.524,2.233,144.757
0,5,7359.116,0.325,0.402,6.764,82.524,89.288,1.53,90.819
0,4,7228.237,0.716,0.876,138.937,84.177,223.115,0.301,223.416
0,7,7381.883,0.288,0.383,22.346,80.881,103.228,1.238,104.466
0,3,7291.272,0.443,0.52,113.137,81.756,194.893,1.745,196.639
0,8,7381.568,0.403,0.472,54.796,80.499,135.296,0.451,135.748
0,0,7347.958,0.324,0.405,118.366,81.119,199.485,1.507,200.992
0,9,7380.444,0.554,0.68,93.055,79.533,172.588,1.514,174.103
0,4,7451.66,0.316,0.384,22.329,80.797,103.127,2.351,105.478
0,3,7487.919,0.325,0.403,15.077,82.38,97.457,17.729,115.187
0,1,7418.133,0.432,0.498,97.07,87.573,184.644,0.619,185.263
0,8,7517.326,0.441,0.512,15.017,86.247,101.265,0.225,101.49
0,6,7424.648,0.311,0.394,113.912,82.157,196.07,0.29,196.361
0,5,7449.946,0.966,1.145,91.384,80.285,171.67,1.546,173.216
0,2,7382.465,0.311,0.368,155.965,84.581,240.547,6.505,247.052
0,7,7486.358,0.32,0.403,62.472,82.007,144.479,5.539,150.018
0,4,7557.146,0.366,0.452,15.698,80.87,96.568,13.833,110.402
0,0,7548.957,0.315,0.408,53.927,80.333,134.26,1.998,136.259
0,9,7554.554,0.424,0.512,48.698,81.789,130.488,2.084,132.572
0,3,7603.119,0.564,0.632,66.287,80.673,146.961,1.472,148.433
0,6,7621.016,0.287,0.361,50.611,79.755,130.366,2.06,132.427
0,1,7603.404,0.35,0.44,71.549,81.794,153.343,1.394,154.737
0,7,7636.385,0.328,0.393,38.377,83.192,121.569,7.821,129.391
0,8,7618.824,0.315,0.391,58.371,88.394,146.766,0.268,147.034
0,4,7667.559,0.458,0.544,41.885,80.925,122.811,2.257,125.068
0,0,7685.224,0.379,0.462,51.5,85.236,136.737,1.835,138.572
0,5,7623.17,0.345,0.429,113.716,86.773,200.489,2.099,202.589
0,9,7687.135,0.365,0.44,55.114,83.348,138.463,1.93,140.394
0,2,7629.525,0.75,0.881,112.85,84.984,197.834,1.481,199.316
0,6,7753.451,0.348,0.443,19.425,81.92,101.345,0.235,101.581
0,8,7765.861,0.295,0.382,42.989,83.301,126.291,0.309,126.6
0,3,7751.56,0.371,0.447,57.895,83.908,141.804,1.772,143.577
0,1,7758.148,0.305,0.375,61.756,83.904,145.661,0.303,145.964
0,4,7792.635,0.385,0.467,48.907,82.184,131.091,1.903,132.995
0,7,7765.787,0.508,0.598,82.233,80.202,162.436,0.937,163.373
0,5,7825.768,0.352,0.433,48.817,83.915,132.733,1.856,134.59
0,0,7823.804,0.347,0.42,81.14,78.737,159.878,2.87,162.748
0,3,7895.144,0.324,0.404,19.162,79.062,98.225,1.353,99.579
0,1,7904.124,0.531,0.75,44.278,80.547,124.825,2.869,127.694
0,7,7929.169,0.305,0.4,22.345,80.727,103.073,0.274,103.347
0,9,7827.535,0.315,0.398,125.914,79.985,205.899,1.407,207.306
0,4,7925.637,0.295,0.37,55.306,79.662,134.969,1.413,136.382
0,6,7855.04,0.348,0.424,129.077,82.84,211.917,1.083,213
0,2,7828.844,0.332,0.377,154.911,84.522,239.433,0.778,240.211
0,8,7892.473,0.449,0.525,91.578,85.603,177.182,9.727,186.909
0,5,7960.366,0.389,0.468,55.094,82.706,137.801,1.851,139.652
0,3,7994.732,0.337,0.41,22.79,83.043,105.834,1.32,107.154
0,7,8032.525,0.351,0.425,16.842,80.964,97.806,3.531,101.338
0,0,7986.561,0.295,0.37,65.496,81.656,147.152,1.49,148.643
0,9,8034.848,0.327,0.409,49.351,81.008,130.359,9.179,139.539
0,4,8062.031,0.837,1.09,46.288,82.287,128.575,3.955,132.531
0,5,8100.03,0.389,0.486,18.157,82.12,100.278,2.442,102.72
0,1,8031.827,0.478,0.608,96.665,82.449,179.114,1.973,181.087
0,2,8069.062,0.342,0.407,85.309,81.496,166.805,0.329,167.135
0,9,8174.399,0.474,0.569,11.749,83.111,94.861,1.975,96.836
0,3,8101.893,0.317,0.394,85.135,84.047,169.183,2.215,171.398
0,8,8079.389,0.343,0.409,114.95,81.574,196.524,0.902,197.427
0,1,8212.925,0.393,0.494,5.508,81.466,86.974,2.467,89.442
0,6,8068.049,0.4,0.476,153.286,83.743,237.03,1.172,238.202
0,4,8194.572,0.388,0.455,46.45,82.449,128.899,3.487,132.387
0,7,8133.87,0.316,0.402,127.895,81.295,209.19,0.378,209.569
0,0,8135.211,0.37,0.49,149.827,95.401,245.228,0.525,245.753
0,5,8202.758,0.299,0.378,83.997,93.829,177.826,0.433,178.259
0,2,8236.206,0.419,0.527,47.407,97.117,144.525,0.519,145.044
0,6,8306.259,0.336,0.413,3.622,81.754,85.377,3.954,89.331
0,9,8271.247,0.468,1.138,48.801,82.285,131.086,5.775,136.861
0,7,8343.45,0.445,0.55,7.533,83.535,91.069,12.373,103.442
0,1,8302.377,0.352,0.429,54.306,89.95,144.257,1.044,145.301
0,8,8276.825,0.397,0.494,104.45,87.657,192.107,1.003,193.111
0,3,8273.295,0.582,0.657,107.827,88.457,196.284,0.432,196.717
0,4,8326.967,0.382,0.454,55.066,88.862,143.928,3.529,147.457
0,9,8408.118,0.387,0.47,10.387,81.323,91.711,2.096,93.808
0,5,8381.02,0.737,0.809,72.154,82.173,154.327,2.08,156.408
0,6,8395.599,0.31,0.381,60.746,88.193,148.94,0.223,149.163
0,1,8447.686,0.287,0.348,15.042,82.895,97.937,3.174,101.111
0,0,8380.969,0.55,0.685,84.005,88.633,172.638,1.193,173.831
0,4,8474.432,0.295,0.375,10.992,87.808,98.8,15.063,113.864
0,8,8469.946,0.996,1.127,55.763,87.871,143.635,0.35,143.985
0,0,8554.808,0.306,0.389,4.062,97.274,101.336,1.629,102.966
0,9,8501.936,0.364,0.441,57.994,97.65,155.644,0.333,155.977
0,5,8537.438,0.409,0.487,24.686,95.581,120.268,0.765,121.034
0,7,8446.903,0.418,0.538,166.93,82.688,249.618,12.816,262.434
0,3,8470.014,1.107,1.204,144.07,95.186,239.257,0.458,239.715
0,1,8548.805,0.291,0.366,65.599,95.008,160.607,1.759,162.367
0,2,8381.252,0.64,0.703,232.706,95.11,327.816,2.124,329.941
0,4,8588.308,0.451,0.53,47.676,81.686,129.363,19.95,149.313
0,6,8544.77,0.425,0.514,94.256,98.361,192.617,1.175,193.793
0,8,8613.935,0.482,0.648,66.74,79.822,146.562,13.637,160.199
0,5,8658.478,0.364,0.461,23.727,91.555,115.283,0.678,115.961
0,0,8657.783,0.359,0.437,29.469,86.909,116.378,1.615,117.994
0,9,8657.92,0.434,0.494,52.377,80.121,132.499,2.162,134.661
0,7,8709.341,1.143,1.286,2.176,84.412,86.589,18.531,105.121
0,0,8775.784,0.34,0.447,2.582,677.582,680.165,1.972,682.138
0,4,8737.632,0.477,0.553,40.936,679.191,720.127,46.877,767.005
0,1,8711.177,0.458,0.532,46.203,746.914,793.118,0.676,793.795
0,2,8711.197,0.549,0.614,36.637,756.865,793.503,0.62,794.123
0,3,8709.732,0.968,1.401,729.574,148.167,877.741,1.855,879.597
0,9,8792.592,0.382,0.461,647.063,212.999,860.063,2.327,862.391
0,5,8774.449,0.442,0.497,665.322,278.888,944.21,1.71,945.921
0,8,8774.139,0.542,0.675,666.023,348.013,1014.037,3.225,1017.262
0,7,8814.472,0.42,0.499,625.747,350.894,976.641,1.077,977.719
0,3,9589.338,0.74,0.84,52.156,212.561,264.717,1.988,266.706
0,1,9504.98,0.395,0.478,199.746,152.4,352.146,1.436,353.583
0,2,9505.326,0.369,0.408,200.027,212.787,412.815,0.346,413.162
0,5,9720.381,0.408,0.468,50.974,150.027,201.002,0.889,201.892
0,9,9654.994,0.436,0.496,119.325,206.595,325.92,1.9,327.82
0,7,9792.196,0.259,0.853,45.479,147.983,193.463,1.292,194.756
0,8,9791.412,0.416,0.474,47.556,209.663,257.22,1.399,258.62
0,1,9858.571,0.332,0.388,47.169,146.521,193.691,1.358,195.049
0,6,8738.566,0.293,0.349,1167.354,156.58,1323.935,0.934,1324.869
0,5,9922.281,0.382,0.438,49.221,145.247,194.469,1.392,195.862
0,7,9986.962,0.364,0.42,47.021,150.528,197.549,1.334,198.884
0,0,9457.939,0.316,0.395,578.457,150.278,728.735,1.254,729.99
0,9,9982.825,0.43,0.5,64.168,199.563,263.731,0.345,264.077
0,3,9856.054,0.416,0.472,247.039,147.388,394.428,1.72,396.148
0,4,9504.641,0.548,0.619,664.554,141.019,805.573,1.417,806.991
0,2,9918.499,0.404,0.459,250.86,142.241,393.101,1.155,394.257
1 A B C D E F G H I J
2 0 0 0.5 217.371 217.658 218.002 269.445 487.447 2.106 489.554
3 0 0 490.077 0.657 0.84 1.588 121.092 122.681 2.185 124.867
4 0 9 490.077 1.602 1.676 1.977 184.155 186.132 1.198 187.331
5 0 6 490.384 1.787 1.962 2.451 270.592 273.044 4.158 277.202
6 0 5 491.125 0.693 0.877 1.9 295.589 297.49 19.456 316.946
7 0 8 491.348 1.833 1.924 66.432 250.035 316.467 2.379 318.847
8 0 0 614.955 0.455 0.507 8.554 229.261 237.815 15.761 253.577
9 0 9 677.418 0.493 0.546 14.288 176.628 190.917 6.522 197.44
10 0 3 491.864 1.034 1.109 250.552 132.254 382.806 2.485 385.291
11 0 2 491.351 1.763 1.807 276.239 122.283 398.523 26.436 424.96
12 0 4 490.154 1.867 1.935 341.544 86.243 427.787 15.659 443.447
13 0 8 810.203 0.381 0.453 21.4 101.836 123.236 9.01 132.246
14 0 6 767.595 0.54 0.592 68.928 105.705 174.633 0.93 175.564
15 0 0 868.54 0.384 0.483 8.721 82.83 91.552 37.154 128.706
16 0 9 874.866 0.472 0.574 41.728 80.617 122.345 11.14 133.486
17 0 1 490.757 2.284 2.336 426.145 91.084 517.229 0.507 517.736
18 0 7 490.755 1.652 1.816 426.521 90.913 517.435 2.244 519.679
19 0 6 943.165 0.324 0.391 2.676 116.421 119.098 0.452 119.551
20 0 2 916.32 0.609 0.884 81.097 83.55 164.647 1.342 165.989
21 0 8 942.462 0.374 0.464 55.682 84.915 140.597 46.844 187.442
22 0 4 933.61 0.377 0.451 64.784 131.147 195.932 9.997 205.929
23 0 5 808.083 0.565 0.641 190.27 140.808 331.078 0.465 331.543
24 0 3 877.165 0.47 0.546 121.153 141.078 262.231 2.558 264.789
25 0 7 1010.442 0.372 0.441 2.201 129.116 131.318 7.148 138.467
26 0 6 1062.725 0.483 0.581 6.402 80.848 87.251 45.416 132.668
27 0 1 1008.502 1.579 1.706 65.348 121.324 186.672 1.251 187.924
28 0 0 997.256 0.402 0.832 76.472 121.367 197.839 18.513 216.353
29 0 9 1008.364 1.428 1.582 70.936 133.941 204.878 2.255 207.133
30 0 8 1129.916 0.458 0.551 19.07 113.216 132.287 0.38 132.667
31 0 4 1139.547 0.388 0.457 9.775 113.036 122.812 1.531 124.343
32 0 2 1082.318 0.352 0.43 67.775 112.768 180.543 22.578 203.122
33 0 5 1139.629 0.416 0.466 10.429 135.269 145.699 2.425 148.124
34 0 3 1141.962 0.394 0.472 53.375 92.295 145.67 0.212 145.883
35 0 0 1213.618 0.408 0.481 2.655 112.525 115.18 0.547 115.728
36 0 9 1215.504 0.427 0.672 2.233 111.382 113.615 1.145 114.761
37 0 6 1195.403 0.437 0.511 25.098 109.564 134.662 22.852 157.515
38 0 7 1148.919 0.486 1.021 138.981 91.884 230.865 16.504 247.369
39 0 4 1263.894 0.711 0.788 33.761 98.396 132.158 0.671 132.83
40 0 1 1196.433 0.301 0.364 100.757 99.252 200.01 1.116 201.126
41 0 8 1262.594 0.964 1.248 66.394 96.747 163.141 1.173 164.315
42 0 2 1285.445 0.209 0.254 43.808 97.338 141.146 0.548 141.694
43 0 9 1330.271 0.288 0.355 35.329 84.511 119.84 16.98 136.821
44 0 6 1352.928 0.474 0.579 12.904 100.981 113.886 0.517 114.403
45 0 0 1329.353 0.294 0.366 36.781 100.857 137.638 0.532 138.171
46 0 2 1427.143 0.532 0.58 9.336 79.756 89.093 1.239 90.332
47 0 4 1396.736 0.503 0.592 44.925 80.622 125.548 10.972 136.52
48 0 8 1426.921 0.631 0.71 15.906 90.068 105.975 1.38 107.356
49 0 5 1287.759 0.278 0.316 181.454 80.529 261.984 10.774 272.759
50 0 1 1397.566 0.268 0.324 99.635 82.55 182.186 8.445 190.632
51 0 0 1467.53 1.354 1.536 33.298 87.09 120.388 0.517 120.905
52 0 7 1396.3 0.593 0.684 104.729 87.108 191.838 1.133 192.971
53 0 9 1467.103 1.422 1.546 42.719 82.771 125.491 9.398 134.89
54 0 3 1287.85 0.245 0.272 248.437 79.849 328.286 9.318 337.605
55 0 6 1467.339 0.933 1.132 69.074 88.797 157.871 0.891 158.762
56 0 4 1533.267 0.449 0.548 42.003 81.379 123.383 9.108 132.491
57 0 2 1517.483 0.32 0.399 56.455 91.585 148.04 0.44 148.48
58 0 8 1534.284 0.425 0.48 39.738 91.427 131.166 1.247 132.413
59 0 5 1560.528 0.396 0.499 19.318 86.69 106.008 1.54 107.548
60 0 6 1626.109 0.34 0.43 6.88 82.575 89.455 0.568 90.023
61 0 1 1588.231 0.451 0.541 44.902 84.635 129.537 24.285 153.823
62 0 7 1589.279 0.288 0.352 57.597 94.892 152.489 0.555 153.044
63 0 9 1602.002 0.424 0.68 45.095 94.862 139.957 0.797 140.755
64 0 5 1668.084 0.29 0.351 29.143 84.196 113.34 26.201 139.542
65 0 4 1665.766 0.373 0.457 34.457 107.029 141.486 0.715 142.201
66 0 2 1665.971 0.303 0.375 47.175 94.572 141.748 0.861 142.609
67 0 0 1588.445 0.517 0.625 154.081 80.415 234.496 7.112 241.608
68 0 3 1625.463 0.647 0.751 143.666 83.075 226.742 21.951 248.694
69 0 7 1742.325 0.53 0.624 25.438 84.393 109.831 22.061 131.893
70 0 1 1742.079 0.555 0.659 34.769 97.152 131.921 0.364 132.286
71 0 8 1666.705 0.883 1.046 113.237 94.162 207.4 1.118 208.519
72 0 2 1808.586 0.3 0.362 21.568 78.537 100.106 1.979 102.085
73 0 0 1830.064 0.405 0.481 7.114 81.532 88.647 2.392 91.04
74 0 6 1716.143 0.49 0.557 121.371 87.089 208.46 14.395 222.856
75 0 5 1807.634 0.442 0.527 36.463 94.602 131.065 1.369 132.434
76 0 8 1875.228 0.164 0.198 3.582 79.597 83.179 1.504 84.684
77 0 1 1874.367 0.562 0.645 28.304 79.054 107.358 0.456 107.815
78 0 4 1807.975 0.4 0.482 99.4 81.109 180.509 1.133 181.643
79 0 9 1742.773 0.339 0.39 168.948 80.077 249.025 2.367 251.393
80 0 3 1874.166 0.495 0.593 38.988 84.602 123.59 7.982 131.572
81 0 8 1959.921 0.415 0.494 9.861 82.855 92.717 2.765 95.483
82 0 2 1910.682 0.995 1.109 69.161 85.346 154.507 1.625 156.133
83 0 0 1921.114 0.394 0.473 92.984 80.599 173.584 1.153 174.738
84 0 3 2005.748 0.476 0.556 7.441 83.841 91.283 1.422 92.705
85 0 5 1940.076 0.325 0.401 73.91 84.342 158.253 1.718 159.972
86 0 7 1874.22 0.557 0.642 140.027 91.031 231.059 1.754 232.814
87 0 6 1939.008 0.377 0.455 95.473 81.569 177.042 1.072 178.115
88 0 4 1989.626 0.314 0.388 51.23 81.724 132.955 11.694 144.65
89 0 9 1994.183 0.321 0.394 57.158 82.743 139.902 0.758 140.66
90 0 2 2066.819 0.204 0.259 13.808 84.448 98.256 1.366 99.623
91 0 1 1982.189 0.295 0.368 99.448 85.395 184.843 1.56 186.403
92 0 8 2055.408 0.203 0.253 51.567 82.101 133.668 1.073 134.741
93 0 9 2134.846 0.25 0.306 16.106 85.649 101.755 0.176 101.931
94 0 1 2168.598 0.229 0.302 6.826 81.481 88.307 1.143 89.45
95 0 4 2134.304 0.373 0.492 45.962 81.137 127.099 0.549 127.648
96 0 7 2107.039 0.483 0.555 73.813 81.641 155.455 1.562 157.017
97 0 6 2117.128 0.208 0.255 63.776 83.028 146.805 1.656 148.461
98 0 8 2190.154 0.225 0.285 29.098 80.996 110.094 1.344 111.439
99 0 9 2236.784 0.256 0.32 4.01 82.88 86.89 2.12 89.011
100 0 2 2166.449 0.317 0.395 80.763 84.208 164.971 2.32 167.291
101 0 5 2100.052 0.294 0.365 146.743 86.973 233.716 0.672 234.389
102 0 3 2098.458 0.241 0.3 150.5 84.733 235.234 1.292 236.526
103 0 0 2095.857 0.215 0.271 153.005 85.917 238.923 0.534 239.458
104 0 6 2265.593 0.182 0.218 20.159 80.738 100.897 1.449 102.347
105 0 4 2261.957 0.207 0.256 42.386 82.309 124.696 1.433 126.13
106 0 7 2264.061 0.243 0.288 51.339 80.631 131.97 0.973 132.943
107 0 8 2301.604 0.391 0.474 24.05 81.886 105.937 1.805 107.743
108 0 1 2258.053 0.206 0.26 93.644 81.876 175.52 1.331 176.852
109 0 0 2335.321 0.204 0.245 21.603 81.849 103.452 0.941 104.394
110 0 6 2367.949 0.434 0.515 6.274 83.161 89.435 4.495 93.931
111 0 3 2334.991 0.332 0.403 58.507 88.463 146.971 1.116 148.088
112 0 8 2409.356 0.385 0.463 13.78 83.24 97.02 0.344 97.364
113 0 5 2334.448 0.364 0.451 106.034 82.488 188.523 1.39 189.914
114 0 9 2325.809 0.429 0.506 114.736 84.279 199.015 1.209 200.225
115 0 2 2333.745 0.423 0.517 106.853 85.698 192.551 1.745 194.296
116 0 4 2388.097 0.399 0.498 67.532 84.096 151.628 0.599 152.228
117 0 3 2483.086 0.35 0.427 19.21 81.612 100.822 3.51 104.333
118 0 1 2434.913 0.435 0.577 86.727 83.002 169.729 1.902 171.632
119 0 7 2397.012 0.331 0.416 142.874 80.866 223.74 1.672 225.413
120 0 6 2461.891 0.36 0.441 78.194 82.238 160.433 0.613 161.046
121 0 9 2526.038 0.665 0.74 32.614 86.809 119.423 1.275 120.699
122 0 4 2540.332 0.326 0.387 42.093 80.618 122.711 2.268 124.979
123 0 8 2506.727 0.378 0.456 99.838 79.225 179.064 0.294 179.358
124 0 6 2622.939 0.33 0.385 1.186 81.73 82.917 2.248 85.165
125 0 3 2587.429 0.61 0.72 59.939 82.437 142.376 0.97 143.346
126 0 1 2606.549 0.391 0.459 40.636 83.436 124.072 2.096 126.169
127 0 7 2622.432 0.383 0.463 30.735 80.765 111.501 0.733 112.234
128 0 2 2528.046 0.199 0.244 128.905 85.696 214.602 0.334 214.936
129 0 4 2665.318 0.312 0.399 26.866 81.414 108.281 0.222 108.504
130 0 5 2524.369 0.329 0.413 167.907 84.934 252.841 1.305 254.147
131 0 8 2686.096 0.401 0.494 7.747 85.181 92.928 2.125 95.053
132 0 0 2439.722 0.357 0.696 254.259 89.099 343.358 2.809 346.167
133 0 9 2646.75 0.681 0.799 73.064 84.639 157.704 3.532 161.236
134 0 6 2708.115 0.4 0.481 14.501 86.758 101.259 0.934 102.194
135 0 3 2730.783 0.303 0.377 35.013 88.845 123.858 1.666 125.524
136 0 1 2732.726 0.318 0.414 53.138 78.873 132.011 0.237 132.249
137 0 0 2785.893 0.375 0.447 25.451 83.295 108.746 4.165 112.911
138 0 9 2807.993 0.31 0.384 35.981 91.657 127.639 0.466 128.106
139 0 2 2742.992 0.403 0.56 101.119 91.707 192.827 5.458 198.285
140 0 8 2781.157 0.365 0.446 70.781 90.886 161.667 0.817 162.484
141 0 1 2864.982 0.311 0.402 19.474 86.691 106.165 3.435 109.601
142 0 3 2856.319 0.429 0.493 54.672 82.88 137.553 0.33 137.884
143 0 5 2778.523 0.309 0.392 132.818 84.58 217.399 1.527 218.927
144 0 0 2898.815 0.362 0.463 12.416 86.002 98.418 1.107 99.525
145 0 7 2734.674 0.744 0.873 195.477 83.728 279.205 7.848 287.053
146 0 4 2773.831 0.339 0.428 156.128 91.457 247.585 1.311 248.897
147 0 6 2810.317 0.339 0.432 125.657 102.335 227.993 2.034 230.027
148 0 2 2941.285 0.294 0.367 38.02 79.84 117.86 1.696 119.556
149 0 8 2943.648 0.293 0.373 38.288 79.728 118.016 2.042 120.058
150 0 9 2936.108 0.466 0.563 63.933 82.084 146.017 1.602 147.619
151 0 4 3022.735 0.269 0.339 3.697 87.616 91.313 0.516 91.83
152 0 3 2994.213 0.418 0.495 42.946 81.806 124.752 0.29 125.043
153 0 1 2974.591 0.641 0.762 72.809 81.187 153.997 1.512 155.51
154 0 9 3083.737 0.352 0.425 15.144 84.807 99.951 1.383 101.335
155 0 6 3040.353 0.399 0.48 61.605 83.294 144.899 9.906 154.806
156 0 2 3060.852 0.407 0.487 40.928 92.521 133.449 0.893 134.342
157 0 0 2998.348 0.336 0.417 115.561 82.329 197.89 2.808 200.698
158 0 8 3063.714 0.314 0.391 50.53 84.619 135.15 28.56 163.71
159 0 1 3130.111 0.381 0.484 36.604 82.182 118.787 1.306 120.094
160 0 5 2997.458 0.349 0.427 169.477 83.501 252.978 2.447 255.425
161 0 7 3021.738 0.425 0.518 148.774 83.974 232.748 0.411 233.16
162 0 3 3119.263 0.315 0.392 50.462 85 135.463 4.92 140.383
163 0 4 3114.576 0.397 0.465 66.492 81.543 148.035 1.216 149.251
164 0 9 3185.086 0.49 0.563 0.843 79.106 79.95 28.271 108.222
165 0 6 3195.164 0.659 0.878 41.861 81.999 123.86 0.305 124.166
166 0 8 3227.436 0.588 0.685 13.471 80.559 94.03 0.675 94.705
167 0 0 3199.056 0.344 0.417 55.856 81.147 137.003 2.313 139.317
168 0 2 3195.197 0.89 0.993 59.866 83.95 143.817 2.518 146.336
169 0 1 3250.212 0.555 0.641 53.457 80.43 133.887 1.541 135.428
170 0 5 3252.89 0.347 0.424 55.768 81.876 137.644 2.326 139.971
171 0 9 3293.317 0.516 0.622 39.115 78.826 117.941 1.674 119.615
172 0 2 3341.541 0.379 0.456 26.056 81.181 107.238 1.453 108.691
173 0 4 3263.836 0.304 0.385 109.176 79.223 188.399 1.336 189.736
174 0 6 3319.341 0.424 0.509 52.086 83.572 135.658 1.93 137.589
175 0 3 3259.654 0.318 0.4 115.781 84.483 200.264 2.851 203.116
176 0 9 3412.942 0.36 0.432 19.904 83.186 103.091 0.294 103.386
177 0 5 3392.869 0.364 0.438 46.674 81.708 128.382 2.336 130.718
178 0 7 3254.902 0.434 0.504 184.8 83.725 268.526 1.536 270.063
179 0 0 3338.38 0.334 0.412 104.769 84.635 189.405 0.579 189.984
180 0 8 3322.15 0.363 0.429 120.337 85.709 206.047 1.064 207.111
181 0 3 3462.777 0.285 0.363 32.857 78.802 111.659 3.064 114.724
182 0 2 3450.24 0.329 0.416 53.507 82.338 135.845 0.291 136.137
183 0 1 3385.654 0.404 0.479 125.574 82.017 207.591 1.116 208.708
184 0 6 3456.937 0.306 0.374 58.496 80.921 139.418 1.87 141.288
185 0 4 3453.579 0.31 0.387 61.685 82.969 144.655 1.418 146.073
186 0 8 3529.268 0.324 0.408 31.325 78.86 110.186 1.213 111.4
187 0 5 3523.596 0.334 0.417 39.494 83.382 122.877 0.347 123.225
188 0 7 3524.971 0.36 0.472 47.432 80.801 128.234 0.953 129.187
189 0 4 3599.659 0.319 0.398 27.195 80.69 107.885 1.895 109.781
190 0 3 3577.512 0.571 0.652 51.889 82.948 134.837 1.141 135.979
191 0 1 3594.371 0.341 0.422 42.685 81.099 123.785 1.473 125.259
192 0 7 3654.167 0.306 0.383 15.528 81.986 97.515 2.405 99.92
193 0 9 3516.338 0.397 0.472 178.897 79.745 258.642 2.238 260.881
194 0 2 3586.389 1.185 1.333 109.11 81.551 190.661 2.03 192.692
195 0 5 3646.833 0.424 0.488 56.484 81.305 137.789 1.209 138.999
196 0 0 3528.372 0.397 0.487 176.378 80.819 257.198 0.746 257.944
197 0 6 3598.234 0.336 0.428 102.676 85.142 187.818 1.845 189.664
198 0 8 3640.677 0.476 0.58 83.915 81.6 165.515 12.681 178.196
199 0 4 3709.449 0.415 0.495 25.988 83.141 109.13 1.996 111.126
200 0 3 3713.499 0.322 0.402 55.534 81.807 137.341 0.906 138.248
201 0 0 3786.324 0.919 1.147 3.983 80.348 84.331 1.885 86.217
202 0 7 3754.097 0.438 0.543 36.421 81.782 118.204 1.217 119.421
203 0 9 3777.227 0.339 0.419 18.041 81.599 99.641 2.512 102.154
204 0 1 3719.638 0.353 0.419 112.793 82.398 195.191 1.433 196.624
205 0 4 3820.583 0.299 0.38 14.112 83.485 97.598 1.551 99.149
206 0 6 3787.905 0.358 0.44 49.391 82.265 131.656 1.218 132.874
207 0 2 3779.087 0.323 0.402 81.512 79.373 160.885 3.793 164.679
208 0 5 3785.843 1.116 1.253 82.986 77.901 160.888 1.176 162.064
209 0 8 3818.882 0.383 0.46 80.581 80.539 161.121 2.24 163.361
210 0 9 3879.424 0.314 0.394 21.002 81.687 102.689 1.579 104.268
211 0 6 3920.787 0.287 0.38 3.32 80.808 84.129 2.54 86.669
212 0 7 3873.527 0.371 0.436 60.962 79.343 140.305 1.693 141.998
213 0 5 3947.917 0.324 0.401 18.55 86.417 104.968 1.132 106.101
214 0 3 3851.755 0.345 0.42 114.969 87.007 201.977 0.317 202.294
215 0 9 3983.709 0.467 0.534 6.466 81.73 88.196 0.443 88.64
216 0 8 3982.255 0.767 0.998 14.279 81.449 95.729 1.705 97.435
217 0 4 3919.74 0.346 0.424 85.31 79.932 165.243 0.644 165.887
218 0 7 4015.534 0.333 0.409 17.541 80.366 97.907 1.668 99.575
219 0 1 3916.272 0.432 0.512 128.903 84.8 213.703 2.03 215.733
220 0 0 3872.552 0.463 0.605 190.345 81.085 271.43 2.323 273.754
221 0 2 3943.776 0.456 0.565 124.062 79.417 203.479 2.947 206.427
222 0 5 4054.025 0.473 0.519 16.707 81.618 98.325 2.546 100.872
223 0 4 4085.637 0.444 0.528 14.533 83.168 97.701 1.309 99.01
224 0 7 4115.136 0.466 0.563 10.979 80.789 91.768 1.994 93.762
225 0 9 4072.356 0.332 0.411 61.405 81.35 142.756 1.96 144.716
226 0 6 4007.465 0.323 0.404 173.194 81.587 254.782 1.562 256.344
227 0 0 4146.315 0.415 0.495 47.446 82.791 130.237 1.332 131.569
228 0 3 4054.052 0.334 0.407 140.693 83.369 224.063 5.103 229.166
229 0 8 4079.697 0.352 0.431 114.177 84.118 198.295 7.426 205.722
230 0 4 4184.657 0.346 0.42 13.748 86.813 100.561 0.308 100.869
231 0 2 4150.211 0.297 0.391 50.058 85.067 135.125 2.111 137.237
232 0 9 4217.079 0.289 0.372 15.913 78.546 94.459 1.492 95.952
233 0 7 4208.903 0.592 0.799 46.416 79.377 125.794 1.363 127.157
234 0 5 4154.904 0.378 0.458 105.65 86.733 192.384 0.306 192.69
235 0 1 4132.012 0.351 0.423 128.658 87.255 215.914 1.377 217.291
236 0 6 4263.817 0.316 0.392 7.054 80.022 87.076 2.867 89.944
237 0 2 4287.456 0.418 0.519 13.658 77.869 91.528 1.837 93.365
238 0 8 4285.427 0.371 0.448 46.607 81.282 127.89 1.193 129.083
239 0 6 4353.769 0.428 0.512 12.728 83.385 96.114 1.372 97.486
240 0 9 4313.041 0.452 0.544 65.025 81.466 146.492 1.454 147.947
241 0 7 4336.069 0.547 0.631 62.669 80.678 143.347 1.741 145.089
242 0 4 4285.532 0.421 0.489 126.035 80.128 206.164 1.865 208.029
243 0 1 4349.311 0.344 0.419 83.199 81.257 164.457 2.457 166.915
244 0 5 4347.602 0.336 0.415 84.785 84.577 169.362 0.205 169.568
245 0 3 4283.225 0.311 0.39 165.412 81.631 247.043 2.736 249.779
246 0 6 4451.266 0.349 0.435 16.483 81.492 97.976 1.693 99.669
247 0 2 4380.832 0.957 1.096 87.309 82.649 169.959 1.588 171.547
248 0 8 4414.518 0.362 0.479 53.482 84.438 137.92 1.534 139.454
249 0 0 4277.9 0.615 0.698 190.489 85.361 275.85 1.139 276.99
250 0 4 4493.572 0.353 0.433 5.668 79.869 85.538 1.985 87.523
251 0 9 4460.995 0.297 0.379 72.698 82.185 154.884 1.312 156.196
252 0 7 4481.166 0.353 0.43 52.934 82.767 135.702 0.9 136.602
253 0 1 4516.236 0.426 0.513 21.016 82.575 103.591 1.242 104.834
254 0 0 4554.897 0.284 0.36 14.035 80.027 94.063 0.644 94.708
255 0 2 4552.387 0.34 0.416 49.053 82.256 131.309 1.498 132.807
256 0 6 4550.944 0.374 0.452 58.083 82.241 140.324 0.226 140.55
257 0 5 4517.178 0.287 0.348 92.038 83.638 175.677 2.136 177.813
258 0 3 4533.015 0.387 0.482 81.677 80.321 161.999 0.881 162.88
259 0 8 4553.982 0.403 0.5 92.788 79.698 172.487 2.855 175.343
260 0 0 4649.615 0.455 0.528 19.45 84.334 103.785 1.69 105.475
261 0 4 4581.108 0.727 0.888 88.144 85.538 173.683 0.515 174.198
262 0 7 4617.775 0.309 0.38 57.266 80.933 138.2 1.523 139.723
263 0 9 4617.201 0.408 0.513 79.382 81.334 160.716 0.872 161.589
264 0 1 4621.077 0.313 0.394 79.38 80.484 159.864 1.538 161.403
265 0 5 4695 0.323 0.398 26.916 80.04 106.957 1.254 108.212
266 0 8 4729.336 0.417 0.504 8.58 81.443 90.024 1.481 91.506
267 0 6 4691.503 0.315 0.393 52.131 81.54 133.672 1.764 135.436
268 0 7 4757.506 0.336 0.402 8.604 82.634 91.239 2.208 93.447
269 0 3 4695.901 0.364 0.612 110.355 79.703 190.059 2.086 192.145
270 0 4 4755.316 0.387 0.444 71.444 80.424 151.868 1.02 152.889
271 0 1 4782.487 0.804 0.913 71.209 80.168 151.377 1.373 152.751
272 0 2 4685.202 0.318 0.395 168.695 81.247 249.943 1.572 251.515
273 0 0 4755.102 0.475 0.548 109.227 80.705 189.933 0.478 190.411
274 0 7 4850.962 0.47 0.583 25.01 82.997 108.007 1.157 109.164
275 0 5 4803.219 0.334 0.445 72.976 85.095 158.071 1.135 159.207
276 0 9 4778.799 0.486 0.589 120.634 80.375 201.009 1.331 202.341
277 0 4 4908.214 0.415 0.488 15.698 82.28 97.979 1.139 99.118
278 0 6 4826.949 0.393 0.479 97.059 83.146 180.206 1.672 181.879
279 0 8 4820.854 0.484 0.577 109.039 81.594 190.634 0.318 190.953
280 0 2 4936.725 0.354 0.431 6.303 83.521 89.824 1.867 91.692
281 0 3 4888.057 0.498 0.577 71.038 81.397 152.435 0.342 152.777
282 0 5 4962.434 0.279 0.331 14.723 82.679 97.402 0.279 97.682
283 0 7 4960.133 0.327 0.397 44.946 83.613 128.56 0.245 128.805
284 0 3 5040.845 0.439 0.546 14.402 85.033 99.435 2.166 101.602
285 0 8 5011.814 0.411 0.481 59.326 83.914 143.24 1.398 144.639
286 0 2 5028.425 0.366 0.446 42.929 84.889 127.819 0.305 128.124
287 0 0 4945.521 0.346 0.418 150.986 80.727 231.713 2.023 233.737
288 0 9 4981.151 0.45 0.557 115.5 82.904 198.405 2.823 201.228
289 0 5 5060.124 0.398 0.501 64.278 83.236 147.514 2.355 149.869
290 0 6 5008.836 0.28 0.353 115.728 85.538 201.267 0.603 201.871
291 0 1 4935.247 0.379 0.458 189.72 85.303 275.023 0.465 275.488
292 0 4 5007.34 0.542 0.741 117.463 85.645 203.108 2.146 205.255
293 0 7 5088.946 0.313 0.394 49.444 81.597 131.042 1.646 132.688
294 0 3 5142.457 0.399 0.478 5.147 81.287 86.435 0.881 87.317
295 0 2 5156.557 0.291 0.362 5.203 81.382 86.585 1.92 88.505
296 0 8 5156.462 0.521 0.69 19.219 80.308 99.528 1.821 101.349
297 0 9 5182.387 0.32 0.399 23.899 80.953 104.852 1.121 105.973
298 0 7 5221.642 0.307 0.391 5.745 81.815 87.561 1.817 89.378
299 0 0 5179.266 0.363 0.443 49.741 84.892 134.633 2.054 136.688
300 0 5 5210.018 0.568 0.643 61.334 81.577 142.911 1.418 144.33
301 0 3 5229.782 0.339 0.44 49.632 85.029 134.661 1.34 136.002
302 0 1 5210.738 0.792 1.471 86.688 81.747 168.435 0.87 169.305
303 0 9 5288.37 0.428 0.512 5.724 86.497 92.221 2.111 94.333
304 0 2 5245.07 0.351 0.431 61.536 81.418 142.954 1.728 144.682
305 0 0 5315.961 0.382 0.447 20.382 79.869 100.252 1.409 101.661
306 0 8 5257.815 0.423 0.49 92.566 80.892 173.459 1.496 174.955
307 0 7 5311.029 0.435 0.516 52.528 81.313 133.841 1.413 135.255
308 0 6 5210.712 1.532 1.63 151.833 85.155 236.989 1.118 238.107
309 0 3 5365.791 0.299 0.377 50.784 81.585 132.369 1.452 133.822
310 0 2 5389.757 0.474 0.554 26.667 82.959 109.627 1.814 111.441
311 0 0 5417.631 0.784 0.907 8.897 81.026 89.924 1.412 91.336
312 0 4 5212.602 0.386 0.447 217.003 82.217 299.221 1.166 300.387
313 0 9 5382.712 0.311 0.389 75.127 83.211 158.339 1.983 160.323
314 0 5 5354.356 0.305 0.39 112.1 80.95 193.05 1.376 194.427
315 0 7 5446.296 0.356 0.432 36.105 80.157 116.262 0.92 117.183
316 0 1 5380.053 0.405 0.494 111.048 85.12 196.168 1.345 197.514
317 0 6 5448.827 0.315 0.388 42.469 86.109 128.578 0.571 129.149
318 0 8 5432.778 0.329 0.409 64.109 83.938 148.048 0.344 148.393
319 0 4 5512.997 0.298 0.374 12.336 81.353 93.69 2.014 95.704
320 0 3 5499.624 0.486 0.595 59.894 82.285 142.179 1.619 143.799
321 0 5 5548.792 0.428 0.535 10.625 83.853 94.479 1.992 96.472
322 0 2 5501.208 0.575 0.684 90.412 78.346 168.759 0.685 169.444
323 0 4 5608.705 0.558 0.815 8.557 78.683 87.24 1.117 88.358
324 0 1 5577.576 0.426 0.513 55.869 79.618 135.487 1.607 137.095
325 0 0 5508.975 0.328 0.404 126.867 81.307 208.175 1.943 210.118
326 0 9 5543.047 0.36 0.436 90.905 85.163 176.069 2.65 178.719
327 0 2 5670.662 0.41 0.496 11.867 80.168 92.035 2.243 94.278
328 0 7 5563.487 0.303 0.384 127.359 84.02 211.379 1.073 212.452
329 0 6 5577.982 0.339 0.414 117.634 83.729 201.363 0.301 201.665
330 0 5 5645.292 0.373 0.455 50.568 84.436 135.005 1.355 136.36
331 0 4 5697.074 0.417 0.514 14.751 79.581 94.332 2.424 96.757
332 0 3 5643.43 0.367 0.462 102.833 81.493 184.327 2.916 187.244
333 0 0 5719.101 0.348 0.427 42.935 78.555 121.491 1.886 123.377
334 0 8 5581.178 0.307 0.381 181.001 83.057 264.059 1.295 265.354
335 0 9 5721.773 0.324 0.406 46.37 81.578 127.949 1.29 129.239
336 0 2 5764.95 0.399 0.477 28.761 79.071 107.832 2.316 110.149
337 0 1 5714.679 0.318 0.404 98.197 82.491 180.689 1.885 182.574
338 0 4 5793.839 0.314 0.382 30.597 81.38 111.978 1.234 113.212
339 0 7 5775.948 0.332 0.413 51.577 84.088 135.665 0.377 136.043
340 0 3 5830.686 0.955 1.072 11.735 81.606 93.341 1.701 95.043
341 0 9 5851.02 0.333 0.414 18.739 81.701 100.441 1.33 101.771
342 0 2 5875.109 0.396 0.478 15.164 81.893 97.058 1.217 98.275
343 0 5 5781.659 0.318 0.386 119.27 83.15 202.42 0.376 202.797
344 0 7 5911.998 0.339 0.418 11.726 82.093 93.82 1.495 95.315
345 0 3 5925.738 0.447 0.516 21.925 79.87 101.795 0.344 102.14
346 0 0 5842.488 0.338 0.409 124.073 81.734 205.807 2.047 207.855
347 0 6 5779.654 0.326 0.406 188.882 82.945 271.828 0.958 272.786
348 0 1 5897.261 0.301 0.377 74.047 81.4 155.448 0.967 156.415
349 0 8 5846.539 0.337 0.429 140.2 79.976 220.176 2.328 222.505
350 0 9 5952.801 0.344 0.421 54.536 79.755 134.291 1.41 135.702
351 0 7 6007.318 0.522 0.618 14.816 79.956 94.772 16.419 111.192
352 0 2 5973.394 0.518 0.592 60.307 84.753 145.06 0.75 145.81
353 0 5 5984.463 0.449 0.524 50.467 84.478 134.945 1.93 136.876
354 0 4 5907.056 0.402 0.484 129.229 84.9 214.129 1.722 215.851
355 0 3 6027.888 0.42 0.494 39.048 80.015 119.064 1.978 121.042
356 0 0 6050.355 1.316 1.485 29.107 82.111 111.218 1.742 112.96
357 0 1 6053.684 0.311 0.379 47.288 81.844 129.132 1.182 130.315
358 0 6 6052.444 0.503 0.615 67.027 81.05 148.077 1.152 149.229
359 0 5 6121.346 0.337 0.446 23.684 78.068 101.752 2.019 103.772
360 0 8 6069.053 0.397 0.478 79.682 79.537 159.219 1.582 160.802
361 0 9 6088.518 0.344 0.419 65.681 81.3 146.982 13.495 160.477
362 0 7 6118.543 0.547 0.608 50.691 81.862 132.554 0.377 132.931
363 0 3 6148.938 0.351 0.416 38.998 82.443 121.442 10.62 132.062
364 0 1 6184.009 0.625 0.847 30.097 79.57 109.667 2.015 111.682
365 0 4 6122.915 0.478 0.554 133.957 92.839 226.796 1.7 228.497
366 0 2 6119.207 0.42 0.468 136.749 95.595 232.345 3.165 235.51
367 0 5 6225.127 0.307 0.389 30.625 98.714 129.339 0.471 129.811
368 0 8 6229.86 0.669 0.746 51.831 97.397 149.228 1.67 150.898
369 0 6 6201.683 0.393 0.475 85.686 96.242 181.928 5.483 187.412
370 0 9 6249.004 0.394 0.467 68.533 82.42 150.954 0.531 151.485
371 0 0 6163.324 0.47 0.577 154.586 83.082 237.668 12.538 250.207
372 0 7 6251.483 0.329 0.409 71.341 90.405 161.747 0.44 162.188
373 0 3 6281.008 0.413 0.572 45.589 86.798 132.388 1.088 133.476
374 0 1 6295.702 0.418 0.499 51.953 79.591 131.545 1.322 132.867
375 0 4 6351.453 0.526 0.622 1.002 79.648 80.651 2.773 83.424
376 0 2 6354.728 0.554 0.647 34.466 80.677 115.143 0.939 116.083
377 0 5 6354.95 0.507 0.659 65.208 80.513 145.721 4.54 150.262
378 0 6 6389.103 0.371 0.453 31.17 84.714 115.884 0.492 116.376
379 0 0 6413.542 0.446 0.573 10.238 84.236 94.475 0.223 94.699
380 0 1 6428.577 0.312 0.401 27.804 81.855 109.659 1.676 111.336
381 0 7 6413.677 0.485 0.6 45.942 80.918 126.86 2.002 128.863
382 0 2 6470.818 0.322 0.4 18.925 81.521 100.446 0.952 101.399
383 0 4 6434.885 0.367 0.43 63.441 84.026 147.468 2.273 149.741
384 0 0 6508.249 0.291 0.367 14.539 80.234 94.774 2.012 96.787
385 0 9 6400.496 0.321 0.422 124.092 86.419 210.512 2.121 212.633
386 0 6 6505.483 0.332 0.395 50.891 82.623 133.515 2.367 135.883
387 0 5 6505.215 0.47 0.546 66.876 80.667 147.543 1.659 149.202
388 0 2 6572.224 0.316 0.376 17.54 84.437 101.978 0.329 102.308
389 0 4 6584.634 0.383 0.482 15.541 81.204 96.746 1.192 97.939
390 0 9 6613.139 0.441 0.554 10.492 79.826 90.318 1.596 91.915
391 0 7 6542.547 0.337 0.417 113.17 80.125 193.295 1.239 194.535
392 0 0 6605.043 0.334 0.415 57.477 82.496 139.973 1.355 141.329
393 0 3 6414.491 0.775 0.919 247.767 84.12 331.888 2.017 333.905
394 0 8 6380.768 0.437 0.526 281.598 85.832 367.431 0.649 368.081
395 0 5 6654.422 0.74 0.895 7.715 86.517 94.233 1.298 95.531
396 0 1 6539.923 0.391 0.483 149.274 83.239 232.513 2.996 235.509
397 0 4 6682.579 0.336 0.416 6.481 86.19 92.672 10.253 102.925
398 0 6 6641.381 0.317 0.393 59.657 84.226 143.884 0.521 144.405
399 0 9 6705.064 0.411 0.478 19.864 80.4 100.264 1.428 101.693
400 0 2 6674.542 0.419 0.494 53.331 81.556 134.888 1.243 136.131
401 0 7 6737.093 0.433 0.512 18.865 80.421 99.287 0.362 99.649
402 0 8 6748.856 0.377 0.434 17.681 84.385 102.067 0.776 102.843
403 0 6 6785.795 0.516 0.607 9.629 79.503 89.133 2.355 91.488
404 0 5 6749.962 0.412 0.48 73.922 79.8 153.722 1.568 155.291
405 0 0 6746.38 0.315 0.39 110.351 80.636 190.987 1.112 192.1
406 0 7 6836.754 0.55 0.613 24.537 80.93 105.467 2.694 108.162
407 0 8 6851.707 0.33 0.393 20.472 81.812 102.285 1.242 103.527
408 0 6 6877.293 0.396 0.464 12.523 81.162 93.686 1.659 95.345
409 0 4 6785.508 0.589 0.692 115.734 86.656 202.391 0.733 203.124
410 0 1 6775.441 0.33 0.414 130.532 83.319 213.851 1.687 215.538
411 0 9 6806.765 0.34 0.423 99.015 85.013 184.029 3.078 187.108
412 0 3 6748.406 0.486 0.618 174.309 81.219 255.529 4.272 259.801
413 0 5 6905.264 0.568 0.647 23.753 80.364 104.118 0.631 104.749
414 0 8 6955.243 0.326 0.406 2.524 80.645 83.169 0.755 83.925
415 0 0 6938.49 0.461 0.541 27.562 81.761 109.323 1.228 110.552
416 0 2 6810.68 0.93 1.1 197.267 80.838 278.105 1.271 279.376
417 0 7 6944.924 0.37 0.455 63.266 82.346 145.613 1.637 147.251
418 0 4 6988.643 0.466 0.606 34.89 83.461 118.352 3.998 122.35
419 0 3 7008.212 0.533 0.621 66.77 79.833 146.603 1.377 147.98
420 0 0 7049.053 0.377 0.459 25.731 82.163 107.895 1.657 109.553
421 0 6 6972.667 0.354 0.428 119.457 80.472 199.93 0.336 200.266
422 0 7 7092.184 0.337 0.406 4.213 82.36 86.573 1.179 87.752
423 0 9 6993.88 0.439 0.511 110.675 82.611 193.287 1.277 194.564
424 0 1 6990.987 0.309 0.389 131.279 80.628 211.907 1.199 213.107
425 0 8 7039.181 1.011 1.109 91.879 83.571 175.451 1.855 177.306
426 0 2 7090.066 0.356 0.455 51.305 82.594 133.899 1.56 135.459
427 0 4 7111.004 0.415 0.497 30.584 84.877 115.461 1.764 117.225
428 0 5 7010.022 0.464 0.541 141.61 82.79 224.4 2.016 226.417
429 0 0 7158.615 0.364 0.442 4.359 80.082 84.441 1.28 85.722
430 0 6 7172.942 0.521 0.598 26.196 79.661 105.858 1.066 106.924
431 0 3 7156.204 0.42 0.502 53.726 79.747 133.473 1.584 135.058
432 0 1 7204.101 0.331 0.416 26.093 81.632 107.725 2 109.726
433 0 0 7244.345 0.32 0.398 21.466 80.972 102.438 1.166 103.605
434 0 5 7236.446 0.493 0.55 41.039 79.52 120.56 2.102 122.662
435 0 9 7188.454 0.601 0.747 110.165 80.817 190.983 0.996 191.979
436 0 8 7216.494 0.341 0.427 81.98 80.888 162.869 2.197 165.067
437 0 7 7179.945 0.403 0.485 119.842 81.613 201.455 0.476 201.931
438 0 2 7225.536 0.484 0.582 74.136 81.65 155.786 1.136 156.923
439 0 1 7313.837 0.452 0.567 18.595 83.189 101.784 2.503 104.288
440 0 6 7279.875 0.328 0.411 61.184 81.339 142.524 2.233 144.757
441 0 5 7359.116 0.325 0.402 6.764 82.524 89.288 1.53 90.819
442 0 4 7228.237 0.716 0.876 138.937 84.177 223.115 0.301 223.416
443 0 7 7381.883 0.288 0.383 22.346 80.881 103.228 1.238 104.466
444 0 3 7291.272 0.443 0.52 113.137 81.756 194.893 1.745 196.639
445 0 8 7381.568 0.403 0.472 54.796 80.499 135.296 0.451 135.748
446 0 0 7347.958 0.324 0.405 118.366 81.119 199.485 1.507 200.992
447 0 9 7380.444 0.554 0.68 93.055 79.533 172.588 1.514 174.103
448 0 4 7451.66 0.316 0.384 22.329 80.797 103.127 2.351 105.478
449 0 3 7487.919 0.325 0.403 15.077 82.38 97.457 17.729 115.187
450 0 1 7418.133 0.432 0.498 97.07 87.573 184.644 0.619 185.263
451 0 8 7517.326 0.441 0.512 15.017 86.247 101.265 0.225 101.49
452 0 6 7424.648 0.311 0.394 113.912 82.157 196.07 0.29 196.361
453 0 5 7449.946 0.966 1.145 91.384 80.285 171.67 1.546 173.216
454 0 2 7382.465 0.311 0.368 155.965 84.581 240.547 6.505 247.052
455 0 7 7486.358 0.32 0.403 62.472 82.007 144.479 5.539 150.018
456 0 4 7557.146 0.366 0.452 15.698 80.87 96.568 13.833 110.402
457 0 0 7548.957 0.315 0.408 53.927 80.333 134.26 1.998 136.259
458 0 9 7554.554 0.424 0.512 48.698 81.789 130.488 2.084 132.572
459 0 3 7603.119 0.564 0.632 66.287 80.673 146.961 1.472 148.433
460 0 6 7621.016 0.287 0.361 50.611 79.755 130.366 2.06 132.427
461 0 1 7603.404 0.35 0.44 71.549 81.794 153.343 1.394 154.737
462 0 7 7636.385 0.328 0.393 38.377 83.192 121.569 7.821 129.391
463 0 8 7618.824 0.315 0.391 58.371 88.394 146.766 0.268 147.034
464 0 4 7667.559 0.458 0.544 41.885 80.925 122.811 2.257 125.068
465 0 0 7685.224 0.379 0.462 51.5 85.236 136.737 1.835 138.572
466 0 5 7623.17 0.345 0.429 113.716 86.773 200.489 2.099 202.589
467 0 9 7687.135 0.365 0.44 55.114 83.348 138.463 1.93 140.394
468 0 2 7629.525 0.75 0.881 112.85 84.984 197.834 1.481 199.316
469 0 6 7753.451 0.348 0.443 19.425 81.92 101.345 0.235 101.581
470 0 8 7765.861 0.295 0.382 42.989 83.301 126.291 0.309 126.6
471 0 3 7751.56 0.371 0.447 57.895 83.908 141.804 1.772 143.577
472 0 1 7758.148 0.305 0.375 61.756 83.904 145.661 0.303 145.964
473 0 4 7792.635 0.385 0.467 48.907 82.184 131.091 1.903 132.995
474 0 7 7765.787 0.508 0.598 82.233 80.202 162.436 0.937 163.373
475 0 5 7825.768 0.352 0.433 48.817 83.915 132.733 1.856 134.59
476 0 0 7823.804 0.347 0.42 81.14 78.737 159.878 2.87 162.748
477 0 3 7895.144 0.324 0.404 19.162 79.062 98.225 1.353 99.579
478 0 1 7904.124 0.531 0.75 44.278 80.547 124.825 2.869 127.694
479 0 7 7929.169 0.305 0.4 22.345 80.727 103.073 0.274 103.347
480 0 9 7827.535 0.315 0.398 125.914 79.985 205.899 1.407 207.306
481 0 4 7925.637 0.295 0.37 55.306 79.662 134.969 1.413 136.382
482 0 6 7855.04 0.348 0.424 129.077 82.84 211.917 1.083 213
483 0 2 7828.844 0.332 0.377 154.911 84.522 239.433 0.778 240.211
484 0 8 7892.473 0.449 0.525 91.578 85.603 177.182 9.727 186.909
485 0 5 7960.366 0.389 0.468 55.094 82.706 137.801 1.851 139.652
486 0 3 7994.732 0.337 0.41 22.79 83.043 105.834 1.32 107.154
487 0 7 8032.525 0.351 0.425 16.842 80.964 97.806 3.531 101.338
488 0 0 7986.561 0.295 0.37 65.496 81.656 147.152 1.49 148.643
489 0 9 8034.848 0.327 0.409 49.351 81.008 130.359 9.179 139.539
490 0 4 8062.031 0.837 1.09 46.288 82.287 128.575 3.955 132.531
491 0 5 8100.03 0.389 0.486 18.157 82.12 100.278 2.442 102.72
492 0 1 8031.827 0.478 0.608 96.665 82.449 179.114 1.973 181.087
493 0 2 8069.062 0.342 0.407 85.309 81.496 166.805 0.329 167.135
494 0 9 8174.399 0.474 0.569 11.749 83.111 94.861 1.975 96.836
495 0 3 8101.893 0.317 0.394 85.135 84.047 169.183 2.215 171.398
496 0 8 8079.389 0.343 0.409 114.95 81.574 196.524 0.902 197.427
497 0 1 8212.925 0.393 0.494 5.508 81.466 86.974 2.467 89.442
498 0 6 8068.049 0.4 0.476 153.286 83.743 237.03 1.172 238.202
499 0 4 8194.572 0.388 0.455 46.45 82.449 128.899 3.487 132.387
500 0 7 8133.87 0.316 0.402 127.895 81.295 209.19 0.378 209.569
501 0 0 8135.211 0.37 0.49 149.827 95.401 245.228 0.525 245.753
502 0 5 8202.758 0.299 0.378 83.997 93.829 177.826 0.433 178.259
503 0 2 8236.206 0.419 0.527 47.407 97.117 144.525 0.519 145.044
504 0 6 8306.259 0.336 0.413 3.622 81.754 85.377 3.954 89.331
505 0 9 8271.247 0.468 1.138 48.801 82.285 131.086 5.775 136.861
506 0 7 8343.45 0.445 0.55 7.533 83.535 91.069 12.373 103.442
507 0 1 8302.377 0.352 0.429 54.306 89.95 144.257 1.044 145.301
508 0 8 8276.825 0.397 0.494 104.45 87.657 192.107 1.003 193.111
509 0 3 8273.295 0.582 0.657 107.827 88.457 196.284 0.432 196.717
510 0 4 8326.967 0.382 0.454 55.066 88.862 143.928 3.529 147.457
511 0 9 8408.118 0.387 0.47 10.387 81.323 91.711 2.096 93.808
512 0 5 8381.02 0.737 0.809 72.154 82.173 154.327 2.08 156.408
513 0 6 8395.599 0.31 0.381 60.746 88.193 148.94 0.223 149.163
514 0 1 8447.686 0.287 0.348 15.042 82.895 97.937 3.174 101.111
515 0 0 8380.969 0.55 0.685 84.005 88.633 172.638 1.193 173.831
516 0 4 8474.432 0.295 0.375 10.992 87.808 98.8 15.063 113.864
517 0 8 8469.946 0.996 1.127 55.763 87.871 143.635 0.35 143.985
518 0 0 8554.808 0.306 0.389 4.062 97.274 101.336 1.629 102.966
519 0 9 8501.936 0.364 0.441 57.994 97.65 155.644 0.333 155.977
520 0 5 8537.438 0.409 0.487 24.686 95.581 120.268 0.765 121.034
521 0 7 8446.903 0.418 0.538 166.93 82.688 249.618 12.816 262.434
522 0 3 8470.014 1.107 1.204 144.07 95.186 239.257 0.458 239.715
523 0 1 8548.805 0.291 0.366 65.599 95.008 160.607 1.759 162.367
524 0 2 8381.252 0.64 0.703 232.706 95.11 327.816 2.124 329.941
525 0 4 8588.308 0.451 0.53 47.676 81.686 129.363 19.95 149.313
526 0 6 8544.77 0.425 0.514 94.256 98.361 192.617 1.175 193.793
527 0 8 8613.935 0.482 0.648 66.74 79.822 146.562 13.637 160.199
528 0 5 8658.478 0.364 0.461 23.727 91.555 115.283 0.678 115.961
529 0 0 8657.783 0.359 0.437 29.469 86.909 116.378 1.615 117.994
530 0 9 8657.92 0.434 0.494 52.377 80.121 132.499 2.162 134.661
531 0 7 8709.341 1.143 1.286 2.176 84.412 86.589 18.531 105.121
532 0 0 8775.784 0.34 0.447 2.582 677.582 680.165 1.972 682.138
533 0 4 8737.632 0.477 0.553 40.936 679.191 720.127 46.877 767.005
534 0 1 8711.177 0.458 0.532 46.203 746.914 793.118 0.676 793.795
535 0 2 8711.197 0.549 0.614 36.637 756.865 793.503 0.62 794.123
536 0 3 8709.732 0.968 1.401 729.574 148.167 877.741 1.855 879.597
537 0 9 8792.592 0.382 0.461 647.063 212.999 860.063 2.327 862.391
538 0 5 8774.449 0.442 0.497 665.322 278.888 944.21 1.71 945.921
539 0 8 8774.139 0.542 0.675 666.023 348.013 1014.037 3.225 1017.262
540 0 7 8814.472 0.42 0.499 625.747 350.894 976.641 1.077 977.719
541 0 3 9589.338 0.74 0.84 52.156 212.561 264.717 1.988 266.706
542 0 1 9504.98 0.395 0.478 199.746 152.4 352.146 1.436 353.583
543 0 2 9505.326 0.369 0.408 200.027 212.787 412.815 0.346 413.162
544 0 5 9720.381 0.408 0.468 50.974 150.027 201.002 0.889 201.892
545 0 9 9654.994 0.436 0.496 119.325 206.595 325.92 1.9 327.82
546 0 7 9792.196 0.259 0.853 45.479 147.983 193.463 1.292 194.756
547 0 8 9791.412 0.416 0.474 47.556 209.663 257.22 1.399 258.62
548 0 1 9858.571 0.332 0.388 47.169 146.521 193.691 1.358 195.049
549 0 6 8738.566 0.293 0.349 1167.354 156.58 1323.935 0.934 1324.869
550 0 5 9922.281 0.382 0.438 49.221 145.247 194.469 1.392 195.862
551 0 7 9986.962 0.364 0.42 47.021 150.528 197.549 1.334 198.884
552 0 0 9457.939 0.316 0.395 578.457 150.278 728.735 1.254 729.99
553 0 9 9982.825 0.43 0.5 64.168 199.563 263.731 0.345 264.077
554 0 3 9856.054 0.416 0.472 247.039 147.388 394.428 1.72 396.148
555 0 4 9504.641 0.548 0.619 664.554 141.019 805.573 1.417 806.991
556 0 2 9918.499 0.404 0.459 250.86 142.241 393.101 1.155 394.257

View file

@ -0,0 +1,16 @@
// +build integration
//Package secretsmanager provides gucumber integration tests support.
package secretsmanager
import (
"github.com/aws/aws-sdk-go/awstesting/integration/smoke"
"github.com/aws/aws-sdk-go/service/secretsmanager"
"github.com/gucumber/gucumber"
)
func init() {
gucumber.Before("@secretsmanager", func() {
gucumber.World["client"] = secretsmanager.New(smoke.Session)
})
}

View file

@ -0,0 +1,13 @@
# language: en
@smoke @secretsmanager
Feature: Amazon SecretsManager
Scenario: Making a request
When I call the "ListSecrets" API
Then the request should be successful
Scenario: Handling errors
When I attempt to call the "DescribeSecret" API with:
| SecretId | fake-secret-id |
Then I expect the response error code to be "ResourceNotFoundException"

View file

@ -0,0 +1,11 @@
FROM ubuntu:12.04
FROM golang:1.10
ADD . /go/src/github.com/aws/aws-sdk-go
RUN apt-get update && apt-get install -y --no-install-recommends \
vim \
&& rm -rf /var/list/apt/lists/*
WORKDIR /go/src/github.com/aws/aws-sdk-go
CMD ["make", "unit"]

View file

@ -10,7 +10,7 @@ phases:
- mkdir -p /go/src/github.com/aws
- ln -s $SDK_CB_ROOT $SDK_GO_ROOT
- cd $SDK_GO_ROOT
- make unit
- make ci-test
- cd $SDK_CB_ROOT
- #echo Compiling the Go code...
post_build:

9
vendor/github.com/aws/aws-sdk-go/cleanup_models.sh generated vendored Executable file
View file

@ -0,0 +1,9 @@
#/usr/bin/env bash
# Deletes all but the most current model version.
for v in $(ls ./models/apis | grep -v '.go' ); do
for vm in $(ls -r models/apis/$v/ | sed -n '1!p' ); do
echo "rm -r models/apis/$v/$vm"
rm -r models/apis/$v/$vm
done
done

View file

@ -158,7 +158,7 @@ window.onload = function() {
</div><!-- .container -->
</div><!-- #page -->
<script src="/SdkStatic/sdk-priv.js" async="true"></script>
</body>
</html>

View file

@ -186,7 +186,11 @@ div#mobile_only {
div#fixed {
position: fixed;
width: 100%;
max-width: 100%;
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
}
div .top_link {

View file

@ -5,10 +5,10 @@ This is an example using the AWS SDK for Go to list ec2 instances that match pro
# Usage
The example uses the bucket name provided, and lists all object keys in a bucket.
The example uses the tag name provided, and lists all matching ec2 instances.
```sh
go run -tags example filter_ec2_by_tag.go <name_filter>
go run filter_ec2_by_tag.go <name_filter>
```
Output:

View file

@ -17,7 +17,7 @@
"ListProgressUpdateStreams": "<p>Lists progress update streams associated with the user account making this call.</p>",
"NotifyApplicationState": "<p>Sets the migration state of an application. For a given application identified by the value passed to <code>ApplicationId</code>, its status is set or updated by passing one of three values to <code>Status</code>: <code>NOT_STARTED | IN_PROGRESS | COMPLETED</code>.</p>",
"NotifyMigrationTaskState": "<p>Notifies Migration Hub of the current status, progress, or other detail regarding a migration task. This API has the following traits:</p> <ul> <li> <p>Migration tools will call the <code>NotifyMigrationTaskState</code> API to share the latest progress and status.</p> </li> <li> <p> <code>MigrationTaskName</code> is used for addressing updates to the correct target.</p> </li> <li> <p> <code>ProgressUpdateStream</code> is used for access control and to provide a namespace for each migration tool.</p> </li> </ul>",
"PutResourceAttributes": "<p>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 <code>PutResourceAttributes</code> returns.</p> <important> <ul> <li> <p>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 <i>add</i> an IP address, it will then be required to call it with <i>both</i> the IP and MAC addresses to prevent overiding the MAC address.</p> </li> <li> <p>Note the instructions regarding the special use case of the <code>ResourceAttributeList</code> parameter when specifying any \"VM\" related value.</p> </li> </ul> </important> <note> <p>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 <code>ListDiscoveredResources</code>.</p> </note>"
"PutResourceAttributes": "<p>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 <code>PutResourceAttributes</code> returns.</p> <important> <ul> <li> <p>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 <i>add</i> an IP address, it will then be required to call it with <i>both</i> the IP and MAC addresses to prevent overiding the MAC address.</p> </li> <li> <p>Note the instructions regarding the special use case of the <a href=\"https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#migrationhub-PutResourceAttributes-request-ResourceAttributeList\"> <code>ResourceAttributeList</code> </a> parameter when specifying any \"VM\" related value. </p> </li> </ul> </important> <note> <p>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 <code>ListDiscoveredResources</code>.</p> </note>"
},
"shapes": {
"AccessDeniedException": {
@ -414,7 +414,7 @@
"ResourceAttributeList": {
"base": null,
"refs": {
"PutResourceAttributesRequest$ResourceAttributeList": "<p>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.</p> <note> <p>In the <code>ResourceAttribute</code> object array, the <code>Type</code> field is reserved for the following values: <code>IPV4_ADDRESS | IPV6_ADDRESS | MAC_ADDRESS | FQDN | VM_MANAGER_ID | VM_MANAGED_OBJECT_REFERENCE | VM_NAME | VM_PATH | BIOS_ID | MOTHERBOARD_SERIAL_NUMBER</code>, and the identifying value can be a string up to 256 characters.</p> </note> <important> <p>If any \"VM\" related value is used for a <code>ResourceAttribute</code> object, it is required that <code>VM_MANAGER_ID</code>, as a minimum, is always used. If it is not used, the server will not be associated in the Application Discovery Service (ADS)'s repository using any of the other \"VM\" related values, and you will experience data loss. See the Example section below for a use case of specifying \"VM\" related values.</p> </important>"
"PutResourceAttributesRequest$ResourceAttributeList": "<p>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.</p> <note> <p>Takes the object array of <code>ResourceAttribute</code> where the <code>Type</code> field is reserved for the following values: <code>IPV4_ADDRESS | IPV6_ADDRESS | MAC_ADDRESS | FQDN | VM_MANAGER_ID | VM_MANAGED_OBJECT_REFERENCE | VM_NAME | VM_PATH | BIOS_ID | MOTHERBOARD_SERIAL_NUMBER</code> where the identifying value can be a string up to 256 characters.</p> </note> <important> <ul> <li> <p>If any \"VM\" related value is set for a <code>ResourceAttribute</code> object, it is required that <code>VM_MANAGER_ID</code>, as a minimum, is always set. If <code>VM_MANAGER_ID</code> is not set, then all \"VM\" fields will be discarded and \"VM\" fields will not be used for matching the migration task to a server in Application Discovery Service (ADS)'s repository. See the <a href=\"https://docs.aws.amazon.com/migrationhub/latest/ug/API_PutResourceAttributes.html#API_PutResourceAttributes_Examples\">Example</a> section below for a use case of specifying \"VM\" related values.</p> </li> <li> <p> If a server you are trying to match has multiple IP or MAC addresses, you should provide as many as you know in separate type/value pairs passed to the <code>ResourceAttributeList</code> parameter to maximize the chances of matching.</p> </li> </ul> </important>"
}
},
"ResourceAttributeType": {

View file

@ -966,7 +966,10 @@
},
"DeviceEventType":{
"type":"string",
"enum":["CONNECTION_STATUS"]
"enum":[
"CONNECTION_STATUS",
"DEVICE_STATUS"
]
},
"DeviceEventValue":{"type":"string"},
"DeviceName":{
@ -984,7 +987,8 @@
"enum":[
"READY",
"PENDING",
"WAS_OFFLINE"
"WAS_OFFLINE",
"DEREGISTERED"
]
},
"DeviceStatusDetail":{

View file

@ -2858,7 +2858,8 @@
"type":"string",
"enum":[
"REGIONAL",
"EDGE"
"EDGE",
"PRIVATE"
]
},
"ExportResponse":{

View file

@ -572,7 +572,7 @@
}
},
"EndpointType": {
"base": "<p>The endpoint type. The valid value is <code>EDGE</code> for edge-optimized API setup, most suitable for mobile applications, <code>REGIONAL</code> for regional API endpoint setup, most suitable for calling from AWS Region</p>",
"base": "<p>The endpoint type. The valid values are <code>EDGE</code> for edge-optimized API setup, most suitable for mobile applications; <code>REGIONAL</code> for regional API endpoint setup, most suitable for calling from AWS Region; and <code>PRIVATE</code> for private APIs.</p>",
"refs": {
"ListOfEndpointType$member": null
}
@ -965,7 +965,7 @@
"ListOfEndpointType": {
"base": null,
"refs": {
"EndpointConfiguration$types": "<p>A list of endpoint types of an API (<a>RestApi</a>) or its custom domain name (<a>DomainName</a>). For an edge-optimized API and its custom domain name, the endpoint type is <code>\"EDGE\"</code>. For a regional API and its custom domain name, the endpoint type is <code>REGIONAL</code>.</p>"
"EndpointConfiguration$types": "<p>A list of endpoint types of an API (<a>RestApi</a>) or its custom domain name (<a>DomainName</a>). For an edge-optimized API and its custom domain name, the endpoint type is <code>\"EDGE\"</code>. For a regional API and its custom domain name, the endpoint type is <code>REGIONAL</code>. For a private API, the endpoint type is <code>PRIVATE</code>.</p>"
}
},
"ListOfGatewayResponse": {
@ -1188,9 +1188,9 @@
"DeploymentCanarySettings$stageVariableOverrides": "<p>A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.</p>",
"GatewayResponse$responseParameters": "<p>Response parameters (paths, query strings and headers) of the <a>GatewayResponse</a> as a string-to-string map of key-value pairs.</p>",
"GatewayResponse$responseTemplates": "<p>Response templates of the <a>GatewayResponse</a> as a string-to-string map of key-value pairs.</p>",
"GetExportRequest$parameters": "<p>A key-value map of query string parameters that specify properties of the export, depending on the requested <code>exportType</code>. For <code>exportType</code> <code>swagger</code>, any combination of the following parameters are supported: <code>integrations</code> will export the API with x-amazon-apigateway-integration extensions. <code>authorizers</code> will export the API with x-amazon-apigateway-authorizer extensions. <code>postman</code> will export the API with Postman extensions, allowing for import to the Postman tool</p>",
"GetExportRequest$parameters": "<p>A key-value map of query string parameters that specify properties of the export, depending on the requested <code>exportType</code>. For <code>exportType</code> <code>swagger</code>, any combination of the following parameters are supported: <code>extensions='integrations'</code> or <code>extensions='apigateway'</code> will export the API with x-amazon-apigateway-integration extensions. <code>extensions='authorizers'</code> will export the API with x-amazon-apigateway-authorizer extensions. <code>postman</code> will export the API with Postman extensions, allowing for import to the Postman tool</p>",
"GetSdkRequest$parameters": "<p>A string-to-string key-value map of query parameters <code>sdkType</code>-dependent properties of the SDK. For <code>sdkType</code> of <code>objectivec</code> or <code>swift</code>, a parameter named <code>classPrefix</code> is required. For <code>sdkType</code> of <code>android</code>, parameters named <code>groupId</code>, <code>artifactId</code>, <code>artifactVersion</code>, and <code>invokerPackage</code> are required. For <code>sdkType</code> of <code>java</code>, parameters named <code>serviceName</code> and <code>javaPackageName</code> are required. </p>",
"ImportRestApiRequest$parameters": "<p>A key-value map of context-specific query string parameters specifying the behavior of different API importing operations. The following shows operation-specific parameters and their supported values.</p> <p> To exclude <a>DocumentationParts</a> from the import, set <code>parameters</code> as <code>ignore=documentation</code>.</p> <p> To configure the endpoint type, set <code>parameters</code> as <code>endpointConfigurationTypes=EDGE</code> or<code>endpointConfigurationTypes=REGIONAL</code>. The default endpoint type is <code>EDGE</code>.</p> <p> To handle imported <code>basePath</code>, set <code>parameters</code> as <code>basePath=ignore</code>, <code>basePath=prepend</code> or <code>basePath=split</code>.</p> <p>For example, the AWS CLI command to exclude documentation from the imported API is:</p> <pre><code>aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json</code></pre> <p>The AWS CLI command to set the regional endpoint on the imported API is:</p> <pre><code>aws apigateway import-rest-api --parameters endpointConfigurationTypes=REGIONAL --body 'file:///path/to/imported-api-body.json</code></pre>",
"ImportRestApiRequest$parameters": "<p>A key-value map of context-specific query string parameters specifying the behavior of different API importing operations. The following shows operation-specific parameters and their supported values.</p> <p> To exclude <a>DocumentationParts</a> from the import, set <code>parameters</code> as <code>ignore=documentation</code>.</p> <p> To configure the endpoint type, set <code>parameters</code> as <code>endpointConfigurationTypes=EDGE</code>, <code>endpointConfigurationTypes=REGIONAL</code>, or <code>endpointConfigurationTypes=PRIVATE</code>. The default endpoint type is <code>EDGE</code>.</p> <p> To handle imported <code>basePath</code>, set <code>parameters</code> as <code>basePath=ignore</code>, <code>basePath=prepend</code> or <code>basePath=split</code>.</p> <p>For example, the AWS CLI command to exclude documentation from the imported API is:</p> <pre><code>aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'</code></pre> <p>The AWS CLI command to set the regional endpoint on the imported API is:</p> <pre><code>aws apigateway import-rest-api --parameters endpointConfigurationTypes=REGIONAL --body 'file:///path/to/imported-api-body.json'</code></pre>",
"Integration$requestParameters": "<p>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 <code>method.request.{location}.{name}</code>, where <code>location</code> is <code>querystring</code>, <code>path</code>, or <code>header</code> and <code>name</code> must be a valid and unique method request parameter name.</p>",
"Integration$requestTemplates": "<p>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.</p>",
"IntegrationResponse$responseParameters": "<p>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 <code>method.response.header.{name}</code>, where <code>name</code> is a valid and unique header name. The mapped non-static value must match the pattern of <code>integration.response.header.{name}</code> or <code>integration.response.body.{JSON-expression}</code>, where <code>name</code> is a valid and unique response header name and <code>JSON-expression</code> is a valid JSON expression without the <code>$</code> prefix.</p>",
@ -1205,7 +1205,7 @@
"PutIntegrationResponseRequest$responseTemplates": "<p>Specifies a put integration response's templates.</p>",
"PutMethodRequest$requestModels": "<p>Specifies the <a>Model</a> 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 <a>Model</a> name as the value.</p>",
"PutMethodResponseRequest$responseModels": "<p>Specifies the <a>Model</a> 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 <a>Model</a> name as the value.</p>",
"PutRestApiRequest$parameters": "<p>Custom header parameters as part of the request. For example, to exclude <a>DocumentationParts</a> from an imported API, set <code>ignore=documentation</code> as a <code>parameters</code> value, as in the AWS CLI command of <code>aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json</code>.</p>",
"PutRestApiRequest$parameters": "<p>Custom header parameters as part of the request. For example, to exclude <a>DocumentationParts</a> from an imported API, set <code>ignore=documentation</code> as a <code>parameters</code> value, as in the AWS CLI command of <code>aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'</code>.</p>",
"Stage$variables": "<p>A map that defines the stage variables for a <a>Stage</a> resource. Variable names can have alphanumeric and underscore characters, and the values must match <code>[A-Za-z0-9-._~:/?#&amp;=,]+</code>.</p>",
"Stage$tags": "<p>The collection of tags. Each tag element is associated with a given resource.</p>",
"TagResourceRequest$tags": "<p>[Required] The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with <code>aws:</code>. The tag value can be up to 256 characters.</p>",

View file

@ -493,6 +493,16 @@
"min":1,
"sensitive":true
},
"Action":{
"type":"string",
"enum":[
"CLIPBOARD_COPY_FROM_LOCAL_DEVICE",
"CLIPBOARD_COPY_TO_LOCAL_DEVICE",
"FILE_UPLOAD",
"FILE_DOWNLOAD",
"PRINTING_TO_LOCAL_DEVICE"
]
},
"Application":{
"type":"structure",
"members":{
@ -685,7 +695,8 @@
"DisplayName":{"shape":"DisplayName"},
"StorageConnectors":{"shape":"StorageConnectorList"},
"RedirectURL":{"shape":"RedirectURL"},
"FeedbackURL":{"shape":"FeedbackURL"}
"FeedbackURL":{"shape":"FeedbackURL"},
"UserSettings":{"shape":"UserSettingList"}
}
},
"CreateStackResult":{
@ -914,6 +925,10 @@
"type":"string",
"max":100
},
"Domain":{
"type":"string",
"max":64
},
"DomainJoinInfo":{
"type":"structure",
"members":{
@ -921,6 +936,11 @@
"OrganizationalUnitDistinguishedName":{"shape":"OrganizationalUnitDistinguishedName"}
}
},
"DomainList":{
"type":"list",
"member":{"shape":"Domain"},
"max":10
},
"ErrorMessage":{"type":"string"},
"ExpireSessionRequest":{
"type":"structure",
@ -1247,6 +1267,13 @@
"type":"list",
"member":{"shape":"OrganizationalUnitDistinguishedName"}
},
"Permission":{
"type":"string",
"enum":[
"ENABLED",
"DISABLED"
]
},
"PlatformType":{
"type":"string",
"enum":["WINDOWS"]
@ -1362,16 +1389,20 @@
"StorageConnectors":{"shape":"StorageConnectorList"},
"RedirectURL":{"shape":"RedirectURL"},
"FeedbackURL":{"shape":"FeedbackURL"},
"StackErrors":{"shape":"StackErrors"}
"StackErrors":{"shape":"StackErrors"},
"UserSettings":{"shape":"UserSettingList"}
}
},
"StackAttribute":{
"type":"string",
"enum":[
"STORAGE_CONNECTORS",
"STORAGE_CONNECTOR_HOMEFOLDERS",
"STORAGE_CONNECTOR_GOOGLE_DRIVE",
"REDIRECT_URL",
"FEEDBACK_URL",
"THEME_NAME"
"THEME_NAME",
"USER_SETTINGS"
]
},
"StackAttributes":{
@ -1456,7 +1487,8 @@
"required":["ConnectorType"],
"members":{
"ConnectorType":{"shape":"StorageConnectorType"},
"ResourceIdentifier":{"shape":"ResourceIdentifier"}
"ResourceIdentifier":{"shape":"ResourceIdentifier"},
"Domains":{"shape":"DomainList"}
}
},
"StorageConnectorList":{
@ -1465,7 +1497,10 @@
},
"StorageConnectorType":{
"type":"string",
"enum":["HOMEFOLDERS"]
"enum":[
"HOMEFOLDERS",
"GOOGLE_DRIVE"
]
},
"StreamingUrlUserId":{
"type":"string",
@ -1600,7 +1635,8 @@
},
"RedirectURL":{"shape":"RedirectURL"},
"FeedbackURL":{"shape":"FeedbackURL"},
"AttributesToDelete":{"shape":"StackAttributes"}
"AttributesToDelete":{"shape":"StackAttributes"},
"UserSettings":{"shape":"UserSettingList"}
}
},
"UpdateStackResult":{
@ -1614,6 +1650,22 @@
"max":32,
"min":2
},
"UserSetting":{
"type":"structure",
"required":[
"Action",
"Permission"
],
"members":{
"Action":{"shape":"Action"},
"Permission":{"shape":"Permission"}
}
},
"UserSettingList":{
"type":"list",
"member":{"shape":"UserSetting"},
"min":1
},
"VisibilityType":{
"type":"string",
"enum":[

View file

@ -49,6 +49,12 @@
"ServiceAccountCredentials$AccountPassword": "<p>The password for the account.</p>"
}
},
"Action": {
"base": null,
"refs": {
"UserSetting$Action": "<p>The action that is enabled or disabled.</p>"
}
},
"Application": {
"base": "<p>Describes an application in the application catalog.</p>",
"refs": {
@ -380,6 +386,12 @@
"UpdateStackRequest$DisplayName": "<p>The stack name for display.</p>"
}
},
"Domain": {
"base": "GSuite domain for GDrive integration.",
"refs": {
"DomainList$member": null
}
},
"DomainJoinInfo": {
"base": "<p>Contains the information needed to join a Microsoft Active Directory domain.</p>",
"refs": {
@ -390,6 +402,12 @@
"UpdateFleetRequest$DomainJoinInfo": "<p>The information needed to join a Microsoft Active Directory domain.</p>"
}
},
"DomainList": {
"base": null,
"refs": {
"StorageConnector$Domains": "<p>The names of the domains for the G Suite account.</p>"
}
},
"ErrorMessage": {
"base": "<p>The error message in the exception.</p>",
"refs": {
@ -666,6 +684,12 @@
"UpdateDirectoryConfigRequest$OrganizationalUnitDistinguishedNames": "<p>The distinguished names of the organizational units for computer accounts.</p>"
}
},
"Permission": {
"base": null,
"refs": {
"UserSetting$Permission": "<p>Indicates whether the action is enabled or disabled.</p>"
}
},
"PlatformType": {
"base": null,
"refs": {
@ -842,7 +866,7 @@
}
},
"StorageConnector": {
"base": "<p>Describes a storage connector.</p>",
"base": "<p>Describes a connector to enable persistent storage for users.</p>",
"refs": {
"StorageConnectorList$member": null
}
@ -1064,6 +1088,20 @@
"Session$UserId": "<p>The identifier of the user for whom the session was created.</p>"
}
},
"UserSetting": {
"base": "<p>Describes an action and whether the action is enabled or disabled for users during their streaming sessions.</p>",
"refs": {
"UserSettingList$member": null
}
},
"UserSettingList": {
"base": null,
"refs": {
"CreateStackRequest$UserSettings": "<p>The actions that are enabled or disabled for users during their streaming sessions. By default, these actions are enabled. </p>",
"Stack$UserSettings": "<p>The actions that are enabled or disabled for users during their streaming sessions. By default these actions are enabled.</p>",
"UpdateStackRequest$UserSettings": "<p>The actions that are enabled or disabled for users during their streaming sessions. By default, these actions are enabled.</p>"
}
},
"VisibilityType": {
"base": null,
"refs": {

View file

@ -7,6 +7,7 @@
"protocol":"json",
"serviceAbbreviation":"AWSBudgets",
"serviceFullName":"AWS Budgets",
"serviceId":"Budgets",
"signatureVersion":"v4",
"targetPrefix":"AWSBudgetServiceGateway",
"uid":"budgets-2016-10-20"
@ -242,7 +243,8 @@
"enum":[
"USAGE",
"COST",
"RI_UTILIZATION"
"RI_UTILIZATION",
"RI_COVERAGE"
]
},
"Budgets":{
@ -585,7 +587,7 @@
},
"NumericValue":{
"type":"string",
"pattern":"[0-9]*(\\.)?[0-9]+"
"pattern":"([0-9]*\\.)?[0-9]+"
},
"Spend":{
"type":"structure",

View file

@ -1,6 +1,6 @@
{
"version": "2.0",
"service": "<p>Budgets enable you to plan your service usage, service costs, and your RI utilization. You can also track how close your plan is to your budgeted amount or to the free tier limits. Budgets provide you with a quick way to see your usage-to-date and current estimated charges from AWS and to see how much your predicted usage accrues in charges by the end of the month. Budgets also compare current estimates and charges to the amount that you indicated you want to use or spend and lets you see how much of your budget has been used. AWS updates your budget status several times a day. Budgets track your unblended costs, subscriptions, and refunds. You can create the following types of budgets:</p> <ul> <li> <p>Cost budgets allow you to say how much you want to spend on a service.</p> </li> <li> <p>Usage budgets allow you to say how many hours you want to use for one or more services.</p> </li> <li> <p>RI utilization budgets allow you to define a utilization threshold and receive alerts when RIs are tracking below that threshold.</p> </li> </ul> <p>You can create up to 20,000 budgets per AWS master account. Your first two budgets are free of charge. Each additional budget costs $0.02 per day. You can set up optional notifications that warn you if you exceed, or are forecasted to exceed, your budgeted amount. You can have notifications sent to an Amazon SNS topic, to an email address, or to both. For more information, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-sns-policy.html\">Creating an Amazon SNS Topic for Budget Notifications</a>. AWS Free Tier usage alerts via AWS Budgets are provided for you, and do not count toward your budget limits.</p> <p>Service Endpoint</p> <p>The AWS Budgets API provides the following endpoint:</p> <ul> <li> <p>https://budgets.us-east-1.amazonaws.com</p> </li> </ul>",
"service": "<p>Budgets enable you to plan your service usage, service costs, and your RI utilization. You can also track how close your plan is to your budgeted amount or to the free tier limits. Budgets provide you with a quick way to see your usage-to-date and current estimated charges from AWS and to see how much your predicted usage accrues in charges by the end of the month. Budgets also compare current estimates and charges to the amount that you indicated you want to use or spend and lets you see how much of your budget has been used. AWS updates your budget status several times a day. Budgets track your unblended costs, subscriptions, and refunds. You can create the following types of budgets:</p> <ul> <li> <p>Cost budgets allow you to say how much you want to spend on a service.</p> </li> <li> <p>Usage budgets allow you to say how many hours you want to use for one or more services.</p> </li> <li> <p>RI utilization budgets allow you to define a utilization threshold and receive alerts when RIs are tracking below that threshold.</p> </li> </ul> <p>You can create up to 20,000 budgets per AWS master account. Your first two budgets are free of charge. Each additional budget costs $0.02 per day. You can set up optional notifications that warn you if you exceed, or are forecasted to exceed, your budgeted amount. You can have notifications sent to an Amazon SNS topic, to an email address, or to both. For more information, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-sns-policy.html\">Creating an Amazon SNS Topic for Budget Notifications</a>. AWS Free Tier usage alerts via AWS Budgets are provided for you, and do not count toward your budget limits.</p> <p>Service Endpoint</p> <p>The AWS Budgets API provides the following endpoint:</p> <ul> <li> <p>https://budgets.amazonaws.com</p> </li> </ul> <p>For information about costs associated with the AWS Budgets API, see <a href=\"https://aws.amazon.com/aws-cost-management/pricing/\">AWS Cost Management Pricing</a>.</p>",
"operations": {
"CreateBudget": "<p>Creates a budget and, if included, notifications and subscribers. </p>",
"CreateNotification": "<p>Creates a notification. You must create the budget before you create the associated notification.</p>",

View file

@ -110,6 +110,8 @@
"type":"string",
"enum":["PAYER"]
},
"AmortizedRecurringFee":{"type":"string"},
"AmortizedUpfrontFee":{"type":"string"},
"AttributeType":{"type":"string"},
"AttributeValue":{"type":"string"},
"Attributes":{
@ -482,6 +484,7 @@
"key":{"shape":"MetricName"},
"value":{"shape":"MetricValue"}
},
"NetRISavings":{"type":"string"},
"NextPageToken":{"type":"string"},
"NonNegativeInteger":{
"type":"integer",
@ -494,6 +497,7 @@
"CONVERTIBLE"
]
},
"OnDemandCostOfRIHoursUsed":{"type":"string"},
"OnDemandHours":{"type":"string"},
"PageSize":{"type":"integer"},
"PaymentOption":{
@ -531,7 +535,13 @@
"UtilizationPercentage":{"shape":"UtilizationPercentage"},
"PurchasedHours":{"shape":"PurchasedHours"},
"TotalActualHours":{"shape":"TotalActualHours"},
"UnusedHours":{"shape":"UnusedHours"}
"UnusedHours":{"shape":"UnusedHours"},
"OnDemandCostOfRIHoursUsed":{"shape":"OnDemandCostOfRIHoursUsed"},
"NetRISavings":{"shape":"NetRISavings"},
"TotalPotentialRISavings":{"shape":"TotalPotentialRISavings"},
"AmortizedUpfrontFee":{"shape":"AmortizedUpfrontFee"},
"AmortizedRecurringFee":{"shape":"AmortizedRecurringFee"},
"TotalAmortizedFee":{"shape":"TotalAmortizedFee"}
}
},
"ReservationCoverageGroup":{
@ -659,6 +669,8 @@
]
},
"TotalActualHours":{"type":"string"},
"TotalAmortizedFee":{"type":"string"},
"TotalPotentialRISavings":{"type":"string"},
"TotalRunningHours":{"type":"string"},
"UnusedHours":{"type":"string"},
"UtilizationByTime":{

View file

@ -17,6 +17,18 @@
"ReservationPurchaseRecommendation$AccountScope": "<p>The account scope that AWS recommends that you purchase this instance for. For example, you can purchase this reservation for an entire organization in AWS Organizations.</p>"
}
},
"AmortizedRecurringFee": {
"base": null,
"refs": {
"ReservationAggregates$AmortizedRecurringFee": "<p>The monthly cost of your RI, amortized over the RI period.</p>"
}
},
"AmortizedUpfrontFee": {
"base": null,
"refs": {
"ReservationAggregates$AmortizedUpfrontFee": "<p>The upfront cost of your RI, amortized over the RI period.</p>"
}
},
"AttributeType": {
"base": null,
"refs": {
@ -158,7 +170,7 @@
}
},
"Expression": {
"base": "<p>Use <code>Expression</code> to filter by cost or by usage. There are two patterns: </p> <ul> <li> <p>Simple dimension values - You can set the dimension name and values for the filters that you plan to use. For example, you can filter for <code>INSTANCE_TYPE==m4.xlarge OR INSTANCE_TYPE==c4.large</code>. The <code>Expression</code> for that looks like this:</p> <p> <code>{ \"Dimensions\": { \"Key\": \"INSTANCE_TYPE\", \"Values\": [ \"m4.xlarge\", “c4.large” ] } }</code> </p> <p>The list of dimension values are OR'd together to retrieve cost or usage data. You can create <code>Expression</code> and <code>DimensionValues</code> objects using either <code>with*</code> methods or <code>set*</code> methods in multiple lines. </p> </li> <li> <p>Compound dimension values with logical operations - You can use multiple <code>Expression</code> types and the logical operators <code>AND/OR/NOT</code> to create a list of one or more <code>Expression</code> objects. This allows you to filter on more advanced options. For example, you can filter on <code>((INSTANCE_TYPE == m4.large OR INSTANCE_TYPE == m3.large) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer)</code>. The <code>Expression</code> for that looks like this:</p> <p> <code>{ \"And\": [ {\"Or\": [ {\"Dimensions\": { \"Key\": \"INSTANCE_TYPE\", \"Values\": [ \"m4.x.large\", \"c4.large\" ] }}, {\"Tag\": { \"Key\": \"TagName\", \"Values\": [\"Value1\"] } } ]}, {\"Not\": {\"dimensions\": { \"Key\": \"USAGE_TYPE\", \"Values\": [\"DataTransfer\"] }}} ] } </code> </p> <note> <p>Because each <code>Expression</code> can have only one operator, the service returns an error if more than one is specified. The following example shows an <code>Expression</code> object that creates an error.</p> </note> <p> <code> { \"And\": [ ... ], \"DimensionValues\": { \"Dimension\": \"USAGE_TYPE\", \"Values\": [ \"DataTransfer\" ] } } </code> </p> </li> </ul>",
"base": "<p>Use <code>Expression</code> to filter by cost or by usage. There are two patterns: </p> <ul> <li> <p>Simple dimension values - You can set the dimension name and values for the filters that you plan to use. For example, you can filter for <code>INSTANCE_TYPE==m4.xlarge OR INSTANCE_TYPE==c4.large</code>. The <code>Expression</code> for that looks like this:</p> <p> <code>{ \"Dimensions\": { \"Key\": \"INSTANCE_TYPE\", \"Values\": [ \"m4.xlarge\", “c4.large” ] } }</code> </p> <p>The list of dimension values are OR'd together to retrieve cost or usage data. You can create <code>Expression</code> and <code>DimensionValues</code> objects using either <code>with*</code> methods or <code>set*</code> methods in multiple lines. </p> </li> <li> <p>Compound dimension values with logical operations - You can use multiple <code>Expression</code> types and the logical operators <code>AND/OR/NOT</code> to create a list of one or more <code>Expression</code> objects. This allows you to filter on more advanced options. For example, you can filter on <code>((INSTANCE_TYPE == m4.large OR INSTANCE_TYPE == m3.large) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer)</code>. The <code>Expression</code> for that looks like this:</p> <p> <code>{ \"And\": [ {\"Or\": [ {\"Dimensions\": { \"Key\": \"INSTANCE_TYPE\", \"Values\": [ \"m4.x.large\", \"c4.large\" ] }}, {\"Tags\": { \"Key\": \"TagName\", \"Values\": [\"Value1\"] } } ]}, {\"Not\": {\"Dimensions\": { \"Key\": \"USAGE_TYPE\", \"Values\": [\"DataTransfer\"] }}} ] } </code> </p> <note> <p>Because each <code>Expression</code> can have only one operator, the service returns an error if more than one is specified. The following example shows an <code>Expression</code> object that creates an error.</p> </note> <p> <code> { \"And\": [ ... ], \"DimensionValues\": { \"Dimension\": \"USAGE_TYPE\", \"Values\": [ \"DataTransfer\" ] } } </code> </p> </li> </ul>",
"refs": {
"Expression$Not": "<p>Return results that don't match a <code>Dimension</code> object.</p>",
"Expressions$member": null,
@ -404,6 +416,12 @@
"ResultByTime$Total": "<p>The total amount of cost or usage accrued during the time period.</p>"
}
},
"NetRISavings": {
"base": null,
"refs": {
"ReservationAggregates$NetRISavings": "<p>How much you saved due to purchasing and utilizing RIs. This is calculated by subtracting the <code>TotalAmortizedFee</code> from the <code>OnDemandCostOfRIHoursUsed</code>.</p>"
}
},
"NextPageToken": {
"base": null,
"refs": {
@ -433,6 +451,12 @@
"EC2Specification$OfferingClass": "<p>Whether you want a recommendation for standard or convertible reservations.</p>"
}
},
"OnDemandCostOfRIHoursUsed": {
"base": null,
"refs": {
"ReservationAggregates$OnDemandCostOfRIHoursUsed": "<p>How much your RIs would cost if charged On-Demand rates.</p>"
}
},
"OnDemandHours": {
"base": null,
"refs": {
@ -616,6 +640,18 @@
"ReservationAggregates$TotalActualHours": "<p>The total number of RI hours that you used.</p>"
}
},
"TotalAmortizedFee": {
"base": null,
"refs": {
"ReservationAggregates$TotalAmortizedFee": "<p>The total cost of your RI, amortized over the RI period.</p>"
}
},
"TotalPotentialRISavings": {
"base": null,
"refs": {
"ReservationAggregates$TotalPotentialRISavings": "<p>How much you could save if you use your entire reservation.</p>"
}
},
"TotalRunningHours": {
"base": null,
"refs": {

View file

@ -596,6 +596,27 @@
{"shape":"FacetNotFoundException"}
]
},
"GetLinkAttributes":{
"name":"GetLinkAttributes",
"http":{
"method":"POST",
"requestUri":"/amazonclouddirectory/2017-01-11/typedlink/attributes/get",
"responseCode":200
},
"input":{"shape":"GetLinkAttributesRequest"},
"output":{"shape":"GetLinkAttributesResponse"},
"errors":[
{"shape":"InternalServiceException"},
{"shape":"InvalidArnException"},
{"shape":"RetryableConflictException"},
{"shape":"ValidationException"},
{"shape":"LimitExceededException"},
{"shape":"AccessDeniedException"},
{"shape":"DirectoryNotEnabledException"},
{"shape":"ResourceNotFoundException"},
{"shape":"FacetValidationException"}
]
},
"GetObjectAttributes":{
"name":"GetObjectAttributes",
"http":{
@ -1220,6 +1241,27 @@
{"shape":"InvalidRuleException"}
]
},
"UpdateLinkAttributes":{
"name":"UpdateLinkAttributes",
"http":{
"method":"POST",
"requestUri":"/amazonclouddirectory/2017-01-11/typedlink/attributes/update",
"responseCode":200
},
"input":{"shape":"UpdateLinkAttributesRequest"},
"output":{"shape":"UpdateLinkAttributesResponse"},
"errors":[
{"shape":"InternalServiceException"},
{"shape":"InvalidArnException"},
{"shape":"RetryableConflictException"},
{"shape":"ValidationException"},
{"shape":"LimitExceededException"},
{"shape":"AccessDeniedException"},
{"shape":"DirectoryNotEnabledException"},
{"shape":"ResourceNotFoundException"},
{"shape":"FacetValidationException"}
]
},
"UpdateObjectAttributes":{
"name":"UpdateObjectAttributes",
"http":{
@ -1238,6 +1280,7 @@
{"shape":"AccessDeniedException"},
{"shape":"DirectoryNotEnabledException"},
{"shape":"ResourceNotFoundException"},
{"shape":"LinkNameAlreadyInUseException"},
{"shape":"FacetValidationException"}
]
},
@ -1744,6 +1787,23 @@
"members":{
}
},
"BatchGetLinkAttributes":{
"type":"structure",
"required":[
"TypedLinkSpecifier",
"AttributeNames"
],
"members":{
"TypedLinkSpecifier":{"shape":"TypedLinkSpecifier"},
"AttributeNames":{"shape":"AttributeNameList"}
}
},
"BatchGetLinkAttributesResponse":{
"type":"structure",
"members":{
"Attributes":{"shape":"AttributeKeyAndValueList"}
}
},
"BatchGetObjectAttributes":{
"type":"structure",
"required":[
@ -1983,7 +2043,8 @@
"LookupPolicy":{"shape":"BatchLookupPolicy"},
"ListIndex":{"shape":"BatchListIndex"},
"ListOutgoingTypedLinks":{"shape":"BatchListOutgoingTypedLinks"},
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinks"}
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinks"},
"GetLinkAttributes":{"shape":"BatchGetLinkAttributes"}
}
},
"BatchReadOperationList":{
@ -2041,7 +2102,8 @@
"LookupPolicy":{"shape":"BatchLookupPolicyResponse"},
"ListIndex":{"shape":"BatchListIndexResponse"},
"ListOutgoingTypedLinks":{"shape":"BatchListOutgoingTypedLinksResponse"},
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinksResponse"}
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinksResponse"},
"GetLinkAttributes":{"shape":"BatchGetLinkAttributesResponse"}
}
},
"BatchReferenceName":{"type":"string"},
@ -2061,6 +2123,22 @@
"members":{
}
},
"BatchUpdateLinkAttributes":{
"type":"structure",
"required":[
"TypedLinkSpecifier",
"AttributeUpdates"
],
"members":{
"TypedLinkSpecifier":{"shape":"TypedLinkSpecifier"},
"AttributeUpdates":{"shape":"LinkAttributeUpdateList"}
}
},
"BatchUpdateLinkAttributesResponse":{
"type":"structure",
"members":{
}
},
"BatchUpdateObjectAttributes":{
"type":"structure",
"required":[
@ -2126,7 +2204,8 @@
"AttachToIndex":{"shape":"BatchAttachToIndex"},
"DetachFromIndex":{"shape":"BatchDetachFromIndex"},
"AttachTypedLink":{"shape":"BatchAttachTypedLink"},
"DetachTypedLink":{"shape":"BatchDetachTypedLink"}
"DetachTypedLink":{"shape":"BatchDetachTypedLink"},
"UpdateLinkAttributes":{"shape":"BatchUpdateLinkAttributes"}
}
},
"BatchWriteOperationList":{
@ -2149,7 +2228,8 @@
"AttachToIndex":{"shape":"BatchAttachToIndexResponse"},
"DetachFromIndex":{"shape":"BatchDetachFromIndexResponse"},
"AttachTypedLink":{"shape":"BatchAttachTypedLinkResponse"},
"DetachTypedLink":{"shape":"BatchDetachTypedLinkResponse"}
"DetachTypedLink":{"shape":"BatchDetachTypedLinkResponse"},
"UpdateLinkAttributes":{"shape":"BatchUpdateLinkAttributesResponse"}
}
},
"BatchWriteOperationResponseList":{
@ -2764,6 +2844,30 @@
"Facet":{"shape":"Facet"}
}
},
"GetLinkAttributesRequest":{
"type":"structure",
"required":[
"DirectoryArn",
"TypedLinkSpecifier",
"AttributeNames"
],
"members":{
"DirectoryArn":{
"shape":"Arn",
"location":"header",
"locationName":"x-amz-data-partition"
},
"TypedLinkSpecifier":{"shape":"TypedLinkSpecifier"},
"AttributeNames":{"shape":"AttributeNameList"},
"ConsistencyLevel":{"shape":"ConsistencyLevel"}
}
},
"GetLinkAttributesResponse":{
"type":"structure",
"members":{
"Attributes":{"shape":"AttributeKeyAndValueList"}
}
},
"GetObjectAttributesRequest":{
"type":"structure",
"required":[
@ -2959,6 +3063,24 @@
"error":{"httpStatusCode":400},
"exception":true
},
"LinkAttributeAction":{
"type":"structure",
"members":{
"AttributeActionType":{"shape":"UpdateActionType"},
"AttributeUpdateValue":{"shape":"TypedAttributeValue"}
}
},
"LinkAttributeUpdate":{
"type":"structure",
"members":{
"AttributeKey":{"shape":"AttributeKey"},
"AttributeAction":{"shape":"LinkAttributeAction"}
}
},
"LinkAttributeUpdateList":{
"type":"list",
"member":{"shape":"LinkAttributeUpdate"}
},
"LinkName":{
"type":"string",
"max":64,
@ -3975,6 +4097,28 @@
"members":{
}
},
"UpdateLinkAttributesRequest":{
"type":"structure",
"required":[
"DirectoryArn",
"TypedLinkSpecifier",
"AttributeUpdates"
],
"members":{
"DirectoryArn":{
"shape":"Arn",
"location":"header",
"locationName":"x-amz-data-partition"
},
"TypedLinkSpecifier":{"shape":"TypedLinkSpecifier"},
"AttributeUpdates":{"shape":"LinkAttributeUpdateList"}
}
},
"UpdateLinkAttributesResponse":{
"type":"structure",
"members":{
}
},
"UpdateObjectAttributesRequest":{
"type":"structure",
"required":[

View file

@ -30,6 +30,7 @@
"GetAppliedSchemaVersion": "<p>Returns current applied schema version ARN, including the minor version in use.</p>",
"GetDirectory": "<p>Retrieves metadata about a directory.</p>",
"GetFacet": "<p>Gets details of the <a>Facet</a>, such as facet name, attributes, <a>Rule</a>s, or <code>ObjectType</code>. You can call this on all kinds of schema facets -- published, development, or applied.</p>",
"GetLinkAttributes": "<p>Retrieves attributes that are associated with a typed link.</p>",
"GetObjectAttributes": "<p>Retrieves attributes within a facet that are associated with an object.</p>",
"GetObjectInformation": "<p>Retrieves metadata about an object.</p>",
"GetSchemaAsJson": "<p>Retrieves a JSON representation of the schema. See <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/cd_schemas.html#jsonformat\">JSON Schema Format</a> for more information.</p>",
@ -60,6 +61,7 @@
"TagResource": "<p>An API operation for adding tags to a resource.</p>",
"UntagResource": "<p>An API operation for removing tags from a resource.</p>",
"UpdateFacet": "<p>Does the following:</p> <ol> <li> <p>Adds new <code>Attributes</code>, <code>Rules</code>, or <code>ObjectTypes</code>.</p> </li> <li> <p>Updates existing <code>Attributes</code>, <code>Rules</code>, or <code>ObjectTypes</code>.</p> </li> <li> <p>Deletes existing <code>Attributes</code>, <code>Rules</code>, or <code>ObjectTypes</code>.</p> </li> </ol>",
"UpdateLinkAttributes": "<p>Updates a given typed links attributes. Attributes to be updated must not contribute to the typed links identity, as defined by its <code>IdentityAttributeOrder</code>.</p>",
"UpdateObjectAttributes": "<p>Updates a given object's attributes.</p>",
"UpdateSchema": "<p>Updates the schema name with a new name. Only development schema names can be updated.</p>",
"UpdateTypedLinkFacet": "<p>Updates a <a>TypedLinkFacet</a>. For more information, see <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/objectsandlinks.html#typedlink\">Typed link</a>.</p>",
@ -133,6 +135,7 @@
"GetAppliedSchemaVersionRequest$SchemaArn": "<p>The ARN of the applied schema.</p>",
"GetAppliedSchemaVersionResponse$AppliedSchemaArn": "<p>Current applied schema ARN, including the minor version in use if one was provided.</p>",
"GetFacetRequest$SchemaArn": "<p>The Amazon Resource Name (ARN) that is associated with the <a>Facet</a>. For more information, see <a>arns</a>.</p>",
"GetLinkAttributesRequest$DirectoryArn": "<p>The Amazon Resource Name (ARN) that is associated with the Directory where the typed link resides. For more information, see <a>arns</a> or <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/objectsandlinks.html#typedlink\">Typed link</a>.</p>",
"GetObjectAttributesRequest$DirectoryArn": "<p>The Amazon Resource Name (ARN) that is associated with the <a>Directory</a> where the object resides.</p>",
"GetObjectInformationRequest$DirectoryArn": "<p>The ARN of the directory being retrieved.</p>",
"GetSchemaAsJsonRequest$SchemaArn": "<p>The ARN of the schema to retrieve.</p>",
@ -166,6 +169,7 @@
"TypedLinkSchemaAndFacetName$SchemaArn": "<p>The Amazon Resource Name (ARN) that is associated with the schema. For more information, see <a>arns</a>.</p>",
"UntagResourceRequest$ResourceArn": "<p>The Amazon Resource Name (ARN) of the resource. Tagging is only supported for directories.</p>",
"UpdateFacetRequest$SchemaArn": "<p>The Amazon Resource Name (ARN) that is associated with the <a>Facet</a>. For more information, see <a>arns</a>.</p>",
"UpdateLinkAttributesRequest$DirectoryArn": "<p>The Amazon Resource Name (ARN) that is associated with the Directory where the updated typed link resides. For more information, see <a>arns</a> or <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/objectsandlinks.html#typedlink\">Typed link</a>.</p>",
"UpdateObjectAttributesRequest$DirectoryArn": "<p>The Amazon Resource Name (ARN) that is associated with the <a>Directory</a> where the object resides. For more information, see <a>arns</a>.</p>",
"UpdateSchemaRequest$SchemaArn": "<p>The Amazon Resource Name (ARN) of the development schema. For more information, see <a>arns</a>.</p>",
"UpdateSchemaResponse$SchemaArn": "<p>The ARN that is associated with the updated schema. For more information, see <a>arns</a>.</p>",
@ -232,6 +236,7 @@
"refs": {
"AttributeKeyAndValue$Key": "<p>The key of the attribute.</p>",
"AttributeKeyList$member": null,
"LinkAttributeUpdate$AttributeKey": "<p>The key of the attribute being updated.</p>",
"ObjectAttributeRange$AttributeKey": "<p>The key of the attribute that the attribute range covers.</p>",
"ObjectAttributeUpdate$ObjectAttributeKey": "<p>The key of the attribute being updated.</p>"
}
@ -248,9 +253,11 @@
"AddFacetToObjectRequest$ObjectAttributeList": "<p>Attributes on the facet that you are adding to the object.</p>",
"BatchAddFacetToObject$ObjectAttributeList": "<p>The attributes to set on the object.</p>",
"BatchCreateObject$ObjectAttributeList": "<p>An attribute map, which contains an attribute ARN as the key and attribute value as the map value.</p>",
"BatchGetLinkAttributesResponse$Attributes": "<p>The attributes that are associated with the typed link.</p>",
"BatchGetObjectAttributesResponse$Attributes": "<p>The attribute values that are associated with an object.</p>",
"BatchListObjectAttributesResponse$Attributes": "<p>The attributes map that is associated with the object. <code>AttributeArn</code> is the key; attribute value is the value.</p>",
"CreateObjectRequest$ObjectAttributeList": "<p>The attribute map whose attribute ARN contains the key and attribute value as the map value.</p>",
"GetLinkAttributesResponse$Attributes": "<p>The attributes that are associated with the typed link.</p>",
"GetObjectAttributesResponse$Attributes": "<p>The attributes that are associated with the object.</p>",
"IndexAttachment$IndexedAttributes": "<p>The indexed attribute values.</p>",
"ListObjectAttributesResponse$Attributes": "<p>Attributes map that is associated with the object. <code>AttributeArn</code> is the key, and attribute value is the value.</p>"
@ -292,7 +299,9 @@
"AttributeNameList": {
"base": null,
"refs": {
"BatchGetLinkAttributes$AttributeNames": "<p>A list of attribute names whose values will be retrieved.</p>",
"BatchGetObjectAttributes$AttributeNames": "<p>List of attribute names whose values will be retrieved.</p>",
"GetLinkAttributesRequest$AttributeNames": "<p>A list of attribute names whose values will be retrieved.</p>",
"GetObjectAttributesRequest$AttributeNames": "<p>List of attribute names whose values will be retrieved.</p>",
"GetTypedLinkFacetInformationResponse$IdentityAttributeOrder": "<p>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 <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/objectsandlinks.html#typedlink\">Typed link</a>.</p>",
"TypedLinkFacet$IdentityAttributeOrder": "<p>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 <a>ListOutgoingTypedLinks</a> and <a>ListIncomingTypedLinks</a> for details.</p>",
@ -443,6 +452,18 @@
"BatchWriteOperationResponse$DetachTypedLink": "<p>Detaches a typed link from a specified source and target object. For more information, see <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/objectsandlinks.html#typedlink\">Typed link</a>.</p>"
}
},
"BatchGetLinkAttributes": {
"base": "<p>Retrieves attributes that are associated with a typed link inside a <a>BatchRead</a> operation. For more information, see <a>GetLinkAttributes</a> and <a>BatchReadRequest$Operations</a>.</p>",
"refs": {
"BatchReadOperation$GetLinkAttributes": "<p>Retrieves attributes that are associated with a typed link.</p>"
}
},
"BatchGetLinkAttributesResponse": {
"base": "<p>Represents the output of a <a>GetLinkAttributes</a> response operation.</p>",
"refs": {
"BatchReadSuccessfulResponse$GetLinkAttributes": "<p>The list of attributes to retrieve from the typed link.</p>"
}
},
"BatchGetObjectAttributes": {
"base": "<p>Retrieves attributes within a facet that are associated with an object inside an <a>BatchRead</a> operation. For more information, see <a>GetObjectAttributes</a> and <a>BatchReadRequest$Operations</a>.</p>",
"refs": {
@ -665,6 +686,18 @@
"BatchWriteOperationResponse$RemoveFacetFromObject": "<p>The result of a batch remove facet from object operation.</p>"
}
},
"BatchUpdateLinkAttributes": {
"base": "<p>Updates a given typed links attributes inside a <a>BatchRead</a> operation. Attributes to be updated must not contribute to the typed links identity, as defined by its <code>IdentityAttributeOrder</code>. For more information, see <a>UpdateLinkAttributes</a> and <a>BatchReadRequest$Operations</a>.</p>",
"refs": {
"BatchWriteOperation$UpdateLinkAttributes": "<p>Updates a given object's attributes.</p>"
}
},
"BatchUpdateLinkAttributesResponse": {
"base": "<p>Represents the output of a <a>UpdateLinkAttributes</a> response operation.</p>",
"refs": {
"BatchWriteOperationResponse$UpdateLinkAttributes": "<p>Represents the output of a <code>BatchWrite</code> response operation.</p>"
}
},
"BatchUpdateObjectAttributes": {
"base": "<p>Represents the output of a <code>BatchUpdate</code> operation. </p>",
"refs": {
@ -754,6 +787,7 @@
"base": null,
"refs": {
"BatchReadRequest$ConsistencyLevel": "<p>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.</p>",
"GetLinkAttributesRequest$ConsistencyLevel": "<p>The consistency level at which to retrieve the attributes on a typed link.</p>",
"GetObjectAttributesRequest$ConsistencyLevel": "<p>The consistency level at which to retrieve the attributes on an object.</p>",
"GetObjectInformationRequest$ConsistencyLevel": "<p>The consistency level at which to retrieve the object information.</p>",
"ListAttachedIndicesRequest$ConsistencyLevel": "<p>The consistency level to use for this operation.</p>",
@ -1163,6 +1197,16 @@
"refs": {
}
},
"GetLinkAttributesRequest": {
"base": null,
"refs": {
}
},
"GetLinkAttributesResponse": {
"base": null,
"refs": {
}
},
"GetObjectAttributesRequest": {
"base": null,
"refs": {
@ -1273,6 +1317,25 @@
"refs": {
}
},
"LinkAttributeAction": {
"base": "<p>The action to take on a typed link attribute value. Updates are only supported for attributes which dont contribute to link identity.</p>",
"refs": {
"LinkAttributeUpdate$AttributeAction": "<p>The action to perform as part of the attribute update.</p>"
}
},
"LinkAttributeUpdate": {
"base": "<p>Structure that contains attribute update information.</p>",
"refs": {
"LinkAttributeUpdateList$member": null
}
},
"LinkAttributeUpdateList": {
"base": null,
"refs": {
"BatchUpdateLinkAttributes$AttributeUpdates": "<p>The attributes update structure.</p>",
"UpdateLinkAttributesRequest$AttributeUpdates": "<p>The attributes update structure.</p>"
}
},
"LinkName": {
"base": null,
"refs": {
@ -2052,6 +2115,7 @@
"AttributeKeyAndValue$Value": "<p>The value of the attribute.</p>",
"AttributeNameAndValue$Value": "<p>The value for the typed link.</p>",
"FacetAttributeDefinition$DefaultValue": "<p>The default value of the attribute (if configured).</p>",
"LinkAttributeAction$AttributeUpdateValue": "<p>The value that you want to update to.</p>",
"ObjectAttributeAction$ObjectAttributeUpdateValue": "<p>The value that you want to update to.</p>",
"TypedAttributeValueRange$StartValue": "<p>The value to start the range at.</p>",
"TypedAttributeValueRange$EndValue": "<p>The attribute value to terminate the range at.</p>",
@ -2148,8 +2212,12 @@
"AttachTypedLinkResponse$TypedLinkSpecifier": "<p>Returns a typed link specifier as output.</p>",
"BatchAttachTypedLinkResponse$TypedLinkSpecifier": "<p>Returns a typed link specifier as output.</p>",
"BatchDetachTypedLink$TypedLinkSpecifier": "<p>Used to accept a typed link specifier as input.</p>",
"BatchGetLinkAttributes$TypedLinkSpecifier": "<p>Allows a typed link specifier to be accepted as input.</p>",
"BatchUpdateLinkAttributes$TypedLinkSpecifier": "<p>Allows a typed link specifier to be accepted as input.</p>",
"DetachTypedLinkRequest$TypedLinkSpecifier": "<p>Used to accept a typed link specifier as input.</p>",
"TypedLinkSpecifierList$member": null
"GetLinkAttributesRequest$TypedLinkSpecifier": "<p>Allows a typed link specifier to be accepted as input.</p>",
"TypedLinkSpecifierList$member": null,
"UpdateLinkAttributesRequest$TypedLinkSpecifier": "<p>Allows a typed link specifier to be accepted as input.</p>"
}
},
"TypedLinkSpecifierList": {
@ -2180,6 +2248,7 @@
"base": null,
"refs": {
"FacetAttributeUpdate$Action": "<p>The action to perform when updating the attribute.</p>",
"LinkAttributeAction$AttributeActionType": "<p>A type that can be either <code>UPDATE_OR_CREATE</code> or <code>DELETE</code>.</p>",
"ObjectAttributeAction$ObjectAttributeActionType": "<p>A type that can be either <code>Update</code> or <code>Delete</code>.</p>",
"TypedLinkFacetAttributeUpdate$Action": "<p>The action to perform when updating the attribute.</p>"
}
@ -2194,6 +2263,16 @@
"refs": {
}
},
"UpdateLinkAttributesRequest": {
"base": null,
"refs": {
}
},
"UpdateLinkAttributesResponse": {
"base": null,
"refs": {
}
},
"UpdateObjectAttributesRequest": {
"base": null,
"refs": {

View file

@ -567,7 +567,8 @@
{"shape":"OperationInProgressException"},
{"shape":"OperationIdAlreadyExistsException"},
{"shape":"StaleRequestException"},
{"shape":"InvalidOperationException"}
{"shape":"InvalidOperationException"},
{"shape":"StackInstanceNotFoundException"}
]
},
"UpdateTerminationProtection":{
@ -889,6 +890,7 @@
"Capabilities":{"shape":"Capabilities"},
"Tags":{"shape":"Tags"},
"AdministrationRoleARN":{"shape":"RoleARN"},
"ExecutionRoleName":{"shape":"ExecutionRoleName"},
"ClientRequestToken":{
"shape":"ClientRequestToken",
"idempotencyToken":true
@ -1169,6 +1171,12 @@
"members":{
}
},
"ExecutionRoleName":{
"type":"string",
"max":64,
"min":1,
"pattern":"[a-zA-Z_0-9+=,.@-]+"
},
"ExecutionStatus":{
"type":"string",
"enum":[
@ -1966,7 +1974,8 @@
"Capabilities":{"shape":"Capabilities"},
"Tags":{"shape":"Tags"},
"StackSetARN":{"shape":"StackSetARN"},
"AdministrationRoleARN":{"shape":"RoleARN"}
"AdministrationRoleARN":{"shape":"RoleARN"},
"ExecutionRoleName":{"shape":"ExecutionRoleName"}
}
},
"StackSetARN":{"type":"string"},
@ -2008,6 +2017,7 @@
"OperationPreferences":{"shape":"StackSetOperationPreferences"},
"RetainStacks":{"shape":"RetainStacksNullable"},
"AdministrationRoleARN":{"shape":"RoleARN"},
"ExecutionRoleName":{"shape":"ExecutionRoleName"},
"CreationTimestamp":{"shape":"Timestamp"},
"EndTimestamp":{"shape":"Timestamp"}
}
@ -2292,7 +2302,7 @@
"Regions"
],
"members":{
"StackSetName":{"shape":"StackSetName"},
"StackSetName":{"shape":"StackSetNameOrId"},
"Accounts":{"shape":"AccountList"},
"Regions":{"shape":"RegionList"},
"ParameterOverrides":{"shape":"Parameters"},
@ -2329,10 +2339,13 @@
"Tags":{"shape":"Tags"},
"OperationPreferences":{"shape":"StackSetOperationPreferences"},
"AdministrationRoleARN":{"shape":"RoleARN"},
"ExecutionRoleName":{"shape":"ExecutionRoleName"},
"OperationId":{
"shape":"ClientRequestToken",
"idempotencyToken":true
}
},
"Accounts":{"shape":"AccountList"},
"Regions":{"shape":"RegionList"}
}
},
"UpdateStackSetOutput":{

View file

@ -40,7 +40,7 @@
"StopStackSetOperation": "<p>Stops an in-progress operation on a stack set and its associated stack instances. </p>",
"UpdateStack": "<p>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 <a>DescribeStacks</a> action.</p> <p>To get a copy of the template for an existing stack, you can use the <a>GetTemplate</a> action.</p> <p>For more information about creating an update template, updating a stack, and monitoring the progress of the update, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html\">Updating a Stack</a>.</p>",
"UpdateStackInstances": "<p>Updates the parameter values for stack instances for the specified accounts, within the specified regions. A stack instance refers to a stack in a specific account and region. </p> <p>You can only update stack instances in regions and accounts where they already exist; to create additional stack instances, use <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackInstances.html\">CreateStackInstances</a>. </p> <p>During stack set updates, any parameters overridden for a stack instance are not updated, but retain their overridden value.</p> <p>You can only update the parameter <i>values</i> that are specified in the stack set; to add or delete a parameter itself, use <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html\">UpdateStackSet</a> to update the stack set template. If you add a parameter to a template, before you can override the parameter value specified in the stack set you must first use <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html\">UpdateStackSet</a> to update all stack instances with the updated template and parameter value specified in the stack set. Once a stack instance has been updated with the new parameter, you can then override the parameter value using <code>UpdateStackInstances</code>.</p>",
"UpdateStackSet": "<p>Updates the stack set and <i>all</i> associated stack instances.</p> <p>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 <a>CreateStackInstances</a> calls on the specified stack set use the updated stack set.</p>",
"UpdateStackSet": "<p>Updates the stack set, and associated stack instances in the specified accounts and regions.</p> <p>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 <a>CreateStackInstances</a> calls on the specified stack set use the updated stack set.</p>",
"UpdateTerminationProtection": "<p>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 <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html\">Protecting a Stack From Being Deleted</a> in the <i>AWS CloudFormation User Guide</i>.</p> <p> For <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html\">nested stacks</a>, termination protection is set on the root stack and cannot be changed directly on the nested stack.</p>",
"ValidateTemplate": "<p>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.</p>"
},
@ -91,7 +91,8 @@
"refs": {
"CreateStackInstancesInput$Accounts": "<p>The names of one or more AWS accounts that you want to create stack instances in the specified region(s) for.</p>",
"DeleteStackInstancesInput$Accounts": "<p>The names of the AWS accounts that you want to delete stack instances for.</p>",
"UpdateStackInstancesInput$Accounts": "<p>The names of one or more AWS accounts for which you want to update parameter values for stack instances. The overridden parameter values will be applied to all stack instances in the specified accounts and regions.</p>"
"UpdateStackInstancesInput$Accounts": "<p>The names of one or more AWS accounts for which you want to update parameter values for stack instances. The overridden parameter values will be applied to all stack instances in the specified accounts and regions.</p>",
"UpdateStackSetInput$Accounts": "<p>The accounts in which to update associated stack instances. If you specify accounts, you must also specify the regions in which to update stack set instances.</p> <p>To update <i>all</i> the stack instances associated with this stack set, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p> <p>If the stack set update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, AWS CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and regions. If the stack set update does not include changes to the template or parameters, AWS CloudFormation updates the stack instances in the specified accounts and regions, while leaving all other stack instances with their existing stack instance status. </p>"
}
},
"AllowedValue": {
@ -544,6 +545,15 @@
"refs": {
}
},
"ExecutionRoleName": {
"base": null,
"refs": {
"CreateStackSetInput$ExecutionRoleName": "<p>The name of the IAM execution role to use to create the stack set. If you do not specify an execution role, AWS CloudFormation uses the <code>AWSCloudFormationStackSetExecutionRole</code> role for the stack set operation.</p> <p>Specify an IAM role only if you are using customized execution roles to control which stack resources users and groups can include in their stack sets. </p>",
"StackSet$ExecutionRoleName": "<p>The name of the IAM execution role used to create or update the stack set. </p> <p>Use customized execution roles to control which stack resources users and groups can include in their stack sets. </p>",
"StackSetOperation$ExecutionRoleName": "<p>The name of the IAM execution role used to create or update the stack set.</p> <p>Use customized execution roles to control which stack resources users and groups can include in their stack sets. </p>",
"UpdateStackSetInput$ExecutionRoleName": "<p>The name of the IAM execution role to use to update the stack set. If you do not specify an execution role, AWS CloudFormation uses the <code>AWSCloudFormationStackSetExecutionRole</code> role for the stack set operation.</p> <p>Specify an IAM role only if you are using customized execution roles to control which stack resources users and groups can include in their stack sets. </p> <p> If you specify a customized execution role, AWS CloudFormation uses that role to update the stack. If you do not specify a customized execution role, AWS CloudFormation performs the update using the role previously associated with the stack set, so long as you have permissions to perform operations on the stack set.</p>"
}
},
"ExecutionStatus": {
"base": null,
"refs": {
@ -1012,7 +1022,8 @@
"CreateStackInstancesInput$Regions": "<p>The names of one or more regions where you want to create stack instances using the specified AWS account(s). </p>",
"DeleteStackInstancesInput$Regions": "<p>The regions where you want to delete stack set instances. </p>",
"StackSetOperationPreferences$RegionOrder": "<p>The order of the regions in where you want to perform the stack operation.</p>",
"UpdateStackInstancesInput$Regions": "<p>The names of one or more regions in which you want to update parameter values for stack instances. The overridden parameter values will be applied to all stack instances in the specified accounts and regions.</p>"
"UpdateStackInstancesInput$Regions": "<p>The names of one or more regions in which you want to update parameter values for stack instances. The overridden parameter values will be applied to all stack instances in the specified accounts and regions.</p>",
"UpdateStackSetInput$Regions": "<p>The regions in which to update associated stack instances. If you specify regions, you must also specify accounts in which to update stack set instances.</p> <p>To update <i>all</i> the stack instances associated with this stack set, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p> <p>If the stack set update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, AWS CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and regions. If the stack set update does not include changes to the template or parameters, AWS CloudFormation updates the stack instances in the specified accounts and regions, while leaving all other stack instances with their existing stack instance status. </p>"
}
},
"Replacement": {
@ -1150,10 +1161,10 @@
"ContinueUpdateRollbackInput$RoleARN": "<p>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.</p> <p>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.</p>",
"CreateChangeSetInput$RoleARN": "<p>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.</p> <p>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.</p>",
"CreateStackInput$RoleARN": "<p>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.</p> <p>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.</p>",
"CreateStackSetInput$AdministrationRoleARN": "<p>The Amazon Resource Number (ARN) of the IAM role to use to create this stack set. </p> <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html\">Define Permissions for Multiple Administrators</a> in the <i>AWS CloudFormation User Guide</i>.</p>",
"CreateStackSetInput$AdministrationRoleARN": "<p>The Amazon Resource Number (ARN) of the IAM role to use to create this stack set. </p> <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html\">Prerequisites: Granting Permissions for Stack Set Operations</a> in the <i>AWS CloudFormation User Guide</i>.</p>",
"DeleteStackInput$RoleARN": "<p>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.</p> <p>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.</p>",
"Stack$RoleARN": "<p>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.</p>",
"StackSet$AdministrationRoleARN": "<p>The Amazon Resource Number (ARN) of the IAM role used to create or update the stack set.</p> <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html\">Define Permissions for Multiple Administrators</a> in the <i>AWS CloudFormation User Guide</i>.</p>",
"StackSet$AdministrationRoleARN": "<p>The Amazon Resource Number (ARN) of the IAM role used to create or update the stack set.</p> <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html\">Prerequisites: Granting Permissions for Stack Set Operations</a> in the <i>AWS CloudFormation User Guide</i>.</p>",
"StackSetOperation$AdministrationRoleARN": "<p>The Amazon Resource Number (ARN) of the IAM role used to perform this stack set operation. </p> <p>Use customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html\">Define Permissions for Multiple Administrators</a> in the <i>AWS CloudFormation User Guide</i>.</p>",
"UpdateStackInput$RoleARN": "<p>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.</p> <p>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.</p>",
"UpdateStackSetInput$AdministrationRoleARN": "<p>The Amazon Resource Number (ARN) of the IAM role to use to update this stack set.</p> <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets within the same administrator account. For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html\">Define Permissions for Multiple Administrators</a> in the <i>AWS CloudFormation User Guide</i>.</p> <p> If you specify a customized administrator role, AWS CloudFormation uses that role to update the stack. If you do not specify a customized administrator role, AWS CloudFormation performs the update using the role previously associated with the stack set, so long as you have permissions to perform operations on the stack set.</p>"
@ -1405,14 +1416,14 @@
"StackSet$StackSetName": "<p>The name that's associated with the stack set.</p>",
"StackSetSummary$StackSetName": "<p>The name of the stack set.</p>",
"StopStackSetOperationInput$StackSetName": "<p>The name or unique ID of the stack set that you want to stop the operation for.</p>",
"UpdateStackInstancesInput$StackSetName": "<p>The name or unique ID of the stack set associated with the stack instances.</p>",
"UpdateStackSetInput$StackSetName": "<p>The name or unique ID of the stack set that you want to update.</p>"
}
},
"StackSetNameOrId": {
"base": null,
"refs": {
"GetTemplateSummaryInput$StackSetName": "<p>The name or unique ID of the stack set from which the stack was created.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>StackSetName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
"GetTemplateSummaryInput$StackSetName": "<p>The name or unique ID of the stack set from which the stack was created.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>StackSetName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>",
"UpdateStackInstancesInput$StackSetName": "<p>The name or unique ID of the stack set associated with the stack instances.</p>"
}
},
"StackSetNotEmptyException": {

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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"
}
}
}

View file

@ -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"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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"
}
}
}

View file

@ -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": "Status"
}
]
},
"InvalidationCompleted": {
"delay": 20,
"operation": "GetInvalidation",
"maxAttempts": 30,
"description": "Wait until an invalidation has completed.",
"acceptors": [
{
"expected": "Completed",
"matcher": "path",
"state": "success",
"argument": "Status"
}
]
},
"StreamingDistributionDeployed": {
"delay": 60,
"operation": "GetStreamingDistribution",
"maxAttempts": 25,
"description": "Wait until a streaming distribution is deployed.",
"acceptors": [
{
"expected": "Deployed",
"matcher": "path",
"state": "success",
"argument": "Status"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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"
}
}
}

View file

@ -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": "Status"
}
]
},
"InvalidationCompleted": {
"delay": 20,
"operation": "GetInvalidation",
"maxAttempts": 30,
"description": "Wait until an invalidation has completed.",
"acceptors": [
{
"expected": "Completed",
"matcher": "path",
"state": "success",
"argument": "Status"
}
]
},
"StreamingDistributionDeployed": {
"delay": 60,
"operation": "GetStreamingDistribution",
"maxAttempts": 25,
"description": "Wait until a streaming distribution is deployed.",
"acceptors": [
{
"expected": "Deployed",
"matcher": "path",
"state": "success",
"argument": "Status"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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"
}
}
}

View file

@ -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": "Status"
}
]
},
"InvalidationCompleted": {
"delay": 20,
"operation": "GetInvalidation",
"maxAttempts": 30,
"description": "Wait until an invalidation has completed.",
"acceptors": [
{
"expected": "Completed",
"matcher": "path",
"state": "success",
"argument": "Status"
}
]
},
"StreamingDistributionDeployed": {
"delay": 60,
"operation": "GetStreamingDistribution",
"maxAttempts": 25,
"description": "Wait until a streaming distribution is deployed.",
"acceptors": [
{
"expected": "Deployed",
"matcher": "path",
"state": "success",
"argument": "Status"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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"
}
}
}

View file

@ -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"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,5 +0,0 @@
{
"version": "1.0",
"examples": {
}
}

View file

@ -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"
}
}
}

View file

@ -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"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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"
}
}
}

View file

@ -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"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,5 +0,0 @@
{
"version": "1.0",
"examples": {
}
}

View file

@ -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"
}
}
}

View file

@ -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"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,5 +0,0 @@
{
"version": "1.0",
"examples": {
}
}

View file

@ -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"
}
}
}

View file

@ -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"
}
]
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,5 +0,0 @@
{
"version": "1.0",
"examples": {
}
}

Some files were not shown because too many files have changed in this diff Show more