Dep ensure -update (#1912)

* dep ensure -update

Signed-off-by: Miek Gieben <miek@miek.nl>

* Add new files

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben 2018-06-30 17:07:33 +01:00 committed by Yong Tang
parent 6fe27d99be
commit 9d555ab8d2
1505 changed files with 179032 additions and 208137 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,306 @@
Release v1.14.17 (2018-06-29)
===
### Service Client Updates
* `service/secretsmanager`: Updates service examples
* New SDK code snippet examples for the new APIs released for the Resource-based Policy support in Secrets Manager
Release v1.14.16 (2018-06-28)
===
### Service Client Updates
* `service/elasticbeanstalk`: Updates service API, documentation, and examples
* Elastic Beanstalk adds "Suspended" health status to the EnvironmentHealthStatus enum type and updates document.
* `service/lambda`: Updates service API and documentation
* Support for SQS as an event source.
* `service/storagegateway`: Updates service API, documentation, and examples
* AWS Storage Gateway now enables you to use Server Message Block (SMB) protocol to store and access objects in Amazon Simple Storage Service (S3).
Release v1.14.15 (2018-06-27)
===
### Service Client Updates
* `service/cloudfront`: Updates service API and documentation
* Unpublish delete-service-linked-role API.
* `service/codepipeline`: Updates service API
* UpdatePipeline may now throw a LimitExceededException when adding or updating Source Actions that use periodic checks for change detection
* `service/comprehend`: Updates service API, documentation, and paginators
* `service/secretsmanager`: Updates service documentation, paginators, and examples
* Documentation updates for secretsmanager
### SDK Bugs
* `aws/csm`: Final API Call Attempt events were not being called [#2008](https://github.com/aws/aws-sdk-go/pull/2008)
Release v1.14.14 (2018-06-26)
===
### Service Client Updates
* `service/inspector`: Updates service API, documentation, and paginators
* Introduce four new APIs to view and preview Exclusions. Exclusions show which intended security checks are excluded from an assessment, along with reasons and recommendations to fix. The APIs are CreateExclusionsPreview, GetExclusionsPreview, ListExclusions, and DescribeExclusions.
* `service/s3`: Updates service API and documentation
* Add AllowQuotedRecordDelimiter to Amazon S3 Select API. Please refer to https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html for usage details.
* `service/secretsmanager`: Updates service API, documentation, paginators, and examples
* This release adds support for resource-based policies that attach directly to your secrets. These policies provide an additional way to control who can access your secrets and what they can do with them. For more information, see https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-based-policies.html in the Secrets Manager User Guide.
Release v1.14.13 (2018-06-22)
===
### Service Client Updates
* `service/alexaforbusiness`: Updates service API and documentation
* `service/appstream`: Updates service API, documentation, paginators, and examples
* This API update enables customers to find their VPC private IP address and ENI ID associated with AppStream streaming sessions.
* `aws/endpoints`: Updated Regions and Endpoints metadata.
Release v1.14.12 (2018-06-21)
===
### Service Client Updates
* `service/clouddirectory`: Adds new service
* SDK release to support Flexible Schema initiative being carried out by Amazon Cloud Directory. This feature lets customers using new capabilities like: variant typed attributes, dynamic facets and AWS managed Cloud Directory schemas.
Release v1.14.11 (2018-06-21)
===
### Service Client Updates
* `service/macie`: Adds new service
* Amazon Macie is a security service that uses machine learning to automatically discover, classify, and protect sensitive data in AWS. With this release, we are launching the following Macie HTTPS API operations: AssociateMemberAccount, AssociateS3Resources, DisassociateMemberAccount, DisassociateS3Resources, ListMemberAccounts, ListS3Resources, and UpdateS3Resources. With these API operations you can issue HTTPS requests directly to the service.
* `service/neptune`: Updates service API, documentation, and examples
* Deprecates the PubliclyAccessible parameter that is not supported by Amazon Neptune.
* `service/ssm`: Updates service API, documentation, and examples
* Adds Amazon Linux 2 support to Patch Manager
Release v1.14.10 (2018-06-20)
===
### Service Client Updates
* `service/acm-pca`: Updates service API, documentation, paginators, and examples
* `service/medialive`: Updates service API, documentation, and paginators
* AWS Elemental MediaLive now makes Reserved Outputs and Inputs available through the AWS Management Console and API. You can reserve outputs and inputs with a 12 month commitment in exchange for discounted hourly rates. Pricing is available at https://aws.amazon.com/medialive/pricing/
* `service/rds`: Updates service API, documentation, and examples
* This release adds a new parameter to specify the retention period for Performance Insights data for RDS instances. You can either choose 7 days (default) or 731 days. For more information, see Amazon RDS Documentation.
### SDK Enhancements
* `service/s3`: Update SelectObjectContent doc example to be on the API not nested type. ([#1991](https://github.com/aws/aws-sdk-go/pull/1991))
### SDK Bugs
* `aws/client`: Fix HTTP debug log EventStream payloads ([#2000](https://github.com/aws/aws-sdk-go/pull/2000))
* Fixes the SDK's HTTP client debug logging to not log the HTTP response body for EventStreams. This prevents the SDK from buffering a very large amount of data to be logged at once. The aws.LogDebugWithEventStreamBody should be used to log the event stream events.
* Fixes a bug in the SDK's response logger which will buffer the response body's content if LogDebug is enabled but LogDebugWithHTTPBody is not.
Release v1.14.9 (2018-06-19)
===
### Service Client Updates
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/rekognition`: Updates service documentation and examples
* Documentation updates for rekognition
### SDK Bugs
* `private/model/api`: Update client ServiceName to be based on name of service for new services. ([#1997](https://github.com/aws/aws-sdk-go/pull/1997))
* Fixes the SDK's `ServiceName` AWS service client package value to be unique based on the service name for new AWS services. Does not change exiting client packages.
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
### SDK Bugs
* `service/cloudwatchlogs`: Fix pagination with cloudwatchlogs ([#1945](https://github.com/aws/aws-sdk-go/pull/1945))
* Fixes the SDK's behavior with CloudWatchLogs APIs which return duplicate `NextToken` values to signal end of pagination.
* Fixes [#1908](https://github.com/aws/aws-sdk-go/pull/1908)
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)
===
@ -341,7 +644,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)
===
@ -1078,7 +1381,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)
===
@ -1210,7 +1513,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

@ -91,6 +91,6 @@ func (c *Client) AddDebugHandlers() {
return
}
c.Handlers.Send.PushFrontNamed(request.NamedHandler{Name: "awssdk.client.LogRequest", Fn: logRequest})
c.Handlers.Send.PushBackNamed(request.NamedHandler{Name: "awssdk.client.LogResponse", Fn: logResponse})
c.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler)
c.Handlers.Send.PushBackNamed(LogHTTPResponseHandler)
}

View file

@ -44,12 +44,22 @@ func (reader *teeReaderCloser) Close() error {
return reader.Source.Close()
}
// LogHTTPRequestHandler is a SDK request handler to log the HTTP request sent
// to a service. Will include the HTTP request body if the LogLevel of the
// request matches LogDebugWithHTTPBody.
var LogHTTPRequestHandler = request.NamedHandler{
Name: "awssdk.client.LogRequest",
Fn: logRequest,
}
func logRequest(r *request.Request) {
logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
bodySeekable := aws.IsReaderSeekable(r.Body)
dumpedBody, err := httputil.DumpRequestOut(r.HTTPRequest, logBody)
b, err := httputil.DumpRequestOut(r.HTTPRequest, logBody)
if err != nil {
r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, r.ClientInfo.ServiceName, r.Operation.Name, err))
r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg,
r.ClientInfo.ServiceName, r.Operation.Name, err))
return
}
@ -63,7 +73,28 @@ func logRequest(r *request.Request) {
r.ResetBody()
}
r.Config.Logger.Log(fmt.Sprintf(logReqMsg, r.ClientInfo.ServiceName, r.Operation.Name, string(dumpedBody)))
r.Config.Logger.Log(fmt.Sprintf(logReqMsg,
r.ClientInfo.ServiceName, r.Operation.Name, string(b)))
}
// LogHTTPRequestHeaderHandler is a SDK request handler to log the HTTP request sent
// to a service. Will only log the HTTP request's headers. The request payload
// will not be read.
var LogHTTPRequestHeaderHandler = request.NamedHandler{
Name: "awssdk.client.LogRequestHeader",
Fn: logRequestHeader,
}
func logRequestHeader(r *request.Request) {
b, err := httputil.DumpRequestOut(r.HTTPRequest, false)
if err != nil {
r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg,
r.ClientInfo.ServiceName, r.Operation.Name, err))
return
}
r.Config.Logger.Log(fmt.Sprintf(logReqMsg,
r.ClientInfo.ServiceName, r.Operation.Name, string(b)))
}
const logRespMsg = `DEBUG: Response %s/%s Details:
@ -76,27 +107,44 @@ const logRespErrMsg = `DEBUG ERROR: Response %s/%s:
%s
-----------------------------------------------------`
// LogHTTPResponseHandler is a SDK request handler to log the HTTP response
// received from a service. Will include the HTTP response body if the LogLevel
// of the request matches LogDebugWithHTTPBody.
var LogHTTPResponseHandler = request.NamedHandler{
Name: "awssdk.client.LogResponse",
Fn: logResponse,
}
func logResponse(r *request.Request) {
lw := &logWriter{r.Config.Logger, bytes.NewBuffer(nil)}
r.HTTPResponse.Body = &teeReaderCloser{
Reader: io.TeeReader(r.HTTPResponse.Body, lw),
Source: r.HTTPResponse.Body,
logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
if logBody {
r.HTTPResponse.Body = &teeReaderCloser{
Reader: io.TeeReader(r.HTTPResponse.Body, lw),
Source: r.HTTPResponse.Body,
}
}
handlerFn := func(req *request.Request) {
body, err := httputil.DumpResponse(req.HTTPResponse, false)
b, err := httputil.DumpResponse(req.HTTPResponse, false)
if err != nil {
lw.Logger.Log(fmt.Sprintf(logRespErrMsg, req.ClientInfo.ServiceName, req.Operation.Name, err))
lw.Logger.Log(fmt.Sprintf(logRespErrMsg,
req.ClientInfo.ServiceName, req.Operation.Name, err))
return
}
b, err := ioutil.ReadAll(lw.buf)
if err != nil {
lw.Logger.Log(fmt.Sprintf(logRespErrMsg, req.ClientInfo.ServiceName, req.Operation.Name, err))
return
}
lw.Logger.Log(fmt.Sprintf(logRespMsg, req.ClientInfo.ServiceName, req.Operation.Name, string(body)))
if req.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) {
lw.Logger.Log(fmt.Sprintf(logRespMsg,
req.ClientInfo.ServiceName, req.Operation.Name, string(b)))
if logBody {
b, err := ioutil.ReadAll(lw.buf)
if err != nil {
lw.Logger.Log(fmt.Sprintf(logRespErrMsg,
req.ClientInfo.ServiceName, req.Operation.Name, err))
return
}
lw.Logger.Log(string(b))
}
}
@ -110,3 +158,27 @@ func logResponse(r *request.Request) {
Name: handlerName, Fn: handlerFn,
})
}
// LogHTTPResponseHeaderHandler is a SDK request handler to log the HTTP
// response received from a service. Will only log the HTTP response's headers.
// The response payload will not be read.
var LogHTTPResponseHeaderHandler = request.NamedHandler{
Name: "awssdk.client.LogResponseHeader",
Fn: logResponseHeader,
}
func logResponseHeader(r *request.Request) {
if r.Config.Logger == nil {
return
}
b, err := httputil.DumpResponse(r.HTTPResponse, false)
if err != nil {
r.Config.Logger.Log(fmt.Sprintf(logRespErrMsg,
r.ClientInfo.ServiceName, r.Operation.Name, err))
return
}
r.Config.Logger.Log(fmt.Sprintf(logRespMsg,
r.ClientInfo.ServiceName, r.Operation.Name, string(b)))
}

View file

@ -5,6 +5,7 @@ import (
"fmt"
"io"
"io/ioutil"
"net/http"
"reflect"
"testing"
@ -127,6 +128,83 @@ func TestLogRequest(t *testing.T) {
}
}
func TestLogResponse(t *testing.T) {
cases := []struct {
Body *bytes.Buffer
ExpectBody []byte
ReadBody bool
LogLevel aws.LogLevelType
}{
{
Body: bytes.NewBuffer([]byte("body content")),
ExpectBody: []byte("body content"),
},
{
Body: bytes.NewBuffer([]byte("body content")),
LogLevel: aws.LogDebug,
ExpectBody: []byte("body content"),
},
{
Body: bytes.NewBuffer([]byte("body content")),
LogLevel: aws.LogDebugWithHTTPBody,
ReadBody: true,
ExpectBody: []byte("body content"),
},
}
for i, c := range cases {
var logW bytes.Buffer
req := request.New(
aws.Config{
Credentials: credentials.AnonymousCredentials,
Logger: &bufLogger{w: &logW},
LogLevel: aws.LogLevel(c.LogLevel),
},
metadata.ClientInfo{
Endpoint: "https://mock-service.mock-region.amazonaws.com",
},
testHandlers(),
nil,
&request.Operation{
Name: "APIName",
HTTPMethod: "POST",
HTTPPath: "/",
},
struct{}{}, nil,
)
req.HTTPResponse = &http.Response{
StatusCode: 200,
Status: "OK",
Header: http.Header{
"ABC": []string{"123"},
},
Body: ioutil.NopCloser(c.Body),
}
logResponse(req)
req.Handlers.Unmarshal.Run(req)
if c.ReadBody {
if e, a := len(c.ExpectBody), c.Body.Len(); e != a {
t.Errorf("%d, expect orginal body not to of been read", i)
}
}
if logW.Len() == 0 {
t.Errorf("%d, expect HTTP Response headers to be logged", i)
}
b, err := ioutil.ReadAll(req.HTTPResponse.Body)
if err != nil {
t.Fatalf("%d, expect to read SDK request Body", i)
}
if e, a := c.ExpectBody, b; !bytes.Equal(e, a) {
t.Errorf("%d, expect %v body, got %v", i, e, a)
}
}
}
type bufLogger struct {
w *bytes.Buffer
}

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

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)
}
}

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

@ -0,0 +1,232 @@
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}
apiCallAttemptHandler := request.NamedHandler{Name: APICallAttemptMetricHandlerName, Fn: rep.sendAPICallAttemptMetric}
handlers.Complete.PushFrontNamed(apiCallHandler)
handlers.Complete.PushFrontNamed(apiCallAttemptHandler)
handlers.AfterRetry.PushFrontNamed(apiCallAttemptHandler)
}

View file

@ -0,0 +1,249 @@
package csm_test
import (
"fmt"
"net"
"net/http"
"net/http/httptest"
"strings"
"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)
foundAttempt := false
foundCall := false
expectedMetrics := 2
for i := 0; i < expectedMetrics; i++ {
m := <-csm.MetricsCh
for k, v := range m {
switch k {
case "Type":
a := v.(string)
foundCall = foundCall || a == "ApiCall"
foundAttempt = foundAttempt || a == "ApiCallAttempt"
if prefix := "ApiCall"; !strings.HasPrefix(a, prefix) {
t.Errorf("expected 'APICall' prefix, but received %q", a)
}
}
}
}
if !foundAttempt {
t.Errorf("expected attempt event to have occurred")
}
if !foundCall {
t.Errorf("expected call event to have occurred")
}
}
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.
@ -130,6 +131,7 @@ const (
ModelsLexServiceID = "models.lex" // ModelsLex.
MonitoringServiceID = "monitoring" // Monitoring.
MturkRequesterServiceID = "mturk-requester" // MturkRequester.
NeptuneServiceID = "neptune" // Neptune.
OpsworksServiceID = "opsworks" // Opsworks.
OpsworksCmServiceID = "opsworks-cm" // OpsworksCm.
OrganizationsServiceID = "organizations" // Organizations.
@ -307,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{
@ -434,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{},
@ -558,6 +571,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@ -1046,6 +1060,7 @@ var awsPartition = partition{
"elasticfilesystem": service{
Endpoints: endpoints{
"ap-northeast-2": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
@ -1179,8 +1194,10 @@ 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{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
@ -1194,6 +1211,7 @@ var awsPartition = partition{
Protocols: []string{"https"},
},
Endpoints: endpoints{
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-west-2": endpoint{},
},
@ -1242,11 +1260,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{},
@ -1509,8 +1529,10 @@ var awsPartition = partition{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-northeast-2": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-west-2": endpoint{},
@ -1622,6 +1644,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{
@ -1805,10 +1856,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{
@ -1873,10 +1925,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{
@ -1991,6 +2044,7 @@ var awsPartition = partition{
"eu-west-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
"us-west-2": endpoint{},
},
},
@ -2081,6 +2135,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}",
@ -2507,13 +2565,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{
@ -2927,6 +2987,12 @@ var awsusgovPartition = partition{
},
},
},
"inspector": service{
Endpoints: endpoints{
"us-gov-west-1": endpoint{},
},
},
"kinesis": service{
Endpoints: endpoints{

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.50"
const SDKVersion = "1.14.17"

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

@ -0,0 +1,14 @@
# Example
This is an example using the AWS SDK for Go to upload object with progress.
We use CustomReader to implement it
# Usage
The example uses the bucket name provided, one key for object, and output the progress to stdout.
The Object size should larger than 5M or your will not see the progress
```sh
AWS_REGION=<region> go run putObjWithProcess.go <credential> <bucket> <key for object> <local file name>
```

View file

@ -0,0 +1,102 @@
// +build example
package main
import (
"log"
"os"
"sync/atomic"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
type CustomReader struct {
fp *os.File
size int64
read int64
}
func (r *CustomReader) Read(p []byte) (int, error) {
return r.fp.Read(p)
}
func (r *CustomReader) ReadAt(p []byte, off int64) (int, error) {
n, err := r.fp.ReadAt(p, off)
if err != nil {
return n, err
}
// Got the length have read( or means has uploaded), and you can construct your message
atomic.AddInt64(&r.read, int64(n))
// I have no idea why the read length need to be div 2,
// maybe the request read once when Sign and actually send call ReadAt again
// It works for me
log.Printf("total read:%d progress:%d%%\n", r.read/2, int(float32(r.read*100/2)/float32(r.size)))
return n, err
}
func (r *CustomReader) Seek(offset int64, whence int) (int64, error) {
return r.fp.Seek(offset, whence)
}
func main() {
if len(os.Args) < 4 {
log.Println("USAGE ERROR: AWS_REGION=us-east-1 go run putObjWithProcess.go <credential> <bucket> <key for object> <local file name>")
return
}
credential := os.Args[1]
bucket := os.Args[2]
key := os.Args[3]
fileName := os.Args[4]
creds := credentials.NewSharedCredentials(credential, "default")
if _, err := creds.Get(); err != nil {
log.Println("ERROR:", err)
return
}
sess := session.New(&aws.Config{
Credentials: creds,
})
file, err := os.Open(fileName)
if err != nil {
log.Println("ERROR:", err)
return
}
fileInfo, err := file.Stat()
if err != nil {
log.Println("ERROR:", err)
return
}
reader := &CustomReader{
fp: file,
size: fileInfo.Size(),
}
uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) {
u.PartSize = 5 * 1024 * 1024
u.LeavePartsOnError = true
})
output, err := uploader.Upload(&s3manager.UploadInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
Body: reader,
})
if err != nil {
log.Println("ERROR:", err)
return
}
log.Println(output.Location)
}

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

@ -83,6 +83,7 @@
"output":{"shape":"DescribeCertificateAuthorityAuditReportResponse"},
"errors":[
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidArnException"},
{"shape":"InvalidArgsException"}
]
},
@ -128,7 +129,8 @@
{"shape":"RequestInProgressException"},
{"shape":"RequestFailedException"},
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidArnException"}
{"shape":"InvalidArnException"},
{"shape":"InvalidStateException"}
]
},
"ImportCertificateAuthorityCertificate":{
@ -144,6 +146,7 @@
{"shape":"RequestFailedException"},
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidArnException"},
{"shape":"InvalidStateException"},
{"shape":"MalformedCertificateException"},
{"shape":"CertificateMismatchException"}
]
@ -191,6 +194,19 @@
{"shape":"InvalidArnException"}
]
},
"RestoreCertificateAuthority":{
"name":"RestoreCertificateAuthority",
"http":{
"method":"POST",
"requestUri":"/"
},
"input":{"shape":"RestoreCertificateAuthorityRequest"},
"errors":[
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidStateException"},
{"shape":"InvalidArnException"}
]
},
"RevokeCertificate":{
"name":"RevokeCertificate",
"http":{
@ -218,6 +234,7 @@
"errors":[
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidArnException"},
{"shape":"InvalidStateException"},
{"shape":"InvalidTagException"},
{"shape":"TooManyTagsException"}
]
@ -232,6 +249,7 @@
"errors":[
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidArnException"},
{"shape":"InvalidStateException"},
{"shape":"InvalidTagException"}
]
},
@ -317,7 +335,8 @@
"NotAfter":{"shape":"TStamp"},
"FailureReason":{"shape":"FailureReason"},
"CertificateAuthorityConfiguration":{"shape":"CertificateAuthorityConfiguration"},
"RevocationConfiguration":{"shape":"RevocationConfiguration"}
"RevocationConfiguration":{"shape":"RevocationConfiguration"},
"RestorableUntil":{"shape":"TStamp"}
}
},
"CertificateAuthorityConfiguration":{
@ -339,6 +358,7 @@
"CREATING",
"PENDING_CERTIFICATE",
"ACTIVE",
"DELETED",
"DISABLED",
"EXPIRED",
"FAILED"
@ -443,7 +463,8 @@
"type":"structure",
"required":["CertificateAuthorityArn"],
"members":{
"CertificateAuthorityArn":{"shape":"Arn"}
"CertificateAuthorityArn":{"shape":"Arn"},
"PermanentDeletionTimeInDays":{"shape":"PermanentDeletionTimeInDays"}
}
},
"DescribeCertificateAuthorityAuditReportRequest":{
@ -696,6 +717,11 @@
"max":500,
"min":1
},
"PermanentDeletionTimeInDays":{
"type":"integer",
"max":30,
"min":7
},
"PositiveLong":{
"type":"long",
"min":1
@ -728,6 +754,13 @@
},
"exception":true
},
"RestoreCertificateAuthorityRequest":{
"type":"structure",
"required":["CertificateAuthorityArn"],
"members":{
"CertificateAuthorityArn":{"shape":"Arn"}
}
},
"RevocationConfiguration":{
"type":"structure",
"members":{

View file

@ -1,574 +1,588 @@
{
"version": "2.0",
"service": "<p>You can use the ACM PCA API to create a private certificate authority (CA). You must first call the <a>CreateCertificateAuthority</a> function. If successful, the function returns an Amazon Resource Name (ARN) for your private CA. Use this ARN as input to the <a>GetCertificateAuthorityCsr</a> function to retrieve the certificate signing request (CSR) for your private CA certificate. Sign the CSR using the root or an intermediate CA in your on-premises PKI hierarchy, and call the <a>ImportCertificateAuthorityCertificate</a> to import your signed private CA certificate into ACM PCA. </p> <p>Use your private CA to issue and revoke certificates. These are private certificates that identify and secure client computers, servers, applications, services, devices, and users over SSLS/TLS connections within your organization. Call the <a>IssueCertificate</a> function to issue a certificate. Call the <a>RevokeCertificate</a> function to revoke a certificate. </p> <note> <p>Certificates issued by your private CA can be trusted only within your organization, not publicly.</p> </note> <p>Your private CA can optionally create a certificate revocation list (CRL) to track the certificates you revoke. To create a CRL, you must specify a <a>RevocationConfiguration</a> object when you call the <a>CreateCertificateAuthority</a> function. ACM PCA writes the CRL to an S3 bucket that you specify. You must specify a bucket policy that grants ACM PCA write permission. </p> <p>You can also call the <a>CreateCertificateAuthorityAuditReport</a> to create an optional audit report that lists every time the CA private key is used. The private key is used for signing when the <b>IssueCertificate</b> or <b>RevokeCertificate</b> function is called. </p>",
"operations": {
"CreateCertificateAuthority": "<p>Creates a private subordinate certificate authority (CA). You must specify the CA configuration, the revocation configuration, the CA type, and an optional idempotency token. The CA configuration specifies the name of the algorithm and key size to be used to create the CA private key, the type of signing algorithm that the CA uses to sign, and X.500 subject information. The CRL (certificate revocation list) configuration specifies the CRL expiration period in days (the validity period of the CRL), the Amazon S3 bucket that will contain the CRL, and a CNAME alias for the S3 bucket that is included in certificates issued by the CA. If successful, this function returns the Amazon Resource Name (ARN) of the CA.</p>",
"CreateCertificateAuthorityAuditReport": "<p>Creates an audit report that lists every time that the your CA private key is used. The report is saved in the Amazon S3 bucket that you specify on input. The <a>IssueCertificate</a> and <a>RevokeCertificate</a> functions use the private key. You can generate a new report every 30 minutes.</p>",
"DeleteCertificateAuthority": "<p>Deletes the private certificate authority (CA) that you created or started to create by calling the <a>CreateCertificateAuthority</a> function. This action requires that you enter an ARN (Amazon Resource Name) for the private CA that you want to delete. You can find the ARN by calling the <a>ListCertificateAuthorities</a> function. You can delete the CA if you are waiting for it to be created (the <b>Status</b> field of the <a>CertificateAuthority</a> is <code>CREATING</code>) or if the CA has been created but you haven't yet imported the signed certificate (the <b>Status</b> is <code>PENDING_CERTIFICATE</code>) into ACM PCA. If you've already imported the certificate, you cannot delete the CA unless it has been disabled for more than 30 days. To disable a CA, call the <a>UpdateCertificateAuthority</a> function and set the <b>CertificateAuthorityStatus</b> argument to <code>DISABLED</code>. </p>",
"DescribeCertificateAuthority": "<p>Lists information about your private certificate authority (CA). You specify the private CA on input by its ARN (Amazon Resource Name). The output contains the status of your CA. This can be any of the following: </p> <ul> <li> <p> <b>CREATING:</b> ACM PCA is creating your private certificate authority.</p> </li> <li> <p> <b>PENDING_CERTIFICATE:</b> The certificate is pending. You must use your on-premises root or subordinate CA to sign your private CA CSR and then import it into PCA. </p> </li> <li> <p> <b>ACTIVE:</b> Your private CA is active.</p> </li> <li> <p> <b>DISABLED:</b> Your private CA has been disabled.</p> </li> <li> <p> <b>EXPIRED:</b> Your private CA certificate has expired.</p> </li> <li> <p> <b>FAILED:</b> Your private CA has failed. Your CA can fail for problems such a network outage or backend AWS failure or other errors. A failed CA can never return to the pending state. You must create a new CA. </p> </li> </ul>",
"DescribeCertificateAuthorityAuditReport": "<p>Lists information about a specific audit report created by calling the <a>CreateCertificateAuthorityAuditReport</a> function. Audit information is created every time the certificate authority (CA) private key is used. The private key is used when you call the <a>IssueCertificate</a> function or the <a>RevokeCertificate</a> function. </p>",
"GetCertificate": "<p>Retrieves a certificate from your private CA. The ARN of the certificate is returned when you call the <a>IssueCertificate</a> function. You must specify both the ARN of your private CA and the ARN of the issued certificate when calling the <b>GetCertificate</b> function. You can retrieve the certificate if it is in the <b>ISSUED</b> state. You can call the <a>CreateCertificateAuthorityAuditReport</a> function to create a report that contains information about all of the certificates issued and revoked by your private CA. </p>",
"GetCertificateAuthorityCertificate": "<p>Retrieves the certificate and certificate chain for your private certificate authority (CA). Both the certificate and the chain are base64 PEM-encoded. The chain does not include the CA certificate. Each certificate in the chain signs the one before it. </p>",
"GetCertificateAuthorityCsr": "<p>Retrieves the certificate signing request (CSR) for your private certificate authority (CA). The CSR is created when you call the <a>CreateCertificateAuthority</a> function. Take the CSR to your on-premises X.509 infrastructure and sign it by using your root or a subordinate CA. Then import the signed certificate back into ACM PCA by calling the <a>ImportCertificateAuthorityCertificate</a> function. The CSR is returned as a base64 PEM-encoded string. </p>",
"ImportCertificateAuthorityCertificate": "<p>Imports your signed private CA certificate into ACM PCA. Before you can call this function, you must create the private certificate authority by calling the <a>CreateCertificateAuthority</a> function. You must then generate a certificate signing request (CSR) by calling the <a>GetCertificateAuthorityCsr</a> function. Take the CSR to your on-premises CA and use the root certificate or a subordinate certificate to sign it. Create a certificate chain and copy the signed certificate and the certificate chain to your working directory. </p> <note> <p>Your certificate chain must not include the private CA certificate that you are importing.</p> </note> <note> <p>Your on-premises CA certificate must be the last certificate in your chain. The subordinate certificate, if any, that your root CA signed must be next to last. The subordinate certificate signed by the preceding subordinate CA must come next, and so on until your chain is built. </p> </note> <note> <p>The chain must be PEM-encoded.</p> </note>",
"IssueCertificate": "<p>Uses your private certificate authority (CA) to issue a client certificate. This function returns the Amazon Resource Name (ARN) of the certificate. You can retrieve the certificate by calling the <a>GetCertificate</a> function and specifying the ARN. </p> <note> <p>You cannot use the ACM <b>ListCertificateAuthorities</b> function to retrieve the ARNs of the certificates that you issue by using ACM PCA.</p> </note>",
"ListCertificateAuthorities": "<p>Lists the private certificate authorities that you created by using the <a>CreateCertificateAuthority</a> function.</p>",
"ListTags": "<p>Lists the tags, if any, that are associated with your private CA. Tags are labels that you can use to identify and organize your CAs. Each tag consists of a key and an optional value. Call the <a>TagCertificateAuthority</a> function to add one or more tags to your CA. Call the <a>UntagCertificateAuthority</a> function to remove tags. </p>",
"RevokeCertificate": "<p>Revokes a certificate that you issued by calling the <a>IssueCertificate</a> function. If you enable a certificate revocation list (CRL) when you create or update your private CA, information about the revoked certificates will be included in the CRL. ACM PCA writes the CRL to an S3 bucket that you specify. For more information about revocation, see the <a>CrlConfiguration</a> structure. ACM PCA also writes revocation information to the audit report. For more information, see <a>CreateCertificateAuthorityAuditReport</a>. </p>",
"TagCertificateAuthority": "<p>Adds one or more tags to your private CA. Tags are labels that you can use to identify and organize your AWS resources. Each tag consists of a key and an optional value. You specify the private CA on input by its Amazon Resource Name (ARN). You specify the tag by using a key-value pair. You can apply a tag to just one private CA if you want to identify a specific characteristic of that CA, or you can apply the same tag to multiple private CAs if you want to filter for a common relationship among those CAs. To remove one or more tags, use the <a>UntagCertificateAuthority</a> function. Call the <a>ListTags</a> function to see what tags are associated with your CA. </p>",
"UntagCertificateAuthority": "<p>Remove one or more tags from your private CA. A tag consists of a key-value pair. If you do not specify the value portion of the tag when calling this function, the tag will be removed regardless of value. If you specify a value, the tag is removed only if it is associated with the specified value. To add tags to a private CA, use the <a>TagCertificateAuthority</a>. Call the <a>ListTags</a> function to see what tags are associated with your CA. </p>",
"UpdateCertificateAuthority": "<p>Updates the status or configuration of a private certificate authority (CA). Your private CA must be in the <b> <code>ACTIVE</code> </b> or <b> <code>DISABLED</code> </b> state before you can update it. You can disable a private CA that is in the <b> <code>ACTIVE</code> </b> state or make a CA that is in the <b> <code>DISABLED</code> </b> state active again.</p>"
"version":"2.0",
"service":"<p>You can use the ACM PCA API to create a private certificate authority (CA). You must first call the <a>CreateCertificateAuthority</a> operation. If successful, the operation returns an Amazon Resource Name (ARN) for your private CA. Use this ARN as input to the <a>GetCertificateAuthorityCsr</a> operation to retrieve the certificate signing request (CSR) for your private CA certificate. Sign the CSR using the root or an intermediate CA in your on-premises PKI hierarchy, and call the <a>ImportCertificateAuthorityCertificate</a> to import your signed private CA certificate into ACM PCA. </p> <p>Use your private CA to issue and revoke certificates. These are private certificates that identify and secure client computers, servers, applications, services, devices, and users over SSLS/TLS connections within your organization. Call the <a>IssueCertificate</a> operation to issue a certificate. Call the <a>RevokeCertificate</a> operation to revoke a certificate. </p> <note> <p>Certificates issued by your private CA can be trusted only within your organization, not publicly.</p> </note> <p>Your private CA can optionally create a certificate revocation list (CRL) to track the certificates you revoke. To create a CRL, you must specify a <a>RevocationConfiguration</a> object when you call the <a>CreateCertificateAuthority</a> operation. ACM PCA writes the CRL to an S3 bucket that you specify. You must specify a bucket policy that grants ACM PCA write permission. </p> <p>You can also call the <a>CreateCertificateAuthorityAuditReport</a> to create an optional audit report that lists every time the CA private key is used. The private key is used for signing when the <b>IssueCertificate</b> or <b>RevokeCertificate</b> operation is called. </p>",
"operations":{
"CreateCertificateAuthority":"<p>Creates a private subordinate certificate authority (CA). You must specify the CA configuration, the revocation configuration, the CA type, and an optional idempotency token. The CA configuration specifies the name of the algorithm and key size to be used to create the CA private key, the type of signing algorithm that the CA uses to sign, and X.500 subject information. The CRL (certificate revocation list) configuration specifies the CRL expiration period in days (the validity period of the CRL), the Amazon S3 bucket that will contain the CRL, and a CNAME alias for the S3 bucket that is included in certificates issued by the CA. If successful, this operation returns the Amazon Resource Name (ARN) of the CA.</p>",
"CreateCertificateAuthorityAuditReport":"<p>Creates an audit report that lists every time that the your CA private key is used. The report is saved in the Amazon S3 bucket that you specify on input. The <a>IssueCertificate</a> and <a>RevokeCertificate</a> operations use the private key. You can generate a new report every 30 minutes.</p>",
"DeleteCertificateAuthority":"<p>Deletes a private certificate authority (CA). You must provide the ARN (Amazon Resource Name) of the private CA that you want to delete. You can find the ARN by calling the <a>ListCertificateAuthorities</a> operation. Before you can delete a CA, you must disable it. Call the <a>UpdateCertificateAuthority</a> operation and set the <b>CertificateAuthorityStatus</b> parameter to <code>DISABLED</code>. </p> <p>Additionally, you can delete a CA if you are waiting for it to be created (the <b>Status</b> field of the <a>CertificateAuthority</a> is <code>CREATING</code>). You can also delete it if the CA has been created but you haven't yet imported the signed certificate (the <b>Status</b> is <code>PENDING_CERTIFICATE</code>) into ACM PCA. </p> <p>If the CA is in one of the aforementioned states and you call <a>DeleteCertificateAuthority</a>, the CA's status changes to <code>DELETED</code>. However, the CA won't be permentantly deleted until the restoration period has passed. By default, if you do not set the <code>PermanentDeletionTimeInDays</code> parameter, the CA remains restorable for 30 days. You can set the parameter from 7 to 30 days. The <a>DescribeCertificateAuthority</a> operation returns the time remaining in the restoration window of a Private CA in the <code>DELETED</code> state. To restore an eligable CA, call the <a>RestoreCertificateAuthority</a> operation.</p>",
"DescribeCertificateAuthority":"<p>Lists information about your private certificate authority (CA). You specify the private CA on input by its ARN (Amazon Resource Name). The output contains the status of your CA. This can be any of the following: </p> <ul> <li> <p> <code>CREATING</code> - ACM PCA is creating your private certificate authority.</p> </li> <li> <p> <code>PENDING_CERTIFICATE</code> - The certificate is pending. You must use your on-premises root or subordinate CA to sign your private CA CSR and then import it into PCA. </p> </li> <li> <p> <code>ACTIVE</code> - Your private CA is active.</p> </li> <li> <p> <code>DISABLED</code> - Your private CA has been disabled.</p> </li> <li> <p> <code>EXPIRED</code> - Your private CA certificate has expired.</p> </li> <li> <p> <code>FAILED</code> - Your private CA has failed. Your CA can fail because of problems such a network outage or backend AWS failure or other errors. A failed CA can never return to the pending state. You must create a new CA. </p> </li> <li> <p> <code>DELETED</code> - Your private CA is within the restoration period, after which it will be permanently deleted. The length of time remaining in the CA's restoration period will also be included in this operation's output.</p> </li> </ul>",
"DescribeCertificateAuthorityAuditReport":"<p>Lists information about a specific audit report created by calling the <a>CreateCertificateAuthorityAuditReport</a> operation. Audit information is created every time the certificate authority (CA) private key is used. The private key is used when you call the <a>IssueCertificate</a> operation or the <a>RevokeCertificate</a> operation. </p>",
"GetCertificate":"<p>Retrieves a certificate from your private CA. The ARN of the certificate is returned when you call the <a>IssueCertificate</a> operation. You must specify both the ARN of your private CA and the ARN of the issued certificate when calling the <b>GetCertificate</b> operation. You can retrieve the certificate if it is in the <b>ISSUED</b> state. You can call the <a>CreateCertificateAuthorityAuditReport</a> operation to create a report that contains information about all of the certificates issued and revoked by your private CA. </p>",
"GetCertificateAuthorityCertificate":"<p>Retrieves the certificate and certificate chain for your private certificate authority (CA). Both the certificate and the chain are base64 PEM-encoded. The chain does not include the CA certificate. Each certificate in the chain signs the one before it. </p>",
"GetCertificateAuthorityCsr":"<p>Retrieves the certificate signing request (CSR) for your private certificate authority (CA). The CSR is created when you call the <a>CreateCertificateAuthority</a> operation. Take the CSR to your on-premises X.509 infrastructure and sign it by using your root or a subordinate CA. Then import the signed certificate back into ACM PCA by calling the <a>ImportCertificateAuthorityCertificate</a> operation. The CSR is returned as a base64 PEM-encoded string. </p>",
"ImportCertificateAuthorityCertificate":"<p>Imports your signed private CA certificate into ACM PCA. Before you can call this operation, you must create the private certificate authority by calling the <a>CreateCertificateAuthority</a> operation. You must then generate a certificate signing request (CSR) by calling the <a>GetCertificateAuthorityCsr</a> operation. Take the CSR to your on-premises CA and use the root certificate or a subordinate certificate to sign it. Create a certificate chain and copy the signed certificate and the certificate chain to your working directory. </p> <note> <p>Your certificate chain must not include the private CA certificate that you are importing.</p> </note> <note> <p>Your on-premises CA certificate must be the last certificate in your chain. The subordinate certificate, if any, that your root CA signed must be next to last. The subordinate certificate signed by the preceding subordinate CA must come next, and so on until your chain is built. </p> </note> <note> <p>The chain must be PEM-encoded.</p> </note>",
"IssueCertificate":"<p>Uses your private certificate authority (CA) to issue a client certificate. This operation returns the Amazon Resource Name (ARN) of the certificate. You can retrieve the certificate by calling the <a>GetCertificate</a> operation and specifying the ARN. </p> <note> <p>You cannot use the ACM <b>ListCertificateAuthorities</b> operation to retrieve the ARNs of the certificates that you issue by using ACM PCA.</p> </note>",
"ListCertificateAuthorities":"<p>Lists the private certificate authorities that you created by using the <a>CreateCertificateAuthority</a> operation.</p>",
"ListTags":"<p>Lists the tags, if any, that are associated with your private CA. Tags are labels that you can use to identify and organize your CAs. Each tag consists of a key and an optional value. Call the <a>TagCertificateAuthority</a> operation to add one or more tags to your CA. Call the <a>UntagCertificateAuthority</a> operation to remove tags. </p>",
"RestoreCertificateAuthority":"<p>Restores a certificate authority (CA) that is in the <code>DELETED</code> state. You can restore a CA during the period that you defined in the <b>PermanentDeletionTimeInDays</b> parameter of the <a>DeleteCertificateAuthority</a> operation. Currently, you can specify 7 to 30 days. If you did not specify a <b>PermanentDeletionTimeInDays</b> value, by default you can restore the CA at any time in a 30 day period. You can check the time remaining in the restoration period of a private CA in the <code>DELETED</code> state by calling the <a>DescribeCertificateAuthority</a> or <a>ListCertificateAuthorities</a> operations. The status of a restored CA is set to its pre-deletion status when the <b>RestoreCertificateAuthority</b> operation returns. To change its status to <code>ACTIVE</code>, call the <a>UpdateCertificateAuthority</a> operation. If the private CA was in the <code>PENDING_CERTIFICATE</code> state at deletion, you must use the <a>ImportCertificateAuthorityCertificate</a> operation to import a certificate authority into the private CA before it can be activated. You cannot restore a CA after the restoration period has ended.</p>",
"RevokeCertificate":"<p>Revokes a certificate that you issued by calling the <a>IssueCertificate</a> operation. If you enable a certificate revocation list (CRL) when you create or update your private CA, information about the revoked certificates will be included in the CRL. ACM PCA writes the CRL to an S3 bucket that you specify. For more information about revocation, see the <a>CrlConfiguration</a> structure. ACM PCA also writes revocation information to the audit report. For more information, see <a>CreateCertificateAuthorityAuditReport</a>. </p>",
"TagCertificateAuthority":"<p>Adds one or more tags to your private CA. Tags are labels that you can use to identify and organize your AWS resources. Each tag consists of a key and an optional value. You specify the private CA on input by its Amazon Resource Name (ARN). You specify the tag by using a key-value pair. You can apply a tag to just one private CA if you want to identify a specific characteristic of that CA, or you can apply the same tag to multiple private CAs if you want to filter for a common relationship among those CAs. To remove one or more tags, use the <a>UntagCertificateAuthority</a> operation. Call the <a>ListTags</a> operation to see what tags are associated with your CA. </p>",
"UntagCertificateAuthority":"<p>Remove one or more tags from your private CA. A tag consists of a key-value pair. If you do not specify the value portion of the tag when calling this operation, the tag will be removed regardless of value. If you specify a value, the tag is removed only if it is associated with the specified value. To add tags to a private CA, use the <a>TagCertificateAuthority</a>. Call the <a>ListTags</a> operation to see what tags are associated with your CA. </p>",
"UpdateCertificateAuthority":"<p>Updates the status or configuration of a private certificate authority (CA). Your private CA must be in the <code>ACTIVE</code> or <code>DISABLED</code> state before you can update it. You can disable a private CA that is in the <code>ACTIVE</code> state or make a CA that is in the <code>DISABLED</code> state active again.</p>"
},
"shapes": {
"ASN1Subject": {
"base": "<p>Contains information about the certificate subject. The certificate can be one issued by your private certificate authority (CA) or it can be your private CA certificate. The <b>Subject</b> field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The <b>Subject</b> must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate. The DN must be unique for each for each entity, but your private CA can issue more than one certificate with the same DN to the same entity. </p>",
"refs": {
"CertificateAuthorityConfiguration$Subject": "<p>Structure that contains X.500 distinguished name information for your private CA.</p>"
"shapes":{
"ASN1Subject":{
"base":"<p>Contains information about the certificate subject. The certificate can be one issued by your private certificate authority (CA) or it can be your private CA certificate. The <b>Subject</b> field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The <b>Subject</b> must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate. The DN must be unique for each entity, but your private CA can issue more than one certificate with the same DN to the same entity. </p>",
"refs":{
"CertificateAuthorityConfiguration$Subject":"<p>Structure that contains X.500 distinguished name information for your private CA.</p>"
}
},
"Arn": {
"base": null,
"refs": {
"CertificateAuthority$Arn": "<p>Amazon Resource Name (ARN) for your private certificate authority (CA). The format is <code> <i>12345678-1234-1234-1234-123456789012</i> </code>.</p>",
"CreateCertificateAuthorityAuditReportRequest$CertificateAuthorityArn": "<p>Amazon Resource Name (ARN) of the CA to be audited. This is of the form:</p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>.</p>",
"CreateCertificateAuthorityResponse$CertificateAuthorityArn": "<p>If successful, the Amazon Resource Name (ARN) of the certificate authority (CA). This is of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"DeleteCertificateAuthorityRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"DescribeCertificateAuthorityAuditReportRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) of the private CA. This must be of the form:</p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"DescribeCertificateAuthorityRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"GetCertificateAuthorityCertificateRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) of your private CA. This is of the form:</p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"GetCertificateAuthorityCsrRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called the <a>CreateCertificateAuthority</a> function. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"GetCertificateRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"GetCertificateRequest$CertificateArn": "<p>The ARN of the issued certificate. The ARN contains the certificate serial number and must be in the following form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i>/certificate/<i>286535153982981100925020015808220737245</i> </code> </p>",
"ImportCertificateAuthorityCertificateRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"IssueCertificateRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form:</p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"IssueCertificateResponse$CertificateArn": "<p>The Amazon Resource Name (ARN) of the issued certificate and the certificate serial number. This is of the form:</p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i>/certificate/<i>286535153982981100925020015808220737245</i> </code> </p>",
"ListTagsRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called the <a>CreateCertificateAuthority</a> function. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"RevokeCertificateRequest$CertificateAuthorityArn": "<p>Amazon Resource Name (ARN) of the private CA that issued the certificate to be revoked. This must be of the form:</p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"TagCertificateAuthorityRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"UntagCertificateAuthorityRequest$CertificateAuthorityArn": "<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"UpdateCertificateAuthorityRequest$CertificateAuthorityArn": "<p>Amazon Resource Name (ARN) of the private CA that issued the certificate to be revoked. This must be of the form:</p> <p> <code>arn:aws:acm:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>"
"Arn":{
"base":null,
"refs":{
"CertificateAuthority$Arn":"<p>Amazon Resource Name (ARN) for your private certificate authority (CA). The format is <code> <i>12345678-1234-1234-1234-123456789012</i> </code>.</p>",
"CreateCertificateAuthorityAuditReportRequest$CertificateAuthorityArn":"<p>Amazon Resource Name (ARN) of the CA to be audited. This is of the form:</p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>.</p>",
"CreateCertificateAuthorityResponse$CertificateAuthorityArn":"<p>If successful, the Amazon Resource Name (ARN) of the certificate authority (CA). This is of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"DeleteCertificateAuthorityRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must have the following form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"DescribeCertificateAuthorityAuditReportRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) of the private CA. This must be of the form:</p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"DescribeCertificateAuthorityRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"GetCertificateAuthorityCertificateRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) of your private CA. This is of the form:</p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"GetCertificateAuthorityCsrRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called the <a>CreateCertificateAuthority</a> operation. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"GetCertificateRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code>. </p>",
"GetCertificateRequest$CertificateArn":"<p>The ARN of the issued certificate. The ARN contains the certificate serial number and must be in the following form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i>/certificate/<i>286535153982981100925020015808220737245</i> </code> </p>",
"ImportCertificateAuthorityCertificateRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"IssueCertificateRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form:</p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"IssueCertificateResponse$CertificateArn":"<p>The Amazon Resource Name (ARN) of the issued certificate and the certificate serial number. This is of the form:</p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i>/certificate/<i>286535153982981100925020015808220737245</i> </code> </p>",
"ListTagsRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called the <a>CreateCertificateAuthority</a> operation. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"RestoreCertificateAuthorityRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called the <a>CreateCertificateAuthority</a> operation. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"RevokeCertificateRequest$CertificateAuthorityArn":"<p>Amazon Resource Name (ARN) of the private CA that issued the certificate to be revoked. This must be of the form:</p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"TagCertificateAuthorityRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"UntagCertificateAuthorityRequest$CertificateAuthorityArn":"<p>The Amazon Resource Name (ARN) that was returned when you called <a>CreateCertificateAuthority</a>. This must be of the form: </p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>",
"UpdateCertificateAuthorityRequest$CertificateAuthorityArn":"<p>Amazon Resource Name (ARN) of the private CA that issued the certificate to be revoked. This must be of the form:</p> <p> <code>arn:aws:acm-pca:<i>region</i>:<i>account</i>:certificate-authority/<i>12345678-1234-1234-1234-123456789012</i> </code> </p>"
}
},
"AuditReportId": {
"base": null,
"refs": {
"CreateCertificateAuthorityAuditReportResponse$AuditReportId": "<p>An alphanumeric string that contains a report identifier.</p>",
"DescribeCertificateAuthorityAuditReportRequest$AuditReportId": "<p>The report ID returned by calling the <a>CreateCertificateAuthorityAuditReport</a> function.</p>"
"AuditReportId":{
"base":null,
"refs":{
"CreateCertificateAuthorityAuditReportResponse$AuditReportId":"<p>An alphanumeric string that contains a report identifier.</p>",
"DescribeCertificateAuthorityAuditReportRequest$AuditReportId":"<p>The report ID returned by calling the <a>CreateCertificateAuthorityAuditReport</a> operation.</p>"
}
},
"AuditReportResponseFormat": {
"base": null,
"refs": {
"CreateCertificateAuthorityAuditReportRequest$AuditReportResponseFormat": "<p>Format in which to create the report. This can be either <b>JSON</b> or <b>CSV</b>.</p>"
"AuditReportResponseFormat":{
"base":null,
"refs":{
"CreateCertificateAuthorityAuditReportRequest$AuditReportResponseFormat":"<p>Format in which to create the report. This can be either <b>JSON</b> or <b>CSV</b>.</p>"
}
},
"AuditReportStatus": {
"base": null,
"refs": {
"DescribeCertificateAuthorityAuditReportResponse$AuditReportStatus": "<p>Specifies whether report creation is in progress, has succeeded, or has failed.</p>"
"AuditReportStatus":{
"base":null,
"refs":{
"DescribeCertificateAuthorityAuditReportResponse$AuditReportStatus":"<p>Specifies whether report creation is in progress, has succeeded, or has failed.</p>"
}
},
"Boolean": {
"base": null,
"refs": {
"CrlConfiguration$Enabled": "<p>Boolean value that specifies whether certificate revocation lists (CRLs) are enabled. You can use this value to enable certificate revocation for a new CA when you call the <a>CreateCertificateAuthority</a> function or for an existing CA when you call the <a>UpdateCertificateAuthority</a> function. </p>"
"Boolean":{
"base":null,
"refs":{
"CrlConfiguration$Enabled":"<p>Boolean value that specifies whether certificate revocation lists (CRLs) are enabled. You can use this value to enable certificate revocation for a new CA when you call the <a>CreateCertificateAuthority</a> operation or for an existing CA when you call the <a>UpdateCertificateAuthority</a> operation. </p>"
}
},
"CertificateAuthorities": {
"base": null,
"refs": {
"ListCertificateAuthoritiesResponse$CertificateAuthorities": "<p>Summary information about each certificate authority you have created.</p>"
"CertificateAuthorities":{
"base":null,
"refs":{
"ListCertificateAuthoritiesResponse$CertificateAuthorities":"<p>Summary information about each certificate authority you have created.</p>"
}
},
"CertificateAuthority": {
"base": "<p>Contains information about your private certificate authority (CA). Your private CA can issue and revoke X.509 digital certificates. Digital certificates verify that the entity named in the certificate <b>Subject</b> field owns or controls the public key contained in the <b>Subject Public Key Info</b> field. Call the <a>CreateCertificateAuthority</a> function to create your private CA. You must then call the <a>GetCertificateAuthorityCertificate</a> function to retrieve a private CA certificate signing request (CSR). Take the CSR to your on-premises CA and sign it with the root CA certificate or a subordinate certificate. Call the <a>ImportCertificateAuthorityCertificate</a> function to import the signed certificate into AWS Certificate Manager (ACM). </p>",
"refs": {
"CertificateAuthorities$member": null,
"DescribeCertificateAuthorityResponse$CertificateAuthority": "<p>A <a>CertificateAuthority</a> structure that contains information about your private CA.</p>"
"CertificateAuthority":{
"base":"<p>Contains information about your private certificate authority (CA). Your private CA can issue and revoke X.509 digital certificates. Digital certificates verify that the entity named in the certificate <b>Subject</b> field owns or controls the public key contained in the <b>Subject Public Key Info</b> field. Call the <a>CreateCertificateAuthority</a> operation to create your private CA. You must then call the <a>GetCertificateAuthorityCertificate</a> operation to retrieve a private CA certificate signing request (CSR). Take the CSR to your on-premises CA and sign it with the root CA certificate or a subordinate certificate. Call the <a>ImportCertificateAuthorityCertificate</a> operation to import the signed certificate into AWS Certificate Manager (ACM). </p>",
"refs":{
"CertificateAuthorities$member":null,
"DescribeCertificateAuthorityResponse$CertificateAuthority":"<p>A <a>CertificateAuthority</a> structure that contains information about your private CA.</p>"
}
},
"CertificateAuthorityConfiguration": {
"base": "<p>Contains configuration information for your private certificate authority (CA). This includes information about the class of public key algorithm and the key pair that your private CA creates when it issues a certificate, the signature algorithm it uses used when issuing certificates, and its X.500 distinguished name. You must specify this information when you call the <a>CreateCertificateAuthority</a> function. </p>",
"refs": {
"CertificateAuthority$CertificateAuthorityConfiguration": "<p>Your private CA configuration.</p>",
"CreateCertificateAuthorityRequest$CertificateAuthorityConfiguration": "<p>Name and bit size of the private key algorithm, the name of the signing algorithm, and X.500 certificate subject information.</p>"
"CertificateAuthorityConfiguration":{
"base":"<p>Contains configuration information for your private certificate authority (CA). This includes information about the class of public key algorithm and the key pair that your private CA creates when it issues a certificate, the signature algorithm it uses used when issuing certificates, and its X.500 distinguished name. You must specify this information when you call the <a>CreateCertificateAuthority</a> operation. </p>",
"refs":{
"CertificateAuthority$CertificateAuthorityConfiguration":"<p>Your private CA configuration.</p>",
"CreateCertificateAuthorityRequest$CertificateAuthorityConfiguration":"<p>Name and bit size of the private key algorithm, the name of the signing algorithm, and X.500 certificate subject information.</p>"
}
},
"CertificateAuthorityStatus": {
"base": null,
"refs": {
"CertificateAuthority$Status": "<p>Status of your private CA.</p>",
"UpdateCertificateAuthorityRequest$Status": "<p>Status of your private CA.</p>"
"CertificateAuthorityStatus":{
"base":null,
"refs":{
"CertificateAuthority$Status":"<p>Status of your private CA.</p>",
"UpdateCertificateAuthorityRequest$Status":"<p>Status of your private CA.</p>"
}
},
"CertificateAuthorityType": {
"base": null,
"refs": {
"CertificateAuthority$Type": "<p>Type of your private CA.</p>",
"CreateCertificateAuthorityRequest$CertificateAuthorityType": "<p>The type of the certificate authority. Currently, this must be <b>SUBORDINATE</b>.</p>"
"CertificateAuthorityType":{
"base":null,
"refs":{
"CertificateAuthority$Type":"<p>Type of your private CA.</p>",
"CreateCertificateAuthorityRequest$CertificateAuthorityType":"<p>The type of the certificate authority. Currently, this must be <b>SUBORDINATE</b>.</p>"
}
},
"CertificateBody": {
"base": null,
"refs": {
"GetCertificateAuthorityCertificateResponse$Certificate": "<p>Base64-encoded certificate authority (CA) certificate.</p>",
"GetCertificateResponse$Certificate": "<p>The base64 PEM-encoded certificate specified by the <code>CertificateArn</code> parameter.</p>"
"CertificateBody":{
"base":null,
"refs":{
"GetCertificateAuthorityCertificateResponse$Certificate":"<p>Base64-encoded certificate authority (CA) certificate.</p>",
"GetCertificateResponse$Certificate":"<p>The base64 PEM-encoded certificate specified by the <code>CertificateArn</code> parameter.</p>"
}
},
"CertificateBodyBlob": {
"base": null,
"refs": {
"ImportCertificateAuthorityCertificateRequest$Certificate": "<p>The PEM-encoded certificate for your private CA. This must be signed by using your on-premises CA.</p>"
"CertificateBodyBlob":{
"base":null,
"refs":{
"ImportCertificateAuthorityCertificateRequest$Certificate":"<p>The PEM-encoded certificate for your private CA. This must be signed by using your on-premises CA.</p>"
}
},
"CertificateChain": {
"base": null,
"refs": {
"GetCertificateAuthorityCertificateResponse$CertificateChain": "<p>Base64-encoded certificate chain that includes any intermediate certificates and chains up to root on-premises certificate that you used to sign your private CA certificate. The chain does not include your private CA certificate. </p>",
"GetCertificateResponse$CertificateChain": "<p>The base64 PEM-encoded certificate chain that chains up to the on-premises root CA certificate that you used to sign your private CA certificate. </p>"
"CertificateChain":{
"base":null,
"refs":{
"GetCertificateAuthorityCertificateResponse$CertificateChain":"<p>Base64-encoded certificate chain that includes any intermediate certificates and chains up to root on-premises certificate that you used to sign your private CA certificate. The chain does not include your private CA certificate. </p>",
"GetCertificateResponse$CertificateChain":"<p>The base64 PEM-encoded certificate chain that chains up to the on-premises root CA certificate that you used to sign your private CA certificate. </p>"
}
},
"CertificateChainBlob": {
"base": null,
"refs": {
"ImportCertificateAuthorityCertificateRequest$CertificateChain": "<p>A PEM-encoded file that contains all of your certificates, other than the certificate you're importing, chaining up to your root CA. Your on-premises root certificate is the last in the chain, and each certificate in the chain signs the one preceding. </p>"
"CertificateChainBlob":{
"base":null,
"refs":{
"ImportCertificateAuthorityCertificateRequest$CertificateChain":"<p>A PEM-encoded file that contains all of your certificates, other than the certificate you're importing, chaining up to your root CA. Your on-premises root certificate is the last in the chain, and each certificate in the chain signs the one preceding. </p>"
}
},
"CertificateMismatchException": {
"base": "<p>The certificate authority certificate you are importing does not comply with conditions specified in the certificate that signed it.</p>",
"refs": {
"CertificateMismatchException":{
"base":"<p>The certificate authority certificate you are importing does not comply with conditions specified in the certificate that signed it.</p>",
"refs":{
}
},
"ConcurrentModificationException": {
"base": "<p>A previous update to your private CA is still ongoing.</p>",
"refs": {
"ConcurrentModificationException":{
"base":"<p>A previous update to your private CA is still ongoing.</p>",
"refs":{
}
},
"CountryCodeString": {
"base": null,
"refs": {
"ASN1Subject$Country": "<p>Two digit code that specifies the country in which the certificate subject located.</p>"
"CountryCodeString":{
"base":null,
"refs":{
"ASN1Subject$Country":"<p>Two-digit code that specifies the country in which the certificate subject located.</p>"
}
},
"CreateCertificateAuthorityAuditReportRequest": {
"base": null,
"refs": {
"CreateCertificateAuthorityAuditReportRequest":{
"base":null,
"refs":{
}
},
"CreateCertificateAuthorityAuditReportResponse": {
"base": null,
"refs": {
"CreateCertificateAuthorityAuditReportResponse":{
"base":null,
"refs":{
}
},
"CreateCertificateAuthorityRequest": {
"base": null,
"refs": {
"CreateCertificateAuthorityRequest":{
"base":null,
"refs":{
}
},
"CreateCertificateAuthorityResponse": {
"base": null,
"refs": {
"CreateCertificateAuthorityResponse":{
"base":null,
"refs":{
}
},
"CrlConfiguration": {
"base": "<p>Contains configuration information for a certificate revocation list (CRL). Your private certificate authority (CA) creates base CRLs. Delta CRLs are not supported. You can enable CRLs for your new or an existing private CA by setting the <b>Enabled</b> parameter to <code>true</code>. Your private CA writes CRLs to an S3 bucket that you specify in the <b>S3BucketName</b> parameter. You can hide the name of your bucket by specifying a value for the <b>CustomCname</b> parameter. Your private CA copies the CNAME or the S3 bucket name to the <b>CRL Distribution Points</b> extension of each certificate it issues. Your S3 bucket policy must give write permission to ACM PCA. </p> <p>Your private CA uses the value in the <b>ExpirationInDays</b> parameter to calculate the <b>nextUpdate</b> field in the CRL. The CRL is refreshed at 1/2 the age of next update or when a certificate is revoked. When a certificate is revoked, it is recorded in the next CRL that is generated and in the next audit report. Only time valid certificates are listed in the CRL. Expired certificates are not included. </p> <p>CRLs contain the following fields:</p> <ul> <li> <p> <b>Version</b>: The current version number defined in RFC 5280 is V2. The integer value is 0x1. </p> </li> <li> <p> <b>Signature Algorithm</b>: The name of the algorithm used to sign the CRL.</p> </li> <li> <p> <b>Issuer</b>: The X.500 distinguished name of your private CA that issued the CRL.</p> </li> <li> <p> <b>Last Update</b>: The issue date and time of this CRL.</p> </li> <li> <p> <b>Next Update</b>: The day and time by which the next CRL will be issued.</p> </li> <li> <p> <b>Revoked Certificates</b>: List of revoked certificates. Each list item contains the following information.</p> <ul> <li> <p> <b>Serial Number</b>: The serial number, in hexadecimal format, of the revoked certificate.</p> </li> <li> <p> <b>Revocation Date</b>: Date and time the certificate was revoked.</p> </li> <li> <p> <b>CRL Entry Extensions</b>: Optional extensions for the CRL entry.</p> <ul> <li> <p> <b>X509v3 CRL Reason Code</b>: Reason the certificate was revoked.</p> </li> </ul> </li> </ul> </li> <li> <p> <b>CRL Extensions</b>: Optional extensions for the CRL.</p> <ul> <li> <p> <b>X509v3 Authority Key Identifier</b>: Identifies the public key associated with the private key used to sign the certificate.</p> </li> <li> <p> <b>X509v3 CRL Number:</b>: Decimal sequence number for the CRL.</p> </li> </ul> </li> <li> <p> <b>Signature Algorithm</b>: Algorithm used by your private CA to sign the CRL.</p> </li> <li> <p> <b>Signature Value</b>: Signature computed over the CRL.</p> </li> </ul> <p>Certificate revocation lists created by ACM PCA are DER-encoded. You can use the following OpenSSL command to list a CRL.</p> <p> <code>openssl crl -inform DER -text -in <i>crl_path</i> -noout</code> </p>",
"refs": {
"RevocationConfiguration$CrlConfiguration": "<p>Configuration of the certificate revocation list (CRL), if any, maintained by your private CA.</p>"
"CrlConfiguration":{
"base":"<p>Contains configuration information for a certificate revocation list (CRL). Your private certificate authority (CA) creates base CRLs. Delta CRLs are not supported. You can enable CRLs for your new or an existing private CA by setting the <b>Enabled</b> parameter to <code>true</code>. Your private CA writes CRLs to an S3 bucket that you specify in the <b>S3BucketName</b> parameter. You can hide the name of your bucket by specifying a value for the <b>CustomCname</b> parameter. Your private CA copies the CNAME or the S3 bucket name to the <b>CRL Distribution Points</b> extension of each certificate it issues. Your S3 bucket policy must give write permission to ACM PCA. </p> <p>Your private CA uses the value in the <b>ExpirationInDays</b> parameter to calculate the <b>nextUpdate</b> field in the CRL. The CRL is refreshed at 1/2 the age of next update or when a certificate is revoked. When a certificate is revoked, it is recorded in the next CRL that is generated and in the next audit report. Only time valid certificates are listed in the CRL. Expired certificates are not included. </p> <p>CRLs contain the following fields:</p> <ul> <li> <p> <b>Version</b>: The current version number defined in RFC 5280 is V2. The integer value is 0x1. </p> </li> <li> <p> <b>Signature Algorithm</b>: The name of the algorithm used to sign the CRL.</p> </li> <li> <p> <b>Issuer</b>: The X.500 distinguished name of your private CA that issued the CRL.</p> </li> <li> <p> <b>Last Update</b>: The issue date and time of this CRL.</p> </li> <li> <p> <b>Next Update</b>: The day and time by which the next CRL will be issued.</p> </li> <li> <p> <b>Revoked Certificates</b>: List of revoked certificates. Each list item contains the following information.</p> <ul> <li> <p> <b>Serial Number</b>: The serial number, in hexadecimal format, of the revoked certificate.</p> </li> <li> <p> <b>Revocation Date</b>: Date and time the certificate was revoked.</p> </li> <li> <p> <b>CRL Entry Extensions</b>: Optional extensions for the CRL entry.</p> <ul> <li> <p> <b>X509v3 CRL Reason Code</b>: Reason the certificate was revoked.</p> </li> </ul> </li> </ul> </li> <li> <p> <b>CRL Extensions</b>: Optional extensions for the CRL.</p> <ul> <li> <p> <b>X509v3 Authority Key Identifier</b>: Identifies the public key associated with the private key used to sign the certificate.</p> </li> <li> <p> <b>X509v3 CRL Number:</b>: Decimal sequence number for the CRL.</p> </li> </ul> </li> <li> <p> <b>Signature Algorithm</b>: Algorithm used by your private CA to sign the CRL.</p> </li> <li> <p> <b>Signature Value</b>: Signature computed over the CRL.</p> </li> </ul> <p>Certificate revocation lists created by ACM PCA are DER-encoded. You can use the following OpenSSL command to list a CRL.</p> <p> <code>openssl crl -inform DER -text -in <i>crl_path</i> -noout</code> </p>",
"refs":{
"RevocationConfiguration$CrlConfiguration":"<p>Configuration of the certificate revocation list (CRL), if any, maintained by your private CA.</p>"
}
},
"CsrBlob": {
"base": null,
"refs": {
"IssueCertificateRequest$Csr": "<p>The certificate signing request (CSR) for the certificate you want to issue. You can use the following OpenSSL command to create the CSR and a 2048 bit RSA private key. </p> <p> <code>openssl req -new -newkey rsa:2048 -days 365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr</code> </p> <p>If you have a configuration file, you can use the following OpenSSL command. The <code>usr_cert</code> block in the configuration file contains your X509 version 3 extensions. </p> <p> <code>openssl req -new -config openssl_rsa.cnf -extensions usr_cert -newkey rsa:2048 -days -365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr</code> </p>"
"CsrBlob":{
"base":null,
"refs":{
"IssueCertificateRequest$Csr":"<p>The certificate signing request (CSR) for the certificate you want to issue. You can use the following OpenSSL command to create the CSR and a 2048 bit RSA private key. </p> <p> <code>openssl req -new -newkey rsa:2048 -days 365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr</code> </p> <p>If you have a configuration file, you can use the following OpenSSL command. The <code>usr_cert</code> block in the configuration file contains your X509 version 3 extensions. </p> <p> <code>openssl req -new -config openssl_rsa.cnf -extensions usr_cert -newkey rsa:2048 -days -365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr</code> </p>"
}
},
"CsrBody": {
"base": null,
"refs": {
"GetCertificateAuthorityCsrResponse$Csr": "<p>The base64 PEM-encoded certificate signing request (CSR) for your private CA certificate.</p>"
"CsrBody":{
"base":null,
"refs":{
"GetCertificateAuthorityCsrResponse$Csr":"<p>The base64 PEM-encoded certificate signing request (CSR) for your private CA certificate.</p>"
}
},
"DeleteCertificateAuthorityRequest": {
"base": null,
"refs": {
"DeleteCertificateAuthorityRequest":{
"base":null,
"refs":{
}
},
"DescribeCertificateAuthorityAuditReportRequest": {
"base": null,
"refs": {
"DescribeCertificateAuthorityAuditReportRequest":{
"base":null,
"refs":{
}
},
"DescribeCertificateAuthorityAuditReportResponse": {
"base": null,
"refs": {
"DescribeCertificateAuthorityAuditReportResponse":{
"base":null,
"refs":{
}
},
"DescribeCertificateAuthorityRequest": {
"base": null,
"refs": {
"DescribeCertificateAuthorityRequest":{
"base":null,
"refs":{
}
},
"DescribeCertificateAuthorityResponse": {
"base": null,
"refs": {
"DescribeCertificateAuthorityResponse":{
"base":null,
"refs":{
}
},
"DistinguishedNameQualifierString": {
"base": null,
"refs": {
"ASN1Subject$DistinguishedNameQualifier": "<p>Disambiguating information for the certificate subject.</p>"
"DistinguishedNameQualifierString":{
"base":null,
"refs":{
"ASN1Subject$DistinguishedNameQualifier":"<p>Disambiguating information for the certificate subject.</p>"
}
},
"FailureReason": {
"base": null,
"refs": {
"CertificateAuthority$FailureReason": "<p>Reason the request to create your private CA failed.</p>"
"FailureReason":{
"base":null,
"refs":{
"CertificateAuthority$FailureReason":"<p>Reason the request to create your private CA failed.</p>"
}
},
"GetCertificateAuthorityCertificateRequest": {
"base": null,
"refs": {
"GetCertificateAuthorityCertificateRequest":{
"base":null,
"refs":{
}
},
"GetCertificateAuthorityCertificateResponse": {
"base": null,
"refs": {
"GetCertificateAuthorityCertificateResponse":{
"base":null,
"refs":{
}
},
"GetCertificateAuthorityCsrRequest": {
"base": null,
"refs": {
"GetCertificateAuthorityCsrRequest":{
"base":null,
"refs":{
}
},
"GetCertificateAuthorityCsrResponse": {
"base": null,
"refs": {
"GetCertificateAuthorityCsrResponse":{
"base":null,
"refs":{
}
},
"GetCertificateRequest": {
"base": null,
"refs": {
"GetCertificateRequest":{
"base":null,
"refs":{
}
},
"GetCertificateResponse": {
"base": null,
"refs": {
"GetCertificateResponse":{
"base":null,
"refs":{
}
},
"IdempotencyToken": {
"base": null,
"refs": {
"CreateCertificateAuthorityRequest$IdempotencyToken": "<p>Alphanumeric string that can be used to distinguish between calls to <b>CreateCertificateAuthority</b>. Idempotency tokens time out after five minutes. Therefore, if you call <b>CreateCertificateAuthority</b> multiple times with the same idempotency token within a five minute period, ACM PCA recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, however, ACM PCA recognizes that you are requesting multiple certificates.</p>",
"IssueCertificateRequest$IdempotencyToken": "<p>Custom string that can be used to distinguish between calls to the <b>IssueCertificate</b> function. Idempotency tokens time out after one hour. Therefore, if you call <b>IssueCertificate</b> multiple times with the same idempotency token within 5 minutes, ACM PCA recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, PCA recognizes that you are requesting multiple certificates.</p>"
"IdempotencyToken":{
"base":null,
"refs":{
"CreateCertificateAuthorityRequest$IdempotencyToken":"<p>Alphanumeric string that can be used to distinguish between calls to <b>CreateCertificateAuthority</b>. Idempotency tokens time out after five minutes. Therefore, if you call <b>CreateCertificateAuthority</b> multiple times with the same idempotency token within a five minute period, ACM PCA recognizes that you are requesting only one certificate. As a result, ACM PCA issues only one. If you change the idempotency token for each call, however, ACM PCA recognizes that you are requesting multiple certificates.</p>",
"IssueCertificateRequest$IdempotencyToken":"<p>Custom string that can be used to distinguish between calls to the <b>IssueCertificate</b> operation. Idempotency tokens time out after one hour. Therefore, if you call <b>IssueCertificate</b> multiple times with the same idempotency token within 5 minutes, ACM PCA recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, PCA recognizes that you are requesting multiple certificates.</p>"
}
},
"ImportCertificateAuthorityCertificateRequest": {
"base": null,
"refs": {
"ImportCertificateAuthorityCertificateRequest":{
"base":null,
"refs":{
}
},
"Integer1To5000": {
"base": null,
"refs": {
"CrlConfiguration$ExpirationInDays": "<p>Number of days until a certificate expires.</p>"
"Integer1To5000":{
"base":null,
"refs":{
"CrlConfiguration$ExpirationInDays":"<p>Number of days until a certificate expires.</p>"
}
},
"InvalidArgsException": {
"base": "<p>One or more of the specified arguments was not valid.</p>",
"refs": {
"InvalidArgsException":{
"base":"<p>One or more of the specified arguments was not valid.</p>",
"refs":{
}
},
"InvalidArnException": {
"base": "<p>The requested Amazon Resource Name (ARN) does not refer to an existing resource.</p>",
"refs": {
"InvalidArnException":{
"base":"<p>The requested Amazon Resource Name (ARN) does not refer to an existing resource.</p>",
"refs":{
}
},
"InvalidNextTokenException": {
"base": "<p>The token specified in the <code>NextToken</code> argument is not valid. Use the token returned from your previous call to <a>ListCertificateAuthorities</a>.</p>",
"refs": {
"InvalidNextTokenException":{
"base":"<p>The token specified in the <code>NextToken</code> argument is not valid. Use the token returned from your previous call to <a>ListCertificateAuthorities</a>.</p>",
"refs":{
}
},
"InvalidPolicyException": {
"base": "<p>The S3 bucket policy is not valid. The policy must give ACM PCA rights to read from and write to the bucket and find the bucket location.</p>",
"refs": {
"InvalidPolicyException":{
"base":"<p>The S3 bucket policy is not valid. The policy must give ACM PCA rights to read from and write to the bucket and find the bucket location.</p>",
"refs":{
}
},
"InvalidStateException": {
"base": "<p>The private CA is in a state during which a report cannot be generated.</p>",
"refs": {
"InvalidStateException":{
"base":"<p>The private CA is in a state during which a report cannot be generated.</p>",
"refs":{
}
},
"InvalidTagException": {
"base": "<p>The tag associated with the CA is not valid. The invalid argument is contained in the message field.</p>",
"refs": {
"InvalidTagException":{
"base":"<p>The tag associated with the CA is not valid. The invalid argument is contained in the message field.</p>",
"refs":{
}
},
"IssueCertificateRequest": {
"base": null,
"refs": {
"IssueCertificateRequest":{
"base":null,
"refs":{
}
},
"IssueCertificateResponse": {
"base": null,
"refs": {
"IssueCertificateResponse":{
"base":null,
"refs":{
}
},
"KeyAlgorithm": {
"base": null,
"refs": {
"CertificateAuthorityConfiguration$KeyAlgorithm": "<p>Type of the public key algorithm and size, in bits, of the key pair that your key pair creates when it issues a certificate.</p>"
"KeyAlgorithm":{
"base":null,
"refs":{
"CertificateAuthorityConfiguration$KeyAlgorithm":"<p>Type of the public key algorithm and size, in bits, of the key pair that your key pair creates when it issues a certificate.</p>"
}
},
"LimitExceededException": {
"base": "<p>An ACM PCA limit has been exceeded. See the exception message returned to determine the limit that was exceeded.</p>",
"refs": {
"LimitExceededException":{
"base":"<p>An ACM PCA limit has been exceeded. See the exception message returned to determine the limit that was exceeded.</p>",
"refs":{
}
},
"ListCertificateAuthoritiesRequest": {
"base": null,
"refs": {
"ListCertificateAuthoritiesRequest":{
"base":null,
"refs":{
}
},
"ListCertificateAuthoritiesResponse": {
"base": null,
"refs": {
"ListCertificateAuthoritiesResponse":{
"base":null,
"refs":{
}
},
"ListTagsRequest": {
"base": null,
"refs": {
"ListTagsRequest":{
"base":null,
"refs":{
}
},
"ListTagsResponse": {
"base": null,
"refs": {
"ListTagsResponse":{
"base":null,
"refs":{
}
},
"MalformedCSRException": {
"base": "<p>The certificate signing request is invalid.</p>",
"refs": {
"MalformedCSRException":{
"base":"<p>The certificate signing request is invalid.</p>",
"refs":{
}
},
"MalformedCertificateException": {
"base": "<p>One or more fields in the certificate are invalid.</p>",
"refs": {
"MalformedCertificateException":{
"base":"<p>One or more fields in the certificate are invalid.</p>",
"refs":{
}
},
"MaxResults": {
"base": null,
"refs": {
"ListCertificateAuthoritiesRequest$MaxResults": "<p>Use this parameter when paginating results to specify the maximum number of items to return in the response on each page. If additional items exist beyond the number you specify, the <code>NextToken</code> element is sent in the response. Use this <code>NextToken</code> value in a subsequent request to retrieve additional items.</p>",
"ListTagsRequest$MaxResults": "<p>Use this parameter when paginating results to specify the maximum number of items to return in the response. If additional items exist beyond the number you specify, the <b>NextToken</b> element is sent in the response. Use this <b>NextToken</b> value in a subsequent request to retrieve additional items.</p>"
"MaxResults":{
"base":null,
"refs":{
"ListCertificateAuthoritiesRequest$MaxResults":"<p>Use this parameter when paginating results to specify the maximum number of items to return in the response on each page. If additional items exist beyond the number you specify, the <code>NextToken</code> element is sent in the response. Use this <code>NextToken</code> value in a subsequent request to retrieve additional items.</p>",
"ListTagsRequest$MaxResults":"<p>Use this parameter when paginating results to specify the maximum number of items to return in the response. If additional items exist beyond the number you specify, the <b>NextToken</b> element is sent in the response. Use this <b>NextToken</b> value in a subsequent request to retrieve additional items.</p>"
}
},
"NextToken": {
"base": null,
"refs": {
"ListCertificateAuthoritiesRequest$NextToken": "<p>Use this parameter when paginating results in a subsequent request after you receive a response with truncated results. Set it to the value of the <code>NextToken</code> parameter from the response you just received.</p>",
"ListCertificateAuthoritiesResponse$NextToken": "<p>When the list is truncated, this value is present and should be used for the <code>NextToken</code> parameter in a subsequent pagination request.</p>",
"ListTagsRequest$NextToken": "<p>Use this parameter when paginating results in a subsequent request after you receive a response with truncated results. Set it to the value of <b>NextToken</b> from the response you just received.</p>",
"ListTagsResponse$NextToken": "<p>When the list is truncated, this value is present and should be used for the <b>NextToken</b> parameter in a subsequent pagination request. </p>"
"NextToken":{
"base":null,
"refs":{
"ListCertificateAuthoritiesRequest$NextToken":"<p>Use this parameter when paginating results in a subsequent request after you receive a response with truncated results. Set it to the value of the <code>NextToken</code> parameter from the response you just received.</p>",
"ListCertificateAuthoritiesResponse$NextToken":"<p>When the list is truncated, this value is present and should be used for the <code>NextToken</code> parameter in a subsequent pagination request.</p>",
"ListTagsRequest$NextToken":"<p>Use this parameter when paginating results in a subsequent request after you receive a response with truncated results. Set it to the value of <b>NextToken</b> from the response you just received.</p>",
"ListTagsResponse$NextToken":"<p>When the list is truncated, this value is present and should be used for the <b>NextToken</b> parameter in a subsequent pagination request. </p>"
}
},
"PositiveLong": {
"base": null,
"refs": {
"Validity$Value": "<p>Time period.</p>"
"PermanentDeletionTimeInDays":{
"base":null,
"refs":{
"DeleteCertificateAuthorityRequest$PermanentDeletionTimeInDays":"<p>The number of days to make a CA restorable after it has been deleted. This can be anywhere from 7 to 30 days, with 30 being the default.</p>"
}
},
"RequestAlreadyProcessedException": {
"base": "<p>Your request has already been completed.</p>",
"refs": {
"PositiveLong":{
"base":null,
"refs":{
"Validity$Value":"<p>Time period.</p>"
}
},
"RequestFailedException": {
"base": "<p>The request has failed for an unspecified reason.</p>",
"refs": {
"RequestAlreadyProcessedException":{
"base":"<p>Your request has already been completed.</p>",
"refs":{
}
},
"RequestInProgressException": {
"base": "<p>Your request is already in progress.</p>",
"refs": {
"RequestFailedException":{
"base":"<p>The request has failed for an unspecified reason.</p>",
"refs":{
}
},
"ResourceNotFoundException": {
"base": "<p>A resource such as a private CA, S3 bucket, certificate, or audit report cannot be found.</p>",
"refs": {
"RequestInProgressException":{
"base":"<p>Your request is already in progress.</p>",
"refs":{
}
},
"RevocationConfiguration": {
"base": "<p>Certificate revocation information used by the <a>CreateCertificateAuthority</a> and <a>UpdateCertificateAuthority</a> functions. Your private certificate authority (CA) can create and maintain a certificate revocation list (CRL). A CRL contains information about certificates revoked by your CA. For more information, see <a>RevokeCertificate</a>.</p>",
"refs": {
"CertificateAuthority$RevocationConfiguration": "<p>Information about the certificate revocation list (CRL) created and maintained by your private CA. </p>",
"CreateCertificateAuthorityRequest$RevocationConfiguration": "<p>Contains a Boolean value that you can use to enable a certification revocation list (CRL) for the CA, the name of the S3 bucket to which ACM PCA will write the CRL, and an optional CNAME alias that you can use to hide the name of your bucket in the <b>CRL Distribution Points</b> extension of your CA certificate. For more information, see the <a>CrlConfiguration</a> structure. </p>",
"UpdateCertificateAuthorityRequest$RevocationConfiguration": "<p>Revocation information for your private CA.</p>"
"ResourceNotFoundException":{
"base":"<p>A resource such as a private CA, S3 bucket, certificate, or audit report cannot be found.</p>",
"refs":{
}
},
"RevocationReason": {
"base": null,
"refs": {
"RevokeCertificateRequest$RevocationReason": "<p>Specifies why you revoked the certificate.</p>"
"RestoreCertificateAuthorityRequest":{
"base":null,
"refs":{
}
},
"RevokeCertificateRequest": {
"base": null,
"refs": {
"RevocationConfiguration":{
"base":"<p>Certificate revocation information used by the <a>CreateCertificateAuthority</a> and <a>UpdateCertificateAuthority</a> operations. Your private certificate authority (CA) can create and maintain a certificate revocation list (CRL). A CRL contains information about certificates revoked by your CA. For more information, see <a>RevokeCertificate</a>.</p>",
"refs":{
"CertificateAuthority$RevocationConfiguration":"<p>Information about the certificate revocation list (CRL) created and maintained by your private CA. </p>",
"CreateCertificateAuthorityRequest$RevocationConfiguration":"<p>Contains a Boolean value that you can use to enable a certification revocation list (CRL) for the CA, the name of the S3 bucket to which ACM PCA will write the CRL, and an optional CNAME alias that you can use to hide the name of your bucket in the <b>CRL Distribution Points</b> extension of your CA certificate. For more information, see the <a>CrlConfiguration</a> structure. </p>",
"UpdateCertificateAuthorityRequest$RevocationConfiguration":"<p>Revocation information for your private CA.</p>"
}
},
"SigningAlgorithm": {
"base": null,
"refs": {
"CertificateAuthorityConfiguration$SigningAlgorithm": "<p>Name of the algorithm your private CA uses to sign certificate requests.</p>",
"IssueCertificateRequest$SigningAlgorithm": "<p>The name of the algorithm that will be used to sign the certificate to be issued.</p>"
"RevocationReason":{
"base":null,
"refs":{
"RevokeCertificateRequest$RevocationReason":"<p>Specifies why you revoked the certificate.</p>"
}
},
"String": {
"base": null,
"refs": {
"CertificateAuthority$Serial": "<p>Serial number of your private CA.</p>",
"CertificateMismatchException$message": null,
"ConcurrentModificationException$message": null,
"CreateCertificateAuthorityAuditReportRequest$S3BucketName": "<p>Name of the S3 bucket that will contain the audit report.</p>",
"CreateCertificateAuthorityAuditReportResponse$S3Key": "<p>The <b>key</b> that uniquely identifies the report file in your S3 bucket.</p>",
"DescribeCertificateAuthorityAuditReportResponse$S3BucketName": "<p>Name of the S3 bucket that contains the report.</p>",
"DescribeCertificateAuthorityAuditReportResponse$S3Key": "<p>S3 <b>key</b> that uniquely identifies the report file in your S3 bucket.</p>",
"InvalidArgsException$message": null,
"InvalidArnException$message": null,
"InvalidNextTokenException$message": null,
"InvalidPolicyException$message": null,
"InvalidStateException$message": null,
"InvalidTagException$message": null,
"LimitExceededException$message": null,
"MalformedCSRException$message": null,
"MalformedCertificateException$message": null,
"RequestAlreadyProcessedException$message": null,
"RequestFailedException$message": null,
"RequestInProgressException$message": null,
"ResourceNotFoundException$message": null,
"TooManyTagsException$message": null
"RevokeCertificateRequest":{
"base":null,
"refs":{
}
},
"String128": {
"base": null,
"refs": {
"ASN1Subject$State": "<p>State in which the subject of the certificate is located.</p>",
"ASN1Subject$Locality": "<p>The locality (such as a city or town) in which the certificate subject is located.</p>",
"ASN1Subject$Pseudonym": "<p>Typically a shortened version of a longer <b>GivenName</b>. For example, Jonathan is often shortened to John. Elizabeth is often shortened to Beth, Liz, or Eliza.</p>",
"RevokeCertificateRequest$CertificateSerial": "<p>Serial number of the certificate to be revoked. This must be in hexadecimal format. You can retrieve the serial number by calling <a>GetCertificate</a> with the Amazon Resource Name (ARN) of the certificate you want and the ARN of your private CA. The <b>GetCertificate</b> function retrieves the certificate in the PEM format. You can use the following OpenSSL command to list the certificate in text format and copy the hexadecimal serial number. </p> <p> <code>openssl x509 -in <i>file_path</i> -text -noout</code> </p> <p>You can also copy the serial number from the console or use the <a href=\"http://docs.aws.amazon.comacm/latest/APIReferenceAPI_DescribeCertificate.html\">DescribeCertificate</a> function in the <i>AWS Certificate Manager API Reference</i>. </p>"
"SigningAlgorithm":{
"base":null,
"refs":{
"CertificateAuthorityConfiguration$SigningAlgorithm":"<p>Name of the algorithm your private CA uses to sign certificate requests.</p>",
"IssueCertificateRequest$SigningAlgorithm":"<p>The name of the algorithm that will be used to sign the certificate to be issued.</p>"
}
},
"String16": {
"base": null,
"refs": {
"ASN1Subject$GivenName": "<p>First name.</p>"
"String":{
"base":null,
"refs":{
"CertificateAuthority$Serial":"<p>Serial number of your private CA.</p>",
"CertificateMismatchException$message":null,
"ConcurrentModificationException$message":null,
"CreateCertificateAuthorityAuditReportRequest$S3BucketName":"<p>Name of the S3 bucket that will contain the audit report.</p>",
"CreateCertificateAuthorityAuditReportResponse$S3Key":"<p>The <b>key</b> that uniquely identifies the report file in your S3 bucket.</p>",
"DescribeCertificateAuthorityAuditReportResponse$S3BucketName":"<p>Name of the S3 bucket that contains the report.</p>",
"DescribeCertificateAuthorityAuditReportResponse$S3Key":"<p>S3 <b>key</b> that uniquely identifies the report file in your S3 bucket.</p>",
"InvalidArgsException$message":null,
"InvalidArnException$message":null,
"InvalidNextTokenException$message":null,
"InvalidPolicyException$message":null,
"InvalidStateException$message":null,
"InvalidTagException$message":null,
"LimitExceededException$message":null,
"MalformedCSRException$message":null,
"MalformedCertificateException$message":null,
"RequestAlreadyProcessedException$message":null,
"RequestFailedException$message":null,
"RequestInProgressException$message":null,
"ResourceNotFoundException$message":null,
"TooManyTagsException$message":null
}
},
"String253": {
"base": null,
"refs": {
"CrlConfiguration$CustomCname": "<p>Name inserted into the certificate <b>CRL Distribution Points</b> extension that enables the use of an alias for the CRL distribution point. Use this value if you don't want the name of your S3 bucket to be public.</p>"
"String128":{
"base":null,
"refs":{
"ASN1Subject$State":"<p>State in which the subject of the certificate is located.</p>",
"ASN1Subject$Locality":"<p>The locality (such as a city or town) in which the certificate subject is located.</p>",
"ASN1Subject$Pseudonym":"<p>Typically a shortened version of a longer <b>GivenName</b>. For example, Jonathan is often shortened to John. Elizabeth is often shortened to Beth, Liz, or Eliza.</p>",
"RevokeCertificateRequest$CertificateSerial":"<p>Serial number of the certificate to be revoked. This must be in hexadecimal format. You can retrieve the serial number by calling <a>GetCertificate</a> with the Amazon Resource Name (ARN) of the certificate you want and the ARN of your private CA. The <b>GetCertificate</b> operation retrieves the certificate in the PEM format. You can use the following OpenSSL command to list the certificate in text format and copy the hexadecimal serial number. </p> <p> <code>openssl x509 -in <i>file_path</i> -text -noout</code> </p> <p>You can also copy the serial number from the console or use the <a href=\"https://docs.aws.amazon.com/acm/latest/APIReference/API_DescribeCertificate.html\">DescribeCertificate</a> operation in the <i>AWS Certificate Manager API Reference</i>. </p>"
}
},
"String3": {
"base": null,
"refs": {
"ASN1Subject$GenerationQualifier": "<p>Typically a qualifier appended to the name of an individual. Examples include Jr. for junior, Sr. for senior, and III for third.</p>"
"String16":{
"base":null,
"refs":{
"ASN1Subject$GivenName":"<p>First name.</p>"
}
},
"String3To255": {
"base": null,
"refs": {
"CrlConfiguration$S3BucketName": "<p>Name of the S3 bucket that contains the CRL. If you do not provide a value for the <b>CustomCname</b> argument, the name of your S3 bucket is placed into the <b>CRL Distribution Points</b> extension of the issued certificate. You can change the name of your bucket by calling the <a>UpdateCertificateAuthority</a> function. You must specify a bucket policy that allows ACM PCA to write the CRL to your bucket.</p>"
"String253":{
"base":null,
"refs":{
"CrlConfiguration$CustomCname":"<p>Name inserted into the certificate <b>CRL Distribution Points</b> extension that enables the use of an alias for the CRL distribution point. Use this value if you don't want the name of your S3 bucket to be public.</p>"
}
},
"String40": {
"base": null,
"refs": {
"ASN1Subject$Surname": "<p>Family name. In the US and the UK for example, the surname of an individual is ordered last. In Asian cultures the surname is typically ordered first.</p>"
"String3":{
"base":null,
"refs":{
"ASN1Subject$GenerationQualifier":"<p>Typically a qualifier appended to the name of an individual. Examples include Jr. for junior, Sr. for senior, and III for third.</p>"
}
},
"String5": {
"base": null,
"refs": {
"ASN1Subject$Initials": "<p>Concatenation that typically contains the first letter of the <b>GivenName</b>, the first letter of the middle name if one exists, and the first letter of the <b>SurName</b>.</p>"
"String3To255":{
"base":null,
"refs":{
"CrlConfiguration$S3BucketName":"<p>Name of the S3 bucket that contains the CRL. If you do not provide a value for the <b>CustomCname</b> argument, the name of your S3 bucket is placed into the <b>CRL Distribution Points</b> extension of the issued certificate. You can change the name of your bucket by calling the <a>UpdateCertificateAuthority</a> operation. You must specify a bucket policy that allows ACM PCA to write the CRL to your bucket.</p>"
}
},
"String64": {
"base": null,
"refs": {
"ASN1Subject$Organization": "<p>Legal name of the organization with which the certificate subject is affiliated. </p>",
"ASN1Subject$OrganizationalUnit": "<p>A subdivision or unit of the organization (such as sales or finance) with which the certificate subject is affiliated.</p>",
"ASN1Subject$CommonName": "<p>Fully qualified domain name (FQDN) associated with the certificate subject.</p>",
"ASN1Subject$SerialNumber": "<p>The certificate serial number.</p>",
"ASN1Subject$Title": "<p>A title such as Mr. or Ms. which is pre-pended to the name to refer formally to the certificate subject.</p>"
"String40":{
"base":null,
"refs":{
"ASN1Subject$Surname":"<p>Family name. In the US and the UK, for example, the surname of an individual is ordered last. In Asian cultures the surname is typically ordered first.</p>"
}
},
"TStamp": {
"base": null,
"refs": {
"CertificateAuthority$CreatedAt": "<p>Date and time at which your private CA was created.</p>",
"CertificateAuthority$LastStateChangeAt": "<p>Date and time at which your private CA was last updated.</p>",
"CertificateAuthority$NotBefore": "<p>Date and time before which your private CA certificate is not valid.</p>",
"CertificateAuthority$NotAfter": "<p>Date and time after which your private CA certificate is not valid.</p>",
"DescribeCertificateAuthorityAuditReportResponse$CreatedAt": "<p>The date and time at which the report was created.</p>"
"String5":{
"base":null,
"refs":{
"ASN1Subject$Initials":"<p>Concatenation that typically contains the first letter of the <b>GivenName</b>, the first letter of the middle name if one exists, and the first letter of the <b>SurName</b>.</p>"
}
},
"Tag": {
"base": "<p>Tags are labels that you can use to identify and organize your private CAs. Each tag consists of a key and an optional value. You can associate up to 50 tags with a private CA. To add one or more tags to a private CA, call the <a>TagCertificateAuthority</a> function. To remove a tag, call the <a>UntagCertificateAuthority</a> function. </p>",
"refs": {
"TagList$member": null
"String64":{
"base":null,
"refs":{
"ASN1Subject$Organization":"<p>Legal name of the organization with which the certificate subject is affiliated. </p>",
"ASN1Subject$OrganizationalUnit":"<p>A subdivision or unit of the organization (such as sales or finance) with which the certificate subject is affiliated.</p>",
"ASN1Subject$CommonName":"<p>Fully qualified domain name (FQDN) associated with the certificate subject.</p>",
"ASN1Subject$SerialNumber":"<p>The certificate serial number.</p>",
"ASN1Subject$Title":"<p>A title such as Mr. or Ms., which is pre-pended to the name to refer formally to the certificate subject.</p>"
}
},
"TagCertificateAuthorityRequest": {
"base": null,
"refs": {
"TStamp":{
"base":null,
"refs":{
"CertificateAuthority$CreatedAt":"<p>Date and time at which your private CA was created.</p>",
"CertificateAuthority$LastStateChangeAt":"<p>Date and time at which your private CA was last updated.</p>",
"CertificateAuthority$NotBefore":"<p>Date and time before which your private CA certificate is not valid.</p>",
"CertificateAuthority$NotAfter":"<p>Date and time after which your private CA certificate is not valid.</p>",
"CertificateAuthority$RestorableUntil":"<p>The period during which a deleted CA can be restored. For more information, see the <code>PermanentDeletionTimeInDays</code> parameter of the <a>DeleteCertificateAuthorityRequest</a> operation. </p>",
"DescribeCertificateAuthorityAuditReportResponse$CreatedAt":"<p>The date and time at which the report was created.</p>"
}
},
"TagKey": {
"base": null,
"refs": {
"Tag$Key": "<p>Key (name) of the tag.</p>"
"Tag":{
"base":"<p>Tags are labels that you can use to identify and organize your private CAs. Each tag consists of a key and an optional value. You can associate up to 50 tags with a private CA. To add one or more tags to a private CA, call the <a>TagCertificateAuthority</a> operation. To remove a tag, call the <a>UntagCertificateAuthority</a> operation. </p>",
"refs":{
"TagList$member":null
}
},
"TagList": {
"base": null,
"refs": {
"ListTagsResponse$Tags": "<p>The tags associated with your private CA.</p>",
"TagCertificateAuthorityRequest$Tags": "<p>List of tags to be associated with the CA.</p>",
"UntagCertificateAuthorityRequest$Tags": "<p>List of tags to be removed from the CA.</p>"
"TagCertificateAuthorityRequest":{
"base":null,
"refs":{
}
},
"TagValue": {
"base": null,
"refs": {
"Tag$Value": "<p>Value of the tag.</p>"
"TagKey":{
"base":null,
"refs":{
"Tag$Key":"<p>Key (name) of the tag.</p>"
}
},
"TooManyTagsException": {
"base": "<p>You can associate up to 50 tags with a private CA. Exception information is contained in the exception message field.</p>",
"refs": {
"TagList":{
"base":null,
"refs":{
"ListTagsResponse$Tags":"<p>The tags associated with your private CA.</p>",
"TagCertificateAuthorityRequest$Tags":"<p>List of tags to be associated with the CA.</p>",
"UntagCertificateAuthorityRequest$Tags":"<p>List of tags to be removed from the CA.</p>"
}
},
"UntagCertificateAuthorityRequest": {
"base": null,
"refs": {
"TagValue":{
"base":null,
"refs":{
"Tag$Value":"<p>Value of the tag.</p>"
}
},
"UpdateCertificateAuthorityRequest": {
"base": null,
"refs": {
"TooManyTagsException":{
"base":"<p>You can associate up to 50 tags with a private CA. Exception information is contained in the exception message field.</p>",
"refs":{
}
},
"Validity": {
"base": "<p>Length of time for which the certificate issued by your private certificate authority (CA), or by the private CA itself, is valid in days, months, or years. You can issue a certificate by calling the <a>IssueCertificate</a> function.</p>",
"refs": {
"IssueCertificateRequest$Validity": "<p>The type of the validity period.</p>"
"UntagCertificateAuthorityRequest":{
"base":null,
"refs":{
}
},
"ValidityPeriodType": {
"base": null,
"refs": {
"Validity$Type": "<p>Specifies whether the <code>Value</code> parameter represents days, months, or years.</p>"
"UpdateCertificateAuthorityRequest":{
"base":null,
"refs":{
}
},
"Validity":{
"base":"<p>Length of time for which the certificate issued by your private certificate authority (CA), or by the private CA itself, is valid in days, months, or years. You can issue a certificate by calling the <a>IssueCertificate</a> operation.</p>",
"refs":{
"IssueCertificateRequest$Validity":"<p>The type of the validity period.</p>"
}
},
"ValidityPeriodType":{
"base":null,
"refs":{
"Validity$Type":"<p>Specifies whether the <code>Value</code> parameter represents days, months, or years.</p>"
}
}
}

View file

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

View file

@ -1,4 +1,4 @@
{
"pagination": {
"pagination":{
}
}

View file

@ -32,7 +32,8 @@
"input":{"shape":"AssociateDeviceWithRoomRequest"},
"output":{"shape":"AssociateDeviceWithRoomResponse"},
"errors":[
{"shape":"LimitExceededException"}
{"shape":"LimitExceededException"},
{"shape":"DeviceNotRegisteredException"}
]
},
"AssociateSkillGroupWithRoom":{
@ -219,7 +220,10 @@
"requestUri":"/"
},
"input":{"shape":"DisassociateDeviceFromRoomRequest"},
"output":{"shape":"DisassociateDeviceFromRoomResponse"}
"output":{"shape":"DisassociateDeviceFromRoomResponse"},
"errors":[
{"shape":"DeviceNotRegisteredException"}
]
},
"DisassociateSkillGroupFromRoom":{
"name":"DisassociateSkillGroupFromRoom",
@ -463,7 +467,10 @@
"requestUri":"/"
},
"input":{"shape":"StartDeviceSyncRequest"},
"output":{"shape":"StartDeviceSyncResponse"}
"output":{"shape":"StartDeviceSyncResponse"},
"errors":[
{"shape":"DeviceNotRegisteredException"}
]
},
"TagResource":{
"name":"TagResource",
@ -523,7 +530,8 @@
"input":{"shape":"UpdateDeviceRequest"},
"output":{"shape":"UpdateDeviceResponse"},
"errors":[
{"shape":"NotFoundException"}
{"shape":"NotFoundException"},
{"shape":"DeviceNotRegisteredException"}
]
},
"UpdateProfile":{
@ -978,6 +986,13 @@
"min":2,
"pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFFF]*"
},
"DeviceNotRegisteredException":{
"type":"structure",
"members":{
"Message":{"shape":"ErrorMessage"}
},
"exception":true
},
"DeviceSerialNumber":{
"type":"string",
"pattern":"[a-zA-Z0-9]{1,200}"

View file

@ -450,6 +450,11 @@
"UpdateDeviceRequest$DeviceName": "<p>The updated device name. Required.</p>"
}
},
"DeviceNotRegisteredException": {
"base": null,
"refs": {
}
},
"DeviceSerialNumber": {
"base": null,
"refs": {
@ -569,6 +574,7 @@
"base": null,
"refs": {
"AlreadyExistsException$Message": null,
"DeviceNotRegisteredException$Message": null,
"InvalidUserStatusException$Message": null,
"LimitExceededException$Message": null,
"NameInUseException$Message": null,

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

@ -477,7 +477,8 @@
{"shape":"InvalidParameterCombinationException"},
{"shape":"LimitExceededException"},
{"shape":"InvalidAccountStatusException"},
{"shape":"IncompatibleImageException"}
{"shape":"IncompatibleImageException"},
{"shape":"OperationNotPermittedException"}
]
}
},
@ -493,6 +494,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":{
@ -680,12 +691,13 @@
"type":"structure",
"required":["Name"],
"members":{
"Name":{"shape":"String"},
"Name":{"shape":"Name"},
"Description":{"shape":"Description"},
"DisplayName":{"shape":"DisplayName"},
"StorageConnectors":{"shape":"StorageConnectorList"},
"RedirectURL":{"shape":"RedirectURL"},
"FeedbackURL":{"shape":"FeedbackURL"}
"FeedbackURL":{"shape":"FeedbackURL"},
"UserSettings":{"shape":"UserSettingList"}
}
},
"CreateStackResult":{
@ -914,6 +926,10 @@
"type":"string",
"max":100
},
"Domain":{
"type":"string",
"max":64
},
"DomainJoinInfo":{
"type":"structure",
"members":{
@ -921,6 +937,11 @@
"OrganizationalUnitDistinguishedName":{"shape":"OrganizationalUnitDistinguishedName"}
}
},
"DomainList":{
"type":"list",
"member":{"shape":"Domain"},
"max":10
},
"ErrorMessage":{"type":"string"},
"ExpireSessionRequest":{
"type":"structure",
@ -1232,6 +1253,13 @@
"type":"string",
"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
},
"NetworkAccessConfiguration":{
"type":"structure",
"members":{
"EniPrivateIpAddress":{"shape":"String"},
"EniId":{"shape":"String"}
}
},
"OperationNotPermittedException":{
"type":"structure",
"members":{
@ -1247,6 +1275,13 @@
"type":"list",
"member":{"shape":"OrganizationalUnitDistinguishedName"}
},
"Permission":{
"type":"string",
"enum":[
"ENABLED",
"DISABLED"
]
},
"PlatformType":{
"type":"string",
"enum":["WINDOWS"]
@ -1335,7 +1370,8 @@
"StackName":{"shape":"String"},
"FleetName":{"shape":"String"},
"State":{"shape":"SessionState"},
"AuthenticationType":{"shape":"AuthenticationType"}
"AuthenticationType":{"shape":"AuthenticationType"},
"NetworkAccessConfiguration":{"shape":"NetworkAccessConfiguration"}
}
},
"SessionList":{
@ -1362,16 +1398,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 +1496,8 @@
"required":["ConnectorType"],
"members":{
"ConnectorType":{"shape":"StorageConnectorType"},
"ResourceIdentifier":{"shape":"ResourceIdentifier"}
"ResourceIdentifier":{"shape":"ResourceIdentifier"},
"Domains":{"shape":"DomainList"}
}
},
"StorageConnectorList":{
@ -1465,7 +1506,10 @@
},
"StorageConnectorType":{
"type":"string",
"enum":["HOMEFOLDERS"]
"enum":[
"HOMEFOLDERS",
"GOOGLE_DRIVE"
]
},
"StreamingUrlUserId":{
"type":"string",
@ -1600,7 +1644,8 @@
},
"RedirectURL":{"shape":"RedirectURL"},
"FeedbackURL":{"shape":"FeedbackURL"},
"AttributesToDelete":{"shape":"StackAttributes"}
"AttributesToDelete":{"shape":"StackAttributes"},
"UserSettings":{"shape":"UserSettingList"}
}
},
"UpdateStackResult":{
@ -1614,6 +1659,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":[

File diff suppressed because it is too large Load diff

View file

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

View file

@ -1,4 +1,4 @@
{
"pagination": {
"pagination":{
}
}

View file

@ -0,0 +1,11 @@
{
"version": 1,
"defaultRegion": "us-west-2",
"testCases": [
{
"operationName": "DescribeStacks",
"input": {},
"errorExpectedFromService": false
}
]
}

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

@ -1,13 +1,13 @@
{
"version":"2.0",
"metadata":{
"apiVersion":"2016-05-10",
"apiVersion":"2017-01-11",
"endpointPrefix":"clouddirectory",
"protocol":"rest-json",
"serviceFullName":"Amazon CloudDirectory",
"signatureVersion":"v4",
"signingName":"clouddirectory",
"uid":"clouddirectory-2016-05-10"
"uid":"clouddirectory-2017-01-11"
},
"operations":{
"AddFacetToObject":{
@ -47,6 +47,7 @@
{"shape":"ValidationException"},
{"shape":"LimitExceededException"},
{"shape":"AccessDeniedException"},
{"shape":"SchemaAlreadyExistsException"},
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidAttachmentException"}
]
@ -596,6 +597,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":{
@ -843,6 +865,24 @@
{"shape":"NotIndexException"}
]
},
"ListManagedSchemaArns":{
"name":"ListManagedSchemaArns",
"http":{
"method":"POST",
"requestUri":"/amazonclouddirectory/2017-01-11/schema/managed",
"responseCode":200
},
"input":{"shape":"ListManagedSchemaArnsRequest"},
"output":{"shape":"ListManagedSchemaArnsResponse"},
"errors":[
{"shape":"InternalServiceException"},
{"shape":"InvalidArnException"},
{"shape":"ValidationException"},
{"shape":"AccessDeniedException"},
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidNextTokenException"}
]
},
"ListObjectAttributes":{
"name":"ListObjectAttributes",
"http":{
@ -1215,11 +1255,33 @@
{"shape":"LimitExceededException"},
{"shape":"AccessDeniedException"},
{"shape":"InvalidFacetUpdateException"},
{"shape":"FacetValidationException"},
{"shape":"ResourceNotFoundException"},
{"shape":"FacetNotFoundException"},
{"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 +1300,7 @@
{"shape":"AccessDeniedException"},
{"shape":"DirectoryNotEnabledException"},
{"shape":"ResourceNotFoundException"},
{"shape":"LinkNameAlreadyInUseException"},
{"shape":"FacetValidationException"}
]
},
@ -1300,7 +1363,8 @@
{"shape":"IncompatibleSchemaException"},
{"shape":"AccessDeniedException"},
{"shape":"ResourceNotFoundException"},
{"shape":"InvalidAttachmentException"}
{"shape":"InvalidAttachmentException"},
{"shape":"SchemaAlreadyExistsException"}
]
},
"UpgradePublishedSchema":{
@ -1744,6 +1808,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 +2064,8 @@
"LookupPolicy":{"shape":"BatchLookupPolicy"},
"ListIndex":{"shape":"BatchListIndex"},
"ListOutgoingTypedLinks":{"shape":"BatchListOutgoingTypedLinks"},
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinks"}
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinks"},
"GetLinkAttributes":{"shape":"BatchGetLinkAttributes"}
}
},
"BatchReadOperationList":{
@ -2041,7 +2123,8 @@
"LookupPolicy":{"shape":"BatchLookupPolicyResponse"},
"ListIndex":{"shape":"BatchListIndexResponse"},
"ListOutgoingTypedLinks":{"shape":"BatchListOutgoingTypedLinksResponse"},
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinksResponse"}
"ListIncomingTypedLinks":{"shape":"BatchListIncomingTypedLinksResponse"},
"GetLinkAttributes":{"shape":"BatchGetLinkAttributesResponse"}
}
},
"BatchReferenceName":{"type":"string"},
@ -2061,6 +2144,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 +2225,8 @@
"AttachToIndex":{"shape":"BatchAttachToIndex"},
"DetachFromIndex":{"shape":"BatchDetachFromIndex"},
"AttachTypedLink":{"shape":"BatchAttachTypedLink"},
"DetachTypedLink":{"shape":"BatchDetachTypedLink"}
"DetachTypedLink":{"shape":"BatchDetachTypedLink"},
"UpdateLinkAttributes":{"shape":"BatchUpdateLinkAttributes"}
}
},
"BatchWriteOperationList":{
@ -2149,7 +2249,8 @@
"AttachToIndex":{"shape":"BatchAttachToIndexResponse"},
"DetachFromIndex":{"shape":"BatchDetachFromIndexResponse"},
"AttachTypedLink":{"shape":"BatchAttachTypedLinkResponse"},
"DetachTypedLink":{"shape":"BatchDetachTypedLinkResponse"}
"DetachTypedLink":{"shape":"BatchDetachTypedLinkResponse"},
"UpdateLinkAttributes":{"shape":"BatchUpdateLinkAttributesResponse"}
}
},
"BatchWriteOperationResponseList":{
@ -2229,8 +2330,7 @@
"type":"structure",
"required":[
"SchemaArn",
"Name",
"ObjectType"
"Name"
],
"members":{
"SchemaArn":{
@ -2240,7 +2340,8 @@
},
"Name":{"shape":"FacetName"},
"Attributes":{"shape":"FacetAttributeList"},
"ObjectType":{"shape":"ObjectType"}
"ObjectType":{"shape":"ObjectType"},
"FacetStyle":{"shape":"FacetStyle"}
}
},
"CreateFacetResponse":{
@ -2611,7 +2712,8 @@
"type":"structure",
"members":{
"Name":{"shape":"FacetName"},
"ObjectType":{"shape":"ObjectType"}
"ObjectType":{"shape":"ObjectType"},
"FacetStyle":{"shape":"FacetStyle"}
}
},
"FacetAlreadyExistsException":{
@ -2664,7 +2766,8 @@
"BINARY",
"BOOLEAN",
"NUMBER",
"DATETIME"
"DATETIME",
"VARIANT"
]
},
"FacetAttributeUpdate":{
@ -2704,6 +2807,13 @@
"error":{"httpStatusCode":400},
"exception":true
},
"FacetStyle":{
"type":"string",
"enum":[
"STATIC",
"DYNAMIC"
]
},
"FacetValidationException":{
"type":"structure",
"members":{
@ -2764,6 +2874,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 +3093,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,
@ -3155,6 +3307,21 @@
"NextToken":{"shape":"NextToken"}
}
},
"ListManagedSchemaArnsRequest":{
"type":"structure",
"members":{
"SchemaArn":{"shape":"Arn"},
"NextToken":{"shape":"NextToken"},
"MaxResults":{"shape":"NumberResults"}
}
},
"ListManagedSchemaArnsResponse":{
"type":"structure",
"members":{
"SchemaArns":{"shape":"Arns"},
"NextToken":{"shape":"NextToken"}
}
},
"ListObjectAttributesRequest":{
"type":"structure",
"required":[
@ -3975,6 +4142,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>",
@ -42,6 +43,7 @@
"ListFacetNames": "<p>Retrieves the names of facets that exist in a schema.</p>",
"ListIncomingTypedLinks": "<p>Returns a paginated list of all the incoming <a>TypedLinkSpecifier</a> information for an object. It also supports filtering by typed link facet and identity attributes. For more information, see <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/objectsandlinks.html#typedlink\">Typed link</a>.</p>",
"ListIndex": "<p>Lists objects attached to the specified index.</p>",
"ListManagedSchemaArns": "<p>Lists the major version families of each managed schema. If a major version ARN is provided as SchemaArn, the minor version revisions in that family are listed instead.</p>",
"ListObjectAttributes": "<p>Lists all attributes that are associated with an object. </p>",
"ListObjectChildren": "<p>Returns a paginated list of child objects that are associated with a given object.</p>",
"ListObjectParentPaths": "<p>Retrieves all available parent paths for any object type such as node, leaf node, policy node, and index node objects. For more information about objects, see <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/cd_key_concepts.html#dirstructure\">Directory Structure</a>.</p> <p>Use this API to evaluate all parents for an object. The call returns all objects from the root of the directory up to the requested object. The API returns the number of paths based on user-defined <code>MaxResults</code>, in case there are multiple paths to the parent. The order of the paths and nodes returned is consistent among multiple API calls unless the objects are deleted or moved. Paths not leading to the directory root are ignored from the target object.</p>",
@ -60,6 +62,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 +136,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>",
@ -144,6 +148,7 @@
"ListFacetNamesRequest$SchemaArn": "<p>The Amazon Resource Name (ARN) to retrieve facet names from.</p>",
"ListIncomingTypedLinksRequest$DirectoryArn": "<p>The Amazon Resource Name (ARN) of the directory where you want to list the typed links.</p>",
"ListIndexRequest$DirectoryArn": "<p>The ARN of the directory that the index exists in.</p>",
"ListManagedSchemaArnsRequest$SchemaArn": "<p>The response for ListManagedSchemaArns. When this parameter is used, all minor version ARNs for a major version are listed.</p>",
"ListObjectAttributesRequest$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>",
"ListObjectChildrenRequest$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>",
"ListObjectParentPathsRequest$DirectoryArn": "<p>The ARN of the directory to which the parent path applies.</p>",
@ -166,6 +171,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>",
@ -184,6 +190,7 @@
"refs": {
"ListAppliedSchemaArnsResponse$SchemaArns": "<p>The ARNs of schemas that are applied to the directory.</p>",
"ListDevelopmentSchemaArnsResponse$SchemaArns": "<p>The ARNs of retrieved development schemas.</p>",
"ListManagedSchemaArnsResponse$SchemaArns": "<p>The ARNs for all AWS managed schemas.</p>",
"ListPublishedSchemaArnsResponse$SchemaArns": "<p>The ARNs of published schemas.</p>"
}
},
@ -232,6 +239,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 +256,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 +302,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 +455,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 +689,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 +790,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>",
@ -1128,6 +1165,13 @@
"refs": {
}
},
"FacetStyle": {
"base": null,
"refs": {
"CreateFacetRequest$FacetStyle": "<p>There are two different styles that you can define on any given facet, <code>Static</code> and <code>Dynamic</code>. For static facets, all attributes must be defined in the schema. For dynamic facets, attributes can be defined during data plane operations.</p>",
"Facet$FacetStyle": "<p>There are two different styles that you can define on any given facet, <code>Static</code> and <code>Dynamic</code>. For static facets, all attributes must be defined in the schema. For dynamic facets, attributes can be defined during data plane operations.</p>"
}
},
"FacetValidationException": {
"base": "<p>The <a>Facet</a> that you provided was not well formed or could not be validated with the schema.</p>",
"refs": {
@ -1163,6 +1207,16 @@
"refs": {
}
},
"GetLinkAttributesRequest": {
"base": null,
"refs": {
}
},
"GetLinkAttributesResponse": {
"base": null,
"refs": {
}
},
"GetObjectAttributesRequest": {
"base": null,
"refs": {
@ -1273,6 +1327,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": {
@ -1380,6 +1453,16 @@
"refs": {
}
},
"ListManagedSchemaArnsRequest": {
"base": null,
"refs": {
}
},
"ListManagedSchemaArnsResponse": {
"base": null,
"refs": {
}
},
"ListObjectAttributesRequest": {
"base": null,
"refs": {
@ -1539,6 +1622,8 @@
"ListIncomingTypedLinksResponse$NextToken": "<p>The pagination token.</p>",
"ListIndexRequest$NextToken": "<p>The pagination token.</p>",
"ListIndexResponse$NextToken": "<p>The pagination token.</p>",
"ListManagedSchemaArnsRequest$NextToken": "<p>The pagination token.</p>",
"ListManagedSchemaArnsResponse$NextToken": "<p>The pagination token.</p>",
"ListObjectAttributesRequest$NextToken": "<p>The pagination token.</p>",
"ListObjectAttributesResponse$NextToken": "<p>The pagination token.</p>",
"ListObjectChildrenRequest$NextToken": "<p>The pagination token.</p>",
@ -1607,6 +1692,7 @@
"ListFacetNamesRequest$MaxResults": "<p>The maximum number of results to retrieve.</p>",
"ListIncomingTypedLinksRequest$MaxResults": "<p>The maximum number of results to retrieve.</p>",
"ListIndexRequest$MaxResults": "<p>The maximum number of objects in a single page to retrieve from the index during a request. For more information, see <a href=\"http://docs.aws.amazon.com/directoryservice/latest/admin-guide/limits.html#limits_cd\">AWS Directory Service Limits</a>.</p>",
"ListManagedSchemaArnsRequest$MaxResults": "<p>The maximum number of results to retrieve.</p>",
"ListObjectAttributesRequest$MaxResults": "<p>The maximum number of items to be retrieved in a single call. This is an approximate number.</p>",
"ListObjectChildrenRequest$MaxResults": "<p>The maximum number of items to be retrieved in a single call. This is an approximate number.</p>",
"ListObjectParentPathsRequest$MaxResults": "<p>The maximum number of items to be retrieved in a single call. This is an approximate number.</p>",
@ -2052,6 +2138,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 +2235,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 +2271,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 +2286,16 @@
"refs": {
}
},
"UpdateLinkAttributesRequest": {
"base": null,
"refs": {
}
},
"UpdateLinkAttributesResponse": {
"base": null,
"refs": {
}
},
"UpdateObjectAttributesRequest": {
"base": null,
"refs": {

View file

@ -35,6 +35,11 @@
"output_token": "NextToken",
"limit_key": "MaxResults"
},
"ListManagedSchemaArns": {
"input_token": "NextToken",
"output_token": "NextToken",
"limit_key": "MaxResults"
},
"ListObjectAttributes": {
"input_token": "NextToken",
"output_token": "NextToken",

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,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": "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,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

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