From 321c4aade5bd8df3249ed8a530588be202abdb1b Mon Sep 17 00:00:00 2001 From: Yosuke Matsuda Date: Tue, 26 Aug 2014 15:40:27 -0700 Subject: [PATCH] Version 2 of the AWS Mobile SDK for iOS 2.0.6. --- AWSCore/AWSCore.h | 6 +- .../Authentication/AWSCredentialsProvider.h | 20 +- .../Authentication/AWSCredentialsProvider.m | 71 +- AWSCore/Authentication/AWSSignature.h | 6 +- AWSCore/Authentication/AWSSignature.m | 46 +- .../AWSCognitoIdentityService.h | 18 +- .../AWSCognitoIdentityService.m | 87 +- .../AWSCognitoIdentityServiceModel.h | 29 +- .../AWSCognitoIdentityServiceModel.m | 17 +- .../CognitoIdentityService.h | 16 +- .../Resources/cib-2014-06-30.json | 161 +- .../AWSEventRecorderService.h | 1 - .../AWSEventRecorderService.m | 136 +- .../AWSEventRecorderServiceModel.h | 6 +- .../AWSEventRecorderServiceModel.m | 2 +- AWSCore/MobileAnalytics/AWSMobileAnalytics.m | 252 +- .../AWSMobileAnalyticsClientConfiguration.h | 41 - .../AWSMobileAnalyticsConfiguration.h | 44 + ...on.m => AWSMobileAnalyticsConfiguration.m} | 36 +- .../core/AWSMobileAnalyticsDefaultContext.m | 83 +- .../AWSMobileAnalyticsSerializerFactory.m | 10 +- ...SMobileAnalyticsHttpCachingConfiguration.m | 16 +- .../AWSMobileAnalyticsDefaultHttpClient.m | 15 +- .../http/AWSMobileAnalyticsDefaultRequest.m | 4 +- .../http/AWSMobileAnalyticsDefaultResponse.m | 18 +- .../http/AWSMobileAnalyticsLogInterceptor.m | 10 +- .../AWSMobileAnalyticsDefaultFileManager.m | 18 +- .../core/system/AWSMobileAnalyticsFile.m | 30 +- .../system/AWSMobileAnalyticsIOSPreferences.m | 42 +- .../core/system/AWSMobileAnalyticsIOSSystem.m | 10 +- .../AWSMobileAnalyticsConnectivityPolicy.m | 10 +- .../AWSMobileAnalyticsDefaultDeliveryClient.m | 32 +- .../AWSMobileAnalyticsDeliveryPolicyFactory.m | 6 +- .../AWSMobileAnalyticsERSRequestBuilder.m | 6 +- .../AWSMobileAnalyticsFileEventStore.m | 26 +- .../AWSMobileAnalyticsSubmissionTimePolicy.m | 4 +- .../AWSMobileAnalyticsDefaultEventClient.m | 50 +- ...SMobileAnalyticsEventConstraintDecorator.m | 6 +- .../include/AWSMobileAnalytics.h | 40 +- .../include/AWSMobileAnalyticsEventClient.h | 34 +- .../include/core/AWSMobileAnalyticsContext.h | 4 +- .../core/AWSMobileAnalyticsDefaultContext.h | 18 +- ...tion.h => AWSMobileAnalyticsConfiguring.h} | 2 +- ...SMobileAnalyticsHttpCachingConfiguration.h | 4 +- .../AWSMobileAnalyticsConnectivityPolicy.h | 2 +- .../AWSMobileAnalyticsDefaultDeliveryClient.h | 2 +- .../AWSMobileAnalyticsDeliveryPolicyFactory.h | 2 +- .../AWSMobileAnalyticsERSRequestBuilder.h | 2 +- ...leAnalyticsAppleMonetizationEventBuilder.m | 10 +- ...SMobileAnalyticsMonetizationEventBuilder.m | 14 +- ...AnalyticsVirtualMonetizationEventBuilder.m | 10 +- .../AWSMobileAnalyticsActiveSessionState.m | 10 +- .../AWSMobileAnalyticsDefaultSessionClient.m | 26 +- .../AWSMobileAnalyticsInactiveSessionState.m | 10 +- .../AWSMobileAnalyticsPausedSessionState.m | 10 +- .../session/AWSMobileAnalyticsSession.m | 8 +- .../session/AWSMobileAnalyticsSessionStore.m | 16 +- AWSCore/Networking/AWSNetworking.h | 197 +- AWSCore/Networking/AWSNetworking.m | 364 +- AWSCore/Networking/AWSURLSessionManager.h | 33 + .../Networking/AWSURLSessionManager.m | 171 +- AWSCore/STS/AWSSTS.h | 13 +- AWSCore/STS/AWSSTS.m | 70 +- AWSCore/STS/AWSSTSModel.h | 24 +- AWSCore/STS/AWSSTSModel.m | 6 +- AWSCore/STS/Resources/sts-2011-06-15.json | 158 +- AWSCore/Serialization/AWSSerialization.h | 68 + AWSCore/Serialization/AWSSerialization.m | 854 +- .../Serialization/AWSURLRequestRetryHandler.h | 4 +- .../Serialization/AWSURLRequestRetryHandler.m | 14 +- .../AWSURLRequestSerialization.h | 20 +- .../AWSURLRequestSerialization.m | 242 +- .../AWSURLResponseSerialization.h | 8 +- .../AWSURLResponseSerialization.m | 83 +- AWSCore/Serialization/AWSValidation.m | 4 +- AWSCore/Service/AWSClientContext.m | 4 +- AWSCore/Service/AWSService.h | 11 +- AWSCore/Service/AWSService.m | 35 +- AWSCore/Service/AWSServiceEnum.h | 3 +- AWSCore/Utility/AWSCategory.h | 89 + .../Utility/AWSCategory.m | 92 +- AWSCore/Utility/AWSLogging.h | 65 + .../Utility/AWSLogging.m | 30 +- .../AZModel.h => AWSCore/Utility/AWSModel.h | 4 +- .../AZModel.m => AWSCore/Utility/AWSModel.m | 16 +- .../AWSSynchronizedMutableDictionary.h | 4 +- .../AWSSynchronizedMutableDictionary.m | 16 +- .../AIAmazonInsightsTests.m | 18 +- .../AIConnectivityPolicyTests.m | 4 +- .../AIDefaultDeliveryClientTests.m | 2 +- .../AIDeliveryIntegrationTests.m | 4 +- AWSiOSSDKAnalyticsTests/AIEventClientTests.m | 4 +- .../AIInsightsContextBuilder.h | 4 +- .../AIInsightsContextBuilder.m | 6 +- .../AIInternalInterfaces.h | 2 +- .../AISessionClientTests.m | 457 +- .../AISessionIntegrationTests.m | 73 +- AWSiOSSDKAnalyticsTests/AITestConfiguration.h | 4 +- AWSiOSSDKAnalyticsTests/TestInsightsContext.h | 2 +- AWSiOSSDKTests/AWSAnalyticsTests.m | 121 +- AWSiOSSDKTests/AWSClockSkewTests.m | 52 +- .../AWSCognitoCredentialsProviderTests.m | 30 +- .../AWSCognitoIdentityServiceTests.m | 2 +- AWSiOSSDKTests/AWSCoreTests.m | 700 +- AWSiOSSDKTests/AWSDynamoDBTests.m | 78 +- AWSiOSSDKTests/AWSEC2Tests.m | 4 +- ...Tests.m => AWSEventRecorderServiceTests.m} | 15 +- AWSiOSSDKTests/AWSKinesisRecorderTests.m | 3 +- AWSiOSSDKTests/AWSKinesisTests.m | 36 +- AWSiOSSDKTests/AWSS3Tests.m | 75 +- AWSiOSSDKTests/AWSS3TransferManagerTests.m | 468 +- AWSiOSSDKTests/AWSSESTests.m | 2 +- AWSiOSSDKTests/AWSSNSTests.m | 71 +- AWSiOSSDKTests/AWSSQSTests.m | 2 +- AWSiOSSDKTests/AWSSTSTests.m | 48 - AWSiOSSDKTests/AWSSimpleDBTests.m | 77 +- AWSiOSSDKTests/AWSTestUtility.m | 89 + AWSiOSSDKTests/AWSiOSSDKv2Tests-Prefix.pch | 10 +- AWSiOSSDKTests/AmazonCoreTests.m | 76 - AWSiOSSDKTests/ec2-input.json | 383 + AWSiOSSDKTests/ec2-output.json | 417 + AWSiOSSDKTests/json-input.json | 259 + AWSiOSSDKTests/json-output.json | 325 + AWSiOSSDKTests/query-input.json | 522 + AWSiOSSDKTests/query-output.json | 507 + AWSiOSSDKTests/rest-xml-input.json | 1219 ++ AWSiOSSDKTests/rest-xml-output.json | 531 + AWSiOSSDKTests/xmlSampleListBuckets.xml | 17 - AWSiOSSDKTests/xmlSampleListObjects.xml | 30 - AWSiOSSDKTests/xmlSampleListParts.xml | 31 - AWSiOSSDKTests/xmlSamplePutBucketACLReq.xml | 23 - AWSiOSSDKv2.podspec | 8 +- AWSiOSSDKv2.xcodeproj/project.pbxproj | 210 +- AmazonCore/AmazonCore.h | 21 - AmazonCore/Logging/AZLogging.h | 65 - AmazonCore/Networking/AZNetworking.h | 203 - AmazonCore/Networking/AZNetworking.m | 371 - AmazonCore/Networking/AZURLSessionManager.h | 33 - AmazonCore/Utility/AZCategory.h | 81 - AutoScaling/AWSAutoScaling.h | 167 +- AutoScaling/AWSAutoScaling.m | 205 +- AutoScaling/AWSAutoScalingModel.h | 596 +- AutoScaling/AWSAutoScalingModel.m | 301 +- .../Resources/autoscaling-2011-01-01.json | 1213 +- CloudWatch/AWSCloudWatch.h | 25 +- CloudWatch/AWSCloudWatch.m | 78 +- CloudWatch/AWSCloudWatchModel.h | 282 +- CloudWatch/AWSCloudWatchModel.m | 38 +- .../Resources/monitoring-2010-08-01.json | 338 +- DynamoDB/AWSDynamoDB.h | 23 +- DynamoDB/AWSDynamoDB.m | 86 +- DynamoDB/AWSDynamoDBModel.h | 116 +- DynamoDB/AWSDynamoDBModel.m | 143 +- DynamoDB/AWSDynamoDBObjectMapper.h | 14 +- DynamoDB/AWSDynamoDBObjectMapper.m | 23 +- DynamoDB/Resources/dynamodb-2012-08-10.json | 330 +- EC2/AWSEC2.h | 278 +- EC2/AWSEC2.m | 361 +- EC2/AWSEC2Model.h | 1218 +- EC2/AWSEC2Model.m | 801 +- EC2/Resources/ec2-2014-05-01.json | 13086 ---------------- EC2/Resources/ec2-2014-06-15.json | 11674 ++++++++++++++ .../AWSElasticLoadBalancing.h | 259 +- .../AWSElasticLoadBalancing.m | 159 +- .../AWSElasticLoadBalancingModel.h | 972 +- .../AWSElasticLoadBalancingModel.m | 131 +- .../elasticloadbalancing-2012-06-01.json | 1611 +- Kinesis/AWSKinesis.h | 19 +- Kinesis/AWSKinesis.m | 88 +- Kinesis/AWSKinesisModel.h | 34 +- Kinesis/AWSKinesisModel.m | 20 +- Kinesis/AWSKinesisRecorder.h | 3 +- Kinesis/AWSKinesisRecorder.m | 75 +- Kinesis/Resources/kinesis-2013-12-02.json | 42 +- Podfile | 5 +- S3/AWSS3.h | 1 - S3/AWSS3.m | 176 +- S3/AWSS3Model.h | 373 +- S3/AWSS3Model.m | 216 +- S3/AWSS3TransferManager.h | 28 +- S3/AWSS3TransferManager.m | 316 +- S3/Resources/s3-2006-03-01.json | 361 +- SES/AWSSES.h | 39 +- SES/AWSSES.m | 76 +- SES/AWSSESModel.h | 110 +- SES/AWSSESModel.m | 24 +- SES/Resources/email-2010-12-01.json | 172 +- SNS/AWSSNS.h | 55 +- SNS/AWSSNS.m | 107 +- SNS/AWSSNSModel.h | 108 +- SNS/AWSSNSModel.m | 23 +- SNS/Resources/sns-2010-03-31.json | 160 +- SQS/AWSSQS.h | 27 +- SQS/AWSSQS.m | 92 +- SQS/AWSSQSModel.h | 70 +- SQS/AWSSQSModel.m | 14 +- SQS/Resources/sqs-2012-11-05.json | 130 +- Scripts/GenerateAppleDocs.sh | 2 +- Scripts/Package.sh | 1 - Scripts/PodFramework.sh | 10 +- Scripts/SdkPackage.sh | 8 +- SimpleDB/AWSSimpleDB.h | 21 +- SimpleDB/AWSSimpleDB.m | 64 +- SimpleDB/AWSSimpleDBModel.h | 36 +- SimpleDB/AWSSimpleDBModel.m | 2 +- SimpleDB/Resources/sdb-2009-04-15.json | 58 +- 206 files changed, 27686 insertions(+), 22120 deletions(-) delete mode 100644 AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsClientConfiguration.h create mode 100644 AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsConfiguration.h rename AWSCore/MobileAnalytics/AZCommon/{AWSMobileAnalyticsClientConfiguration.m => AWSMobileAnalyticsConfiguration.m} (67%) rename AWSCore/MobileAnalytics/include/core/configuration/{AWSMobileAnalyticsConfiguration.h => AWSMobileAnalyticsConfiguring.h} (97%) create mode 100644 AWSCore/Networking/AWSURLSessionManager.h rename AmazonCore/Networking/AZURLSessionManager.m => AWSCore/Networking/AWSURLSessionManager.m (78%) create mode 100644 AWSCore/Utility/AWSCategory.h rename AmazonCore/Utility/AZCategory.m => AWSCore/Utility/AWSCategory.m (79%) create mode 100644 AWSCore/Utility/AWSLogging.h rename AmazonCore/Logging/AZLogging.m => AWSCore/Utility/AWSLogging.m (67%) rename AmazonCore/Utility/AZModel.h => AWSCore/Utility/AWSModel.h (94%) rename AmazonCore/Utility/AZModel.m => AWSCore/Utility/AWSModel.m (86%) rename AmazonCore/Utility/AZSynchronizedMutableDictionary.h => AWSCore/Utility/AWSSynchronizedMutableDictionary.h (91%) rename AmazonCore/Utility/AZSynchronizedMutableDictionary.m => AWSCore/Utility/AWSSynchronizedMutableDictionary.m (78%) rename AWSiOSSDKTests/{AWSERSTests.m => AWSEventRecorderServiceTests.m} (87%) delete mode 100644 AWSiOSSDKTests/AmazonCoreTests.m create mode 100644 AWSiOSSDKTests/ec2-input.json create mode 100644 AWSiOSSDKTests/ec2-output.json create mode 100644 AWSiOSSDKTests/json-input.json create mode 100644 AWSiOSSDKTests/json-output.json create mode 100644 AWSiOSSDKTests/query-input.json create mode 100644 AWSiOSSDKTests/query-output.json create mode 100644 AWSiOSSDKTests/rest-xml-input.json create mode 100644 AWSiOSSDKTests/rest-xml-output.json delete mode 100644 AWSiOSSDKTests/xmlSampleListBuckets.xml delete mode 100644 AWSiOSSDKTests/xmlSampleListObjects.xml delete mode 100644 AWSiOSSDKTests/xmlSampleListParts.xml delete mode 100644 AWSiOSSDKTests/xmlSamplePutBucketACLReq.xml delete mode 100644 AmazonCore/AmazonCore.h delete mode 100644 AmazonCore/Logging/AZLogging.h delete mode 100644 AmazonCore/Networking/AZNetworking.h delete mode 100644 AmazonCore/Networking/AZNetworking.m delete mode 100644 AmazonCore/Networking/AZURLSessionManager.h delete mode 100644 AmazonCore/Utility/AZCategory.h delete mode 100644 EC2/Resources/ec2-2014-05-01.json create mode 100644 EC2/Resources/ec2-2014-06-15.json diff --git a/AWSCore/AWSCore.h b/AWSCore/AWSCore.h index 771d7b67d61..8485ba113a5 100644 --- a/AWSCore/AWSCore.h +++ b/AWSCore/AWSCore.h @@ -15,8 +15,6 @@ #import -#import "AmazonCore.h" - #import "AWSService.h" #import "AWSNetworking.h" #import "AWSCredentialsProvider.h" @@ -24,9 +22,9 @@ #import "AWSURLRequestSerialization.h" #import "AWSURLResponseSerialization.h" #import "AWSClientContext.h" +#import "AWSCategory.h" +#import "AWSLogging.h" #import "STS.h" #import "CognitoIdentityService.h" - -#import "EventRecorderService.h" #import "MobileAnalytics.h" diff --git a/AWSCore/Authentication/AWSCredentialsProvider.h b/AWSCore/Authentication/AWSCredentialsProvider.h index 1b66d44566a..3377e5620f8 100644 --- a/AWSCore/Authentication/AWSCredentialsProvider.h +++ b/AWSCore/Authentication/AWSCredentialsProvider.h @@ -73,17 +73,21 @@ typedef NS_ENUM(NSInteger, AWSCognitoLoginProviderKey) { @property (nonatomic, strong) NSString *webIdentityToken; @property (nonatomic, strong) NSString *roleArn; -@property (nonatomic, strong) NSString *provider; +@property (nonatomic, strong) NSString *roleSessionName; + +@property (nonatomic, strong) NSString *providerId; + (instancetype)credentialsWithRegionType:(AWSRegionType)regionType - provider:(NSString *)provider - webIdentityToken:(NSString *)webIdentityToken - roleArn:(NSString *)roleArn; + providerId:(NSString *)providerId + roleArn:(NSString *)roleArn + roleSessionName:(NSString *)roleSessionName + webIdentityToken:(NSString *)webIdentityToken; - (instancetype)initWithRegionType:(AWSRegionType)regionType - provider:(NSString *)provider - webIdentityToken:(NSString *)webIdentityToken - roleArn:(NSString *)roleArn; + providerId:(NSString *)providerId + roleArn:(NSString *)roleArn + roleSessionName:(NSString *)roleSessionName + webIdentityToken:(NSString *)webIdentityToken; - (BFTask *)refresh; @@ -142,4 +146,6 @@ typedef NS_ENUM(NSInteger, AWSCognitoLoginProviderKey) { - (void)clearKeychain; +- (void)clearCredentials; + @end \ No newline at end of file diff --git a/AWSCore/Authentication/AWSCredentialsProvider.m b/AWSCore/Authentication/AWSCredentialsProvider.m index 2e646df6f59..22ad4c748d6 100644 --- a/AWSCore/Authentication/AWSCredentialsProvider.m +++ b/AWSCore/Authentication/AWSCredentialsProvider.m @@ -16,6 +16,7 @@ #import "AWSCredentialsProvider.h" #import "STS.h" #import "UICKeyChainStore.h" +#import "AWSLogging.h" NSString *const AWSCognitoIdentityIdChangedNotification = @"com.amazonaws.services.cognitoidentity.AWSCognitoIdentityIdChangedNotification"; NSString *const AWSCognitoNotificationPreviousId = @"PREVID"; @@ -76,25 +77,29 @@ @interface AWSWebIdentityCredentialsProvider() @implementation AWSWebIdentityCredentialsProvider + (instancetype)credentialsWithRegionType:(AWSRegionType)regionType - provider:(NSString *)provider - webIdentityToken:(NSString *)webIdentityToken - roleArn:(NSString *)roleArn { + providerId:(NSString *)providerId + roleArn:(NSString *)roleArn + roleSessionName:(NSString *)roleSessionName + webIdentityToken:(NSString *)webIdentityToken { AWSWebIdentityCredentialsProvider *credentialsProvider = [[AWSWebIdentityCredentialsProvider alloc] initWithRegionType:regionType - provider:provider - webIdentityToken:webIdentityToken - roleArn:roleArn]; + providerId:providerId + roleArn:roleArn + roleSessionName:roleSessionName + webIdentityToken:webIdentityToken]; return credentialsProvider; } - (instancetype)initWithRegionType:(AWSRegionType)regionType - provider:(NSString *)provider - webIdentityToken:(NSString *)webIdentityToken - roleArn:(NSString *)roleArn { + providerId:(NSString *)providerId + roleArn:(NSString *)roleArn + roleSessionName:(NSString *)roleSessionName + webIdentityToken:(NSString *)webIdentityToken { if (self = [super init]) { - _keychain = [UICKeyChainStore keyChainStoreWithService:[NSString stringWithFormat:@"%@.%@.%@", provider, webIdentityToken, roleArn]]; - _provider = provider; - _webIdentityToken = webIdentityToken; + _keychain = [UICKeyChainStore keyChainStoreWithService:[NSString stringWithFormat:@"%@.%@.%@", providerId, webIdentityToken, roleArn]]; + _providerId = providerId; _roleArn = roleArn; + _roleSessionName = roleSessionName; + _webIdentityToken = webIdentityToken; AWSAnonymousCredentialsProvider *credentialsProvider = [AWSAnonymousCredentialsProvider new]; AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:regionType @@ -109,9 +114,11 @@ - (instancetype)initWithRegionType:(AWSRegionType)regionType - (BFTask *)refresh { // request new credentials AWSSTSAssumeRoleWithWebIdentityRequest *webIdentityRequest = [AWSSTSAssumeRoleWithWebIdentityRequest new]; + webIdentityRequest.providerId = self.providerId; webIdentityRequest.roleArn = self.roleArn; + webIdentityRequest.roleSessionName = self.roleSessionName; webIdentityRequest.webIdentityToken = self.webIdentityToken; - webIdentityRequest.roleSessionName = @"iOS-Provider"; + return [[self.sts assumeRoleWithWebIdentity:webIdentityRequest] continueWithBlock:^id(BFTask *task) { if (task.result) { AWSSTSAssumeRoleWithWebIdentityResponse *wifResponse = task.result; @@ -132,6 +139,7 @@ - (BFTask *)refresh { [self.keychain removeItemForKey:@"secretKey"]; [self.keychain removeItemForKey:@"sessionKey"]; [self.keychain removeItemForKey:@"expiration"]; + [self.keychain synchronize]; } } @@ -285,12 +293,12 @@ - (BFTask *)refresh { return task; } - AZLogError(@"GetOpenIdToken failed. Error is [%@]", task.error); - AZLogVerbose(@"Calling GetId"); + AWSLogError(@"GetOpenIdToken failed. Error is [%@]", task.error); + AWSLogVerbose(@"Calling GetId"); // if it's auth, reset id and refetch [self clearKeychain]; return [[self getIdentityId] continueWithSuccessBlock:^id(BFTask *task) { - AZLogVerbose(@"Retrying GetOpenIdToken"); + AWSLogVerbose(@"Retrying GetOpenIdToken"); // retry get token AWSCognitoIdentityServiceGetOpenIdTokenInput *tokenRetry = [AWSCognitoIdentityServiceGetOpenIdTokenInput new]; @@ -338,20 +346,14 @@ - (BFTask *)refresh { } } else { // reset the values for the credentials - @synchronized(self) { - self.keychain[@"accessKey"] = nil; - self.keychain[@"secretKey"] = nil; - self.keychain[@"sessionKey"] = nil; - self.keychain[@"expiration"] = nil; - [self.keychain synchronize]; - } + [self clearCredentials]; } return task; }]; }] continueWithBlock:^id(BFTask *task) { if (task.error) { - AZLogError(@"Unable to refresh. Error is [%@]", task.error); + AWSLogError(@"Unable to refresh. Error is [%@]", task.error); } dispatch_semaphore_signal(semaphore); @@ -376,7 +378,7 @@ - (BFTask *)getIdentityId { return [[self.cib getId:getIdInput] continueWithBlock:^id(BFTask *task) { if (task.error) { - AZLogError(@"GetId failed. Error is [%@]", task.error); + AWSLogError(@"GetId failed. Error is [%@]", task.error); } else { AWSCognitoIdentityServiceGetIdResponse *getIdResponse = task.result; [self postIdentityIdChangedNotification:getIdResponse.identityId]; @@ -398,11 +400,17 @@ - (BFTask *)getIdentityId { - (void)clearKeychain { @synchronized(self) { - self.keychain[@"identityId"] = nil; - self.keychain[@"accessKey"] = nil; - self.keychain[@"secretKey"] = nil; - self.keychain[@"sessionKey"] = nil; - self.keychain[@"expiration"] = nil; + [self.keychain removeItemForKey:@"identityId"]; + [self clearCredentials]; + } +} + +- (void)clearCredentials { + @synchronized(self) { + [self.keychain removeItemForKey:@"accessKey"]; + [self.keychain removeItemForKey:@"secretKey"]; + [self.keychain removeItemForKey:@"sessionKey"]; + [self.keychain removeItemForKey:@"expiration"]; [self.keychain synchronize]; } } @@ -444,6 +452,9 @@ - (NSDate *)expiration { - (void)setLogins:(NSDictionary *)logins { _logins = [self updateKeysForLogins:logins]; + // invalidate the credentials, so next time we + // are forced to get a new token (and perhaps merge) + [self clearCredentials]; } - (NSDictionary *)updateKeysForLogins:(NSDictionary *)logins { diff --git a/AWSCore/Authentication/AWSSignature.h b/AWSCore/Authentication/AWSSignature.h index d27088ca325..09592bbf972 100644 --- a/AWSCore/Authentication/AWSSignature.h +++ b/AWSCore/Authentication/AWSSignature.h @@ -14,7 +14,7 @@ */ #import -#import "AZNetworking.h" +#import "AWSNetworking.h" @class AWSEndpoint; @@ -29,7 +29,7 @@ @end -@interface AWSSignatureV4Signer : NSObject +@interface AWSSignatureV4Signer : NSObject @property (nonatomic, strong, readonly) id credentialsProvider; @@ -41,7 +41,7 @@ @end -@interface AWSSignatureV2Signer : NSObject +@interface AWSSignatureV2Signer : NSObject @property (nonatomic, strong, readonly) id credentialsProvider; diff --git a/AWSCore/Authentication/AWSSignature.m b/AWSCore/Authentication/AWSSignature.m index 3ceee636152..3425d9e82db 100644 --- a/AWSCore/Authentication/AWSSignature.m +++ b/AWSCore/Authentication/AWSSignature.m @@ -18,10 +18,10 @@ #import #import #import -#import "AZCategory.h" +#import "AWSCategory.h" #import "AWSService.h" #import "AWSCredentialsProvider.h" -#import "AZLogging.h" +#import "AWSLogging.h" NSString *const AWSSigV4Marker = @"AWS4"; NSString *const AWSSigV4Algorithm = @"AWS4-HMAC-SHA256"; @@ -110,7 +110,7 @@ + (NSString *)HMACSign:(NSData *)data withKey:(NSString *)key usingAlgorithm:(CC NSData *digestData = [NSData dataWithBytes:digestRaw length:digestLength]; - return [digestData az_base64EncodedString]; + return [digestData aws_base64EncodedString]; } @end @@ -185,8 +185,8 @@ - (NSString *)signS3RequestV4:(NSMutableURLRequest *)urlRequest { // } NSDate *date = [NSDate date]; - NSString *dateStamp = [date az_stringValue:AZDateShortDateFormat1]; - //NSString *dateTime = [date az_stringValue:AZDateAmzDateFormat]; + NSString *dateStamp = [date aws_stringValue:AWSDateShortDateFormat1]; + //NSString *dateTime = [date aws_stringValue:AWSDateAmzDateFormat]; NSString *scope = [NSString stringWithFormat:@"%@/%@/%@/%@", dateStamp, self.endpoint.regionName, self.endpoint.serviceName, AWSSigV4Terminator]; NSString *signingCredentials = [NSString stringWithFormat:@"%@/%@", self.credentialsProvider.accessKey, scope]; @@ -199,7 +199,7 @@ - (NSString *)signS3RequestV4:(NSMutableURLRequest *)urlRequest { path = [NSString stringWithFormat:@"/"]; } else { // SigV4 signs escaped path string - path = [[path az_stringWithURLEncoding] stringByReplacingOccurrencesOfString:@"\%2F" withString:@"/"]; + path = [[path aws_stringWithURLEncoding] stringByReplacingOccurrencesOfString:@"\%2F" withString:@"/"]; } NSString *query = urlRequest.URL.query; if (query == nil) { @@ -238,14 +238,14 @@ - (NSString *)signS3RequestV4:(NSMutableURLRequest *)urlRequest { query:query headers:headers contentSha256:contentSha256]; - AZLogDebug(@"Canonical request: [%@]", canonicalRequest); + AWSLogDebug(@"Canonical request: [%@]", canonicalRequest); NSString *stringToSign = [NSString stringWithFormat:@"%@\n%@\n%@\n%@", AWSSigV4Algorithm, [urlRequest valueForHTTPHeaderField:@"X-Amz-Date"], scope, [AWSSignatureSignerUtility hexEncode:[AWSSignatureSignerUtility hashString:canonicalRequest]]]; - AZLogDebug(@"AWS4 String to Sign: [%@]", stringToSign); + AWSLogDebug(@"AWS4 String to Sign: [%@]", stringToSign); NSData *kSigning = [self getV4DerivedKey:self.credentialsProvider.secretKey date:dateStamp @@ -282,12 +282,12 @@ - (NSString *)signRequestV4:(NSURLRequest *)request{ return nil; } - NSDate *xAmzDate = [NSDate az_dateFromString:[request valueForHTTPHeaderField:@"X-Amz-Date"] - format:AZDateISO8601DateFormat2]; + NSDate *xAmzDate = [NSDate aws_dateFromString:[request valueForHTTPHeaderField:@"X-Amz-Date"] + format:AWSDateISO8601DateFormat2]; - NSString *dateStamp = [xAmzDate az_stringValue:AZDateShortDateFormat1]; + NSString *dateStamp = [xAmzDate aws_stringValue:AWSDateShortDateFormat1]; - NSString *path = [request.URL.path az_stringWithURLEncodingPath]; + NSString *path = [request.URL.path aws_stringWithURLEncodingPath]; if (path.length == 0) { path = [NSString stringWithFormat:@"/"]; } @@ -304,8 +304,8 @@ - (NSString *)signRequestV4:(NSURLRequest *)request{ headers:request.allHTTPHeaderFields contentSha256:contentSha256]; - AZLogDebug(@"AWS4 Canonical Request: [%@]", canonicalRequest); - AZLogDebug(@"payload %@",[[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]); + AWSLogDebug(@"AWS4 Canonical Request: [%@]", canonicalRequest); + AWSLogDebug(@"payload %@",[[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]); NSString *scope = [NSString stringWithFormat:@"%@/%@/%@/%@", dateStamp, @@ -321,7 +321,7 @@ - (NSString *)signRequestV4:(NSURLRequest *)request{ scope, [AWSSignatureSignerUtility hexEncode:[AWSSignatureSignerUtility hashString:canonicalRequest]]]; - AZLogDebug(@"AWS4 String to Sign: [%@]", stringToSign); + AWSLogDebug(@"AWS4 String to Sign: [%@]", stringToSign); NSData *kSigning = [self getV4DerivedKey:self.credentialsProvider.secretKey date:dateStamp @@ -455,9 +455,9 @@ + (NSString *)canonicalizedQueryString:(NSDictionary *)parameters { NSString *key = [sortedKeys objectAtIndex:index]; NSString *value = (NSString *)[parameters valueForKey:key]; - [mutableHTTPBodyString appendString:[key az_stringWithURLEncoding]]; + [mutableHTTPBodyString appendString:[key aws_stringWithURLEncoding]]; [mutableHTTPBodyString appendString:@"="]; - [mutableHTTPBodyString appendString:[value az_stringWithURLEncoding]]; + [mutableHTTPBodyString appendString:[value aws_stringWithURLEncoding]]; if (index < [sortedKeys count] - 1) { [mutableHTTPBodyString appendString:@"&"]; @@ -527,7 +527,7 @@ - (BFTask *)interceptRequest:(NSMutableURLRequest *)request { [parameters setObject:@"HmacSHA256" forKey:@"SignatureMethod"]; [parameters setObject:@"2" forKey:@"SignatureVersion"]; [parameters setObject:self.credentialsProvider.accessKey forKey:@"AWSAccessKeyId"]; - [parameters setObject:[[NSDate date] az_stringValue:AZDateISO8601DateFormat3] + [parameters setObject:[[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3] forKey:@"Timestamp"]; //Added SecurityToken field in QueryString for SigV2 if STS has been used. if ([self.credentialsProvider respondsToSelector:@selector(sessionKey)]) { @@ -540,7 +540,7 @@ - (BFTask *)interceptRequest:(NSMutableURLRequest *)request { NSString *signature = [AWSSignatureSignerUtility HMACSign:dataToSign withKey:self.credentialsProvider.secretKey usingAlgorithm:kCCHmacAlgSHA256]; - [canonicalizedQueryString appendFormat:@"&Signature=%@", [signature az_stringWithURLEncoding]]; + [canonicalizedQueryString appendFormat:@"&Signature=%@", [signature aws_stringWithURLEncoding]]; request.HTTPBody = [canonicalizedQueryString dataUsingEncoding:NSUTF8StringEncoding]; return nil; @@ -639,7 +639,7 @@ - (BOOL)nextChunk { NSData *data = [NSData dataWithBytesNoCopy:chunkBuffer length:read]; [self.chunkData appendData:[self getSignedChunk:data]]; - AZLogDebug(@"stream read: %ld, chunk size: %lu", (long)read, (unsigned long)[self.chunkData length]); + AWSLogDebug(@"stream read: %ld, chunk size: %lu", (long)read, (unsigned long)[self.chunkData length]); return YES; } @@ -650,18 +650,18 @@ - (NSData *)getSignedChunk:(NSData *)data { NSString *stringToSign = [NSString stringWithFormat: @"%@\n%@\n%@\n%@\n%@\n%@", @"AWS4-HMAC-SHA256-PAYLOAD", - [self.date az_stringValue:AZDateISO8601DateFormat2], + [self.date aws_stringValue:AWSDateISO8601DateFormat2], self.scope, self.priorSha256, emptyStringSha256, chunkSha256]; - AZLogDebug(@"AWS4 String to Sign: [%@]", stringToSign); + AWSLogDebug(@"AWS4 String to Sign: [%@]", stringToSign); NSData *signature = [AWSSignatureSignerUtility sha256HMacWithData:[stringToSign dataUsingEncoding:NSUTF8StringEncoding] withKey:self.kSigning]; self.priorSha256 = [self dataToHexString:signature]; NSString *chunkedHeader = [NSString stringWithFormat:@"%06lx;chunk-signature=%@\r\n", (unsigned long)[data length], self.priorSha256]; - AZLogDebug(@"AWS4 Chunked Header: [%@]", chunkedHeader); + AWSLogDebug(@"AWS4 Chunked Header: [%@]", chunkedHeader); NSMutableData *signedChunk = [NSMutableData data]; [signedChunk appendData:[chunkedHeader dataUsingEncoding:NSUTF8StringEncoding]]; diff --git a/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.h b/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.h index 2628d5ce9a7..e22066f2050 100644 --- a/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.h +++ b/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.h @@ -1,5 +1,16 @@ -/** - * Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. */ #import @@ -9,12 +20,11 @@ @class BFTask; /** - * + * */ @interface AWSCognitoIdentityService : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultCognitoIdentityService; diff --git a/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.m b/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.m index dc9df43bea7..38ee91593d6 100644 --- a/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.m +++ b/AWSCore/CognitoIdentityService/AWSCognitoIdentityService.m @@ -4,8 +4,8 @@ #import "AWSCognitoIdentityService.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSNetworking.h" #import "AWSSignature.h" #import "AWSService.h" @@ -14,12 +14,15 @@ #import "AWSURLResponseSerialization.h" #import "AWSURLRequestRetryHandler.h" +NSString *const AWSCIBDefinitionFileName = @"cib-2014-06-30"; @interface AWSCognitoIdentityServiceResponseSerializer : AWSJSONResponseSerializer @property (nonatomic, assign) Class outputClass; -+ (instancetype)serializerWithOutputClass:(Class)outputClass; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName; @end @@ -43,8 +46,10 @@ + (void)initialize { }; } -+ (instancetype)serializerWithOutputClass:(Class)outputClass { - AWSCognitoIdentityServiceResponseSerializer *serializer = [AWSCognitoIdentityServiceResponseSerializer new]; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName { + AWSCognitoIdentityServiceResponseSerializer *serializer = [AWSCognitoIdentityServiceResponseSerializer serializerWithResource:resource actionName:actionName]; serializer.outputClass = outputClass; return serializer; @@ -65,14 +70,14 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSCognitoIdentityServiceErrorDomain code:[[errorCodeDictionary objectForKey:[[[responseObject objectForKey:@"__type"] componentsSeparatedByString:@"#"] lastObject]] integerValue] - userInfo:@{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null]}]; + userInfo:responseObject]; } return responseObject; } else if ([[[responseObject objectForKey:@"__type"] componentsSeparatedByString:@"#"] lastObject]) { if (error) { *error = [NSError errorWithDomain:AWSCognitoIdentityServiceErrorDomain code:AWSCognitoIdentityServiceErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null]}]; + userInfo:responseObject]; } return responseObject; } @@ -95,22 +100,22 @@ @interface AWSCognitoIdentityServiceRequestRetryHandler : AWSURLRequestRetryHand @implementation AWSCognitoIdentityServiceRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount - response:(NSHTTPURLResponse *)response - data:(NSData *)data - error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount - response:response - data:data - error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount + response:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *)error { + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + response:response + data:data + error:error]; + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSCognitoIdentityServiceErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSCognitoIdentityServiceErrorIncompleteSignature: case AWSCognitoIdentityServiceErrorInvalidClientTokenId: case AWSCognitoIdentityServiceErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -125,15 +130,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSCognitoIdentityService() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -157,28 +161,26 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceCognitoIdentityBroker - useUnsafeURL:YES]; - + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceCognitoIdentityBroker]; + AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; - _configuration.requestSerializer = [AWSJSONRequestSerializer new]; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSCognitoIdentityServiceRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName, + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName, @"Content-Type" : @"application/x-amz-json-1.1"}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -187,9 +189,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -213,7 +215,8 @@ - (BFTask *)invokeRequest:(AWSRequest *)request networkingRequest.headers = headers; networkingRequest.URLString = blockSafeURLString; networkingRequest.HTTPMethod = HTTPMethod; - networkingRequest.responseSerializer = [AWSCognitoIdentityServiceResponseSerializer serializerWithOutputClass:outputClass]; + networkingRequest.responseSerializer = [AWSCognitoIdentityServiceResponseSerializer serializerWithOutputClass:outputClass resource:AWSCIBDefinitionFileName actionName:operationName]; + networkingRequest.requestSerializer = [AWSJSONRequestSerializer serializerWithResource:AWSCIBDefinitionFileName actionName:operationName]; return [self.networking sendRequest:networkingRequest]; } @@ -222,7 +225,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)createIdentityPool:(AWSCognitoIdentityServiceCreateIdentityPoolInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"CreateIdentityPool" @@ -231,7 +234,7 @@ - (BFTask *)createIdentityPool:(AWSCognitoIdentityServiceCreateIdentityPoolInput - (BFTask *)deleteIdentityPool:(AWSCognitoIdentityServiceDeleteIdentityPoolInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"DeleteIdentityPool" @@ -240,7 +243,7 @@ - (BFTask *)deleteIdentityPool:(AWSCognitoIdentityServiceDeleteIdentityPoolInput - (BFTask *)describeIdentityPool:(AWSCognitoIdentityServiceDescribeIdentityPoolInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"DescribeIdentityPool" @@ -249,7 +252,7 @@ - (BFTask *)describeIdentityPool:(AWSCognitoIdentityServiceDescribeIdentityPoolI - (BFTask *)getId:(AWSCognitoIdentityServiceGetIdInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"GetId" @@ -258,7 +261,7 @@ - (BFTask *)getId:(AWSCognitoIdentityServiceGetIdInput *)request { - (BFTask *)getOpenIdToken:(AWSCognitoIdentityServiceGetOpenIdTokenInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"GetOpenIdToken" @@ -267,7 +270,7 @@ - (BFTask *)getOpenIdToken:(AWSCognitoIdentityServiceGetOpenIdTokenInput *)reque - (BFTask *)listIdentities:(AWSCognitoIdentityServiceListIdentitiesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"ListIdentities" @@ -276,7 +279,7 @@ - (BFTask *)listIdentities:(AWSCognitoIdentityServiceListIdentitiesInput *)reque - (BFTask *)listIdentityPools:(AWSCognitoIdentityServiceListIdentityPoolsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"ListIdentityPools" @@ -285,7 +288,7 @@ - (BFTask *)listIdentityPools:(AWSCognitoIdentityServiceListIdentityPoolsInput * - (BFTask *)unlinkIdentity:(AWSCognitoIdentityServiceUnlinkIdentityInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"UnlinkIdentity" @@ -294,7 +297,7 @@ - (BFTask *)unlinkIdentity:(AWSCognitoIdentityServiceUnlinkIdentityInput *)reque - (BFTask *)updateIdentityPool:(AWSCognitoIdentityServiceIdentityPool *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"AWSCognitoIdentityService" operationName:@"UpdateIdentityPool" diff --git a/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.h b/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.h index 5b94e4b4228..3eed290f3b3 100644 --- a/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.h +++ b/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.h @@ -1,10 +1,21 @@ -/** - * Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. */ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSCognitoIdentityServiceErrorDomain; @@ -66,7 +77,7 @@ typedef NS_ENUM(NSInteger, AWSCognitoIdentityServiceErrorType) { @end -@interface AWSCognitoIdentityServiceGetIdResponse : AZModel +@interface AWSCognitoIdentityServiceGetIdResponse : AWSModel @property (nonatomic, strong) NSString *identityId; @@ -79,14 +90,14 @@ typedef NS_ENUM(NSInteger, AWSCognitoIdentityServiceErrorType) { @end -@interface AWSCognitoIdentityServiceGetOpenIdTokenResponse : AZModel +@interface AWSCognitoIdentityServiceGetOpenIdTokenResponse : AWSModel @property (nonatomic, strong) NSString *identityId; @property (nonatomic, strong) NSString *token; @end -@interface AWSCognitoIdentityServiceIdentityDescription : AZModel +@interface AWSCognitoIdentityServiceIdentityDescription : AWSModel @property (nonatomic, strong) NSString *identityId; @property (nonatomic, strong) NSArray *logins; @@ -102,7 +113,7 @@ typedef NS_ENUM(NSInteger, AWSCognitoIdentityServiceErrorType) { @end -@interface AWSCognitoIdentityServiceIdentityPoolShortDescription : AZModel +@interface AWSCognitoIdentityServiceIdentityPoolShortDescription : AWSModel @property (nonatomic, strong) NSString *identityPoolId; @property (nonatomic, strong) NSString *identityPoolName; @@ -117,7 +128,7 @@ typedef NS_ENUM(NSInteger, AWSCognitoIdentityServiceErrorType) { @end -@interface AWSCognitoIdentityServiceListIdentitiesResponse : AZModel +@interface AWSCognitoIdentityServiceListIdentitiesResponse : AWSModel @property (nonatomic, strong) NSArray *identities; @property (nonatomic, strong) NSString *identityPoolId; @@ -132,7 +143,7 @@ typedef NS_ENUM(NSInteger, AWSCognitoIdentityServiceErrorType) { @end -@interface AWSCognitoIdentityServiceListIdentityPoolsResponse : AZModel +@interface AWSCognitoIdentityServiceListIdentityPoolsResponse : AWSModel @property (nonatomic, strong) NSArray *identityPools; @property (nonatomic, strong) NSString *nextToken; diff --git a/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.m b/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.m index 9ac5f2542d8..9fbc827a96a 100644 --- a/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.m +++ b/AWSCore/CognitoIdentityService/AWSCognitoIdentityServiceModel.m @@ -1,9 +1,20 @@ -/** - * Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. */ #import "AWSCognitoIdentityServiceModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSCognitoIdentityServiceErrorDomain = @"com.amazonaws.AWSCognitoIdentityServiceErrorDomain"; diff --git a/AWSCore/CognitoIdentityService/CognitoIdentityService.h b/AWSCore/CognitoIdentityService/CognitoIdentityService.h index 6a1943198d8..898e059f7a0 100644 --- a/AWSCore/CognitoIdentityService/CognitoIdentityService.h +++ b/AWSCore/CognitoIdentityService/CognitoIdentityService.h @@ -1,6 +1,18 @@ -/** - * Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. */ #import +#import "AWSCore.h" #import "AWSCognitoIdentityService.h" diff --git a/AWSCore/CognitoIdentityService/Resources/cib-2014-06-30.json b/AWSCore/CognitoIdentityService/Resources/cib-2014-06-30.json index 52c941b5ae4..1c679814b5f 100644 --- a/AWSCore/CognitoIdentityService/Resources/cib-2014-06-30.json +++ b/AWSCore/CognitoIdentityService/Resources/cib-2014-06-30.json @@ -167,69 +167,6 @@ } ] }, - "GetIdentityPoolAnalytics":{ - "name":"GetIdentityPoolAnalytics", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetIdentityPoolAnalyticsRequest"}, - "output":{"shape":"GetIdentityPoolAnalyticsResponse"}, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true - } - ] - }, - "GetIdentityPoolDailyAnalytics":{ - "name":"GetIdentityPoolDailyAnalytics", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetIdentityPoolDailyAnalyticsRequest"}, - "output":{"shape":"GetIdentityPoolDailyAnalyticsResponse"}, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true - } - ] - }, - "GetIdentityProviderDailyAnalytics":{ - "name":"GetIdentityProviderDailyAnalytics", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetIdentityProviderDailyAnalyticsRequest"}, - "output":{"shape":"GetIdentityProviderDailyAnalyticsResponse"}, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true - } - ] - }, "GetOpenIdToken":{ "name":"GetOpenIdToken", "http":{ @@ -439,12 +376,6 @@ "SupportedLoginProviders":{"shape":"IdentityProviders"} } }, - "DayString":{ - "type":"string", - "min":10, - "max":10, - "pattern":"^(201)([4-9]|(20)[2-9][\\d])[-](0[1-9]|1[012])[-](0[1-9]|[12][\\d]|3[01])$" - }, "DeleteIdentityPoolInput":{ "type":"structure", "required":["IdentityPoolId"], @@ -477,60 +408,6 @@ "IdentityId":{"shape":"IdentityId"} } }, - "GetIdentityPoolAnalyticsRequest":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{"shape":"IdentityPoolId"} - } - }, - "GetIdentityPoolAnalyticsResponse":{ - "type":"structure", - "members":{ - "IdentityPoolId":{"shape":"IdentityPoolId"}, - "TotalIdentityCount":{"shape":"Long"}, - "IdentityAnalyticsList":{"shape":"IdentityAnalyticsList"} - } - }, - "GetIdentityPoolDailyAnalyticsRequest":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{"shape":"IdentityPoolId"}, - "StartDay":{"shape":"DayString"}, - "Token":{"shape":"PaginationKey"} - } - }, - "GetIdentityPoolDailyAnalyticsResponse":{ - "type":"structure", - "members":{ - "IdentityPoolId":{"shape":"IdentityPoolId"}, - "IdentityPoolDailyIdentities":{"shape":"IdentityDailyAnalyticsList"}, - "NextToken":{"shape":"PaginationKey"} - } - }, - "GetIdentityProviderDailyAnalyticsRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityProviderId" - ], - "members":{ - "IdentityPoolId":{"shape":"IdentityPoolId"}, - "IdentityProviderId":{"shape":"IdentityProviderId"}, - "StartDay":{"shape":"DayString"}, - "Token":{"shape":"PaginationKey"} - } - }, - "GetIdentityProviderDailyAnalyticsResponse":{ - "type":"structure", - "members":{ - "IdentityPoolId":{"shape":"IdentityPoolId"}, - "IdentityProviderId":{"shape":"IdentityProviderId"}, - "IdentityProviderDailyIdentities":{"shape":"IdentityDailyAnalyticsList"}, - "NextToken":{"shape":"PaginationKey"} - } - }, "GetOpenIdTokenInput":{ "type":"structure", "required":["IdentityId"], @@ -550,29 +427,6 @@ "type":"list", "member":{"shape":"IdentityDescription"} }, - "IdentityAnalytics":{ - "type":"structure", - "members":{ - "IdentityProviderId":{"shape":"IdentityProviderId"}, - "IdentityCount":{"shape":"Long"} - } - }, - "IdentityAnalyticsList":{ - "type":"list", - "member":{"shape":"IdentityAnalytics"} - }, - "IdentityDailyAnalytics":{ - "type":"structure", - "members":{ - "Date":{"shape":"DayString"}, - "TotalIdentities":{"shape":"Long"}, - "NewIdentities":{"shape":"Long"} - } - }, - "IdentityDailyAnalyticsList":{ - "type":"list", - "member":{"shape":"IdentityDailyAnalytics"} - }, "IdentityDescription":{ "type":"structure", "members":{ @@ -674,11 +528,14 @@ }, "ListIdentitiesInput":{ "type":"structure", - "required":["IdentityPoolId"], + "required":[ + "IdentityPoolId", + "MaxResults" + ], "members":{ "IdentityPoolId":{"shape":"IdentityPoolId"}, - "Limit":{"shape":"QueryLimit"}, - "Token":{"shape":"PaginationKey"} + "MaxResults":{"shape":"QueryLimit"}, + "NextToken":{"shape":"PaginationKey"} } }, "ListIdentitiesResponse":{ @@ -691,9 +548,10 @@ }, "ListIdentityPoolsInput":{ "type":"structure", + "required":["MaxResults"], "members":{ - "Limit":{"shape":"QueryLimit"}, - "Token":{"shape":"PaginationKey"} + "MaxResults":{"shape":"QueryLimit"}, + "NextToken":{"shape":"PaginationKey"} } }, "ListIdentityPoolsResponse":{ @@ -713,7 +571,6 @@ "value":{"shape":"IdentityProviderToken"}, "max":3 }, - "Long":{"type":"long"}, "NotAuthorizedException":{ "type":"structure", "members":{ diff --git a/AWSCore/EventRecorderService/AWSEventRecorderService.h b/AWSCore/EventRecorderService/AWSEventRecorderService.h index aae906ac615..9eefb4d7c27 100644 --- a/AWSCore/EventRecorderService/AWSEventRecorderService.h +++ b/AWSCore/EventRecorderService/AWSEventRecorderService.h @@ -25,7 +25,6 @@ @interface AWSEventRecorderService : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultEventRecorderService; diff --git a/AWSCore/EventRecorderService/AWSEventRecorderService.m b/AWSCore/EventRecorderService/AWSEventRecorderService.m index 3cd01389cda..404839783ce 100644 --- a/AWSCore/EventRecorderService/AWSEventRecorderService.m +++ b/AWSCore/EventRecorderService/AWSEventRecorderService.m @@ -15,8 +15,8 @@ #import "AWSEventRecorderService.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSNetworking.h" #import "AWSSignature.h" #import "AWSService.h" @@ -25,14 +25,15 @@ #import "AWSURLResponseSerialization.h" #import "AWSURLRequestRetryHandler.h" - - +NSString *const AWSERSDefinitionFileName = @"mobileanalytics-2014-06-30"; @interface AWSEventRecorderServiceResponseSerializer : AWSJSONResponseSerializer @property (nonatomic, assign) Class outputClass; -+ (instancetype)serializerWithOutputClass:(Class)outputClass; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName; @end @@ -43,17 +44,19 @@ @implementation AWSEventRecorderServiceResponseSerializer static NSDictionary *errorCodeDictionary = nil; + (void)initialize { errorCodeDictionary = @{ - @"com.amazonaws.glers.v20140630#IncompleteSignature" : @(AWSEventRecorderServiceErrorIncompleteSignature), - @"com.amazonaws.glers.v20140630#InvalidClientTokenId" : @(AWSEventRecorderServiceErrorInvalidClientTokenId), - @"com.amazonaws.glers.v20140630#MissingAuthenticationToken" : @(AWSEventRecorderServiceErrorMissingAuthenticationToken), - @"com.amazonaws.glers.v20140630#BadRequestException" : @(AWSEventRecorderServiceErrorBadRequest), - }; + @"IncompleteSignature" : @(AWSEventRecorderServiceErrorIncompleteSignature), + @"InvalidClientTokenId" : @(AWSEventRecorderServiceErrorInvalidClientTokenId), + @"MissingAuthenticationToken" : @(AWSEventRecorderServiceErrorMissingAuthenticationToken), + @"BadRequestException" : @(AWSEventRecorderServiceErrorBadRequest), + }; } -+ (instancetype)serializerWithOutputClass:(Class)outputClass { - AWSEventRecorderServiceResponseSerializer *serializer = [AWSEventRecorderServiceResponseSerializer new]; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName { + AWSEventRecorderServiceResponseSerializer *serializer = [AWSEventRecorderServiceResponseSerializer serializerWithResource:resource actionName:actionName]; serializer.outputClass = outputClass; - + return serializer; } @@ -75,34 +78,36 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response *error = [NSError errorWithDomain:(*error).domain code:(*error).code userInfo:richUserInfo]; - + } if (!*error && [responseObject isKindOfClass:[NSDictionary class]]) { NSString *errorTypeStr = [[response allHeaderFields] objectForKey:@"x-amzn-ErrorType"]; NSString *errorTypeHeader = [[errorTypeStr componentsSeparatedByString:@":"] firstObject]; - + if ([errorTypeStr length] > 0 && errorTypeHeader) { - if (errorCodeDictionary[errorTypeHeader]) { + if (errorCodeDictionary[[[errorTypeHeader componentsSeparatedByString:@"#"] lastObject]]) { if (error) { - NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null], + NSMutableDictionary *userInfo = [@{ NSLocalizedFailureReasonErrorKey : errorTypeStr, @"responseStatusCode" : @([response statusCode]), @"responseHeaders" : [response allHeaderFields], @"responseDataSize" : @(data?[data length]:0), - }; + } mutableCopy]; + [userInfo addEntriesFromDictionary:responseObject]; *error = [NSError errorWithDomain:AWSEventRecorderServiceErrorDomain - code:[[errorCodeDictionary objectForKey:errorTypeHeader] integerValue] + code:[[errorCodeDictionary objectForKey:[[errorTypeHeader componentsSeparatedByString:@"#"] lastObject]] integerValue] userInfo:userInfo]; } return responseObject; } else if (errorTypeHeader) { if (error) { - NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null], - NSLocalizedFailureReasonErrorKey : errorTypeStr, - @"responseStatusCode" : @([response statusCode]), - @"responseHeaders" : [response allHeaderFields], - @"responseDataSize" : @(data?[data length]:0), - }; + NSMutableDictionary *userInfo = [@{ + NSLocalizedFailureReasonErrorKey : errorTypeStr, + @"responseStatusCode" : @([response statusCode]), + @"responseHeaders" : [response allHeaderFields], + @"responseDataSize" : @(data?[data length]:0), + } mutableCopy]; + [userInfo addEntriesFromDictionary:responseObject]; *error = [NSError errorWithDomain:AWSEventRecorderServiceErrorDomain code:AWSEventRecorderServiceErrorUnknown userInfo:userInfo]; @@ -110,21 +115,21 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response return responseObject; } } - + if (self.outputClass) { responseObject = [MTLJSONAdapter modelOfClass:self.outputClass fromJSONDictionary:responseObject error:error]; } } - + if (responseObject == nil) { return @{@"responseStatusCode" : @([response statusCode]), @"responseHeaders" : [response allHeaderFields], @"responseDataSize" : @(data?[data length]:0), }; - } - + } + return responseObject; } @@ -137,29 +142,29 @@ @interface AWSEventRecorderServiceRequestRetryHandler : AWSURLRequestRetryHandle @implementation AWSEventRecorderServiceRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSEventRecorderServiceErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSEventRecorderServiceErrorIncompleteSignature: case AWSEventRecorderServiceErrorInvalidClientTokenId: case AWSEventRecorderServiceErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; - + default: break; } } - + return retryType; } @@ -169,15 +174,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSEventRecorderService() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -187,43 +191,42 @@ + (instancetype)defaultEventRecorderService { if (![AWSServiceManager defaultServiceManager].defaultServiceConfiguration) { return nil; } - + static AWSEventRecorderService *_defaultAWSGameLabEventRecorderService = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _defaultAWSGameLabEventRecorderService = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager].defaultServiceConfiguration]; }); - + return _defaultAWSGameLabEventRecorderService; } - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = configuration; - - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceGameLabEventRecorder]; - + + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceGameLabEventRecorder]; + AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; - - _configuration.baseURL = _endpoint.URL; - _configuration.requestSerializer = [AWSJSONRequestSerializer new]; + endpoint:_configuration.endpoint]; + + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSEventRecorderServiceRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName, + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName, @"Content-Type" : @"application/x-amz-json-1.1", @"Accept-Encoding" : @"", @"Content-Encoding": @"gzip" }; - - _networking = [AZNetworking networking:_configuration]; + + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -231,14 +234,14 @@ - (BFTask *)invokeRequest:(AWSRequest *)request if (!request) { request = [AWSRequest new]; } - - AZNetworkingRequest *networkingRequest = request.internalRequest; + + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } - + NSMutableDictionary *parameters = [NSMutableDictionary new]; __block NSString *blockSafeURLString = [URLString copy]; [networkingRequest.parameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { @@ -247,32 +250,33 @@ - (BFTask *)invokeRequest:(AWSRequest *)request [parameters setObject:obj forKey:key]; } else { blockSafeURLString = [blockSafeURLString stringByReplacingOccurrencesOfString:stringToFind - withString:[obj az_stringWithURLEncoding]]; + withString:[obj aws_stringWithURLEncoding]]; } }]; networkingRequest.parameters = parameters; - + NSMutableDictionary *headers = [NSMutableDictionary new]; headers[@"X-Amz-Target"] = [NSString stringWithFormat:@"%@.%@", targetPrefix, operationName]; - + networkingRequest.headers = headers; networkingRequest.URLString = blockSafeURLString; networkingRequest.HTTPMethod = HTTPMethod; - networkingRequest.responseSerializer = [AWSEventRecorderServiceResponseSerializer serializerWithOutputClass:outputClass]; - + networkingRequest.responseSerializer = [AWSEventRecorderServiceResponseSerializer serializerWithOutputClass:outputClass resource:AWSERSDefinitionFileName actionName:operationName]; + networkingRequest.requestSerializer = [AWSJSONRequestSerializer serializerWithResource:AWSERSDefinitionFileName actionName:operationName]; + return [self.networking sendRequest:networkingRequest]; } - + #pragma mark - Service method - + - (BFTask *)putEvents:(AWSEventRecorderServicePutEventsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"/2014-06-05/events" targetPrefix:@"AWSEventRecorderService" operationName:@"PutEvents" outputClass:nil]; -} - +} + @end diff --git a/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.h b/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.h index c2ee415ba80..352743c219a 100644 --- a/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.h +++ b/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSEventRecorderServiceErrorDomain; @@ -35,7 +35,7 @@ typedef NS_ENUM(NSInteger, AWSEventRecorderServiceErrorType) { * Represents a single event that happened on a client device. Attributes and metrics are optional. * Required parameters: [eventType, timestamp, session] */ -@interface AWSEventRecorderServiceEvent : AZModel +@interface AWSEventRecorderServiceEvent : AWSModel @property (nonatomic, strong) NSDictionary *attributes; @property (nonatomic, strong) NSString *eventType; @@ -57,7 +57,7 @@ typedef NS_ENUM(NSInteger, AWSEventRecorderServiceErrorType) { @end -@interface AWSEventRecorderServiceSession : AZModel +@interface AWSEventRecorderServiceSession : AWSModel @property (nonatomic, strong) NSNumber *duration; @property (nonatomic, strong) NSString *id; diff --git a/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.m b/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.m index 52b0086e302..7e762807fbe 100644 --- a/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.m +++ b/AWSCore/EventRecorderService/AWSEventRecorderServiceModel.m @@ -14,7 +14,7 @@ */ #import "AWSEventRecorderServiceModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSEventRecorderServiceErrorDomain = @"com.amazonaws.AWSEventRecorderServiceErrorDomain"; diff --git a/AWSCore/MobileAnalytics/AWSMobileAnalytics.m b/AWSCore/MobileAnalytics/AWSMobileAnalytics.m index 18ae9cdf284..d5779779203 100644 --- a/AWSCore/MobileAnalytics/AWSMobileAnalytics.m +++ b/AWSCore/MobileAnalytics/AWSMobileAnalytics.m @@ -24,215 +24,117 @@ #import "AWSMobileAnalyticsContext.h" #import "AWSMobileAnalyticsRequestTimingInterceptor.h" #import "AWSMobileAnalyticsDefaultDeliveryClient.h" -#import "AWSMobileAnalyticsClientConfiguration.h" +#import "AWSMobileAnalyticsConfiguration.h" #import "AWSMobileAnalyticsIOSClientContext.h" -#import "AZLogging.h" - -static NSMutableDictionary* _instances = nil; +#import "AWSLogging.h" +#import "AWSEventRecorderService.h" +#import "AWSSynchronizedMutableDictionary.h" @interface AWSMobileAnalytics() -@property (nonatomic, readonly) id insightsContext; -@property (nonatomic, readonly) id sessionClient; -@property (nonatomic, readonly) id deliveryClient; +@property (nonatomic, readonly) id mobileAnalyticsContext; +@property (nonatomic, readonly) id sessionClient; +@property (nonatomic, readonly) id deliveryClient; +@property (nonatomic, strong) AWSMobileAnalyticsConfiguration *configuration; @end -// TODO ---------------- -// @TODO: make this class NOT return the static singleton (instance) -// TODO ^^^^^^^^^^^^^^^^ @implementation AWSMobileAnalytics -+(void)initialize -{ - _instances = [NSMutableDictionary dictionary]; -} +static AWSSynchronizedMutableDictionary *_mobileAnalyticsForAppNamespace = nil; -+(void)removeCachedInstances -{ - @synchronized([AWSMobileAnalytics class]) - { - [_instances removeAllObjects]; - } ++ (instancetype)mobileAnalyticsForAppId:(NSString *)appId { + return [self mobileAnalyticsForAppId:appId + configuration:[AWSMobileAnalyticsConfiguration new] + completionBlock:nil]; } -+(id) defaultOptions -{ - return [AWSMobileAnalytics optionsWithAllowEventCollection:YES - withAllowWANDelivery:NO]; -} -+(id) optionsWithAllowEventCollection:(BOOL)allowEventCollection - withAllowWANDelivery:(BOOL)allowWANDelivery -{ - return [AWSMobileAnalyticsDefaultOptions optionsWithAllowEventCollection:allowEventCollection - withWANDelivery:allowWANDelivery]; -} ++ (instancetype)mobileAnalyticsForAppId:(NSString *)appId + configuration:(AWSMobileAnalyticsConfiguration *)configuration + completionBlock:(AWSInitializationCompletionBlock)completionBlock { + if (![AWSServiceManager defaultServiceManager].defaultServiceConfiguration || !appId) { + return nil; + } + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _mobileAnalyticsForAppNamespace = [AWSSynchronizedMutableDictionary new]; + }); + @synchronized(_mobileAnalyticsForAppNamespace) { + if (![_mobileAnalyticsForAppNamespace objectForKey:appId]) { + AWSMobileAnalytics *mobileAnalytics = [[AWSMobileAnalytics alloc] initWithAppId:appId + configuration:configuration + settings:nil + completionBlock:completionBlock]; + if (mobileAnalytics) { + [_mobileAnalyticsForAppNamespace setObject:mobileAnalytics + forKey:appId]; + } + } -+(AWSMobileAnalytics *) getInstanceWithIdentifier:(NSString *)identifier -{ - AWSMobileAnalytics *instance = nil; - @synchronized([AWSMobileAnalytics class]) - { - instance = [_instances objectForKey:identifier]; + return [_mobileAnalyticsForAppNamespace objectForKey:appId]; } - - return instance; } -+(AWSMobileAnalytics *) insightsWithEventRecorderService:(AWSEventRecorderService *)eventRecorderService - withIdentifier:(NSString *)identifier - withOptions:(id) theOptions - withSettings:(NSDictionary *) theSettings - withCompletionBlock:(AIInitializationCompletionBlock)completionBlock +- (AWSMobileAnalytics *)initWithAppId:(NSString *)appId + configuration:(AWSMobileAnalyticsConfiguration *)configuration + settings:(NSDictionary *)settings + completionBlock:(AWSInitializationCompletionBlock)completionBlock { + if (self = [super init]) { + _configuration = configuration; + if (!_configuration) { + _configuration = [AWSMobileAnalyticsConfiguration new]; + } + + // create insights options from theClientConfig + AWSMobileAnalyticsDefaultOptions *options = [AWSMobileAnalyticsDefaultOptions optionsWithAllowEventCollection:configuration.enableEvents + withWANDelivery:configuration.transmitOnWAN]; -{ - if (eventRecorderService == nil || identifier.length == 0 ) { - return nil; - } - - AWSMobileAnalytics *instance = [self getInstanceWithIdentifier:identifier]; - if(instance) - { - // return the cached instance - return instance; - } - else - { // Build a DefaultContext and call the internal constructor - AWSMobileAnalyticsDefaultContext* insightsContext = [AWSMobileAnalyticsDefaultContext contextWithIdentifier:identifier - withClientConfiguration:[AWSMobileAnalyticsClientConfiguration defaultClientConfiguration] - withSdkInfo:[AWSMobileAnalyticsSDKInfo sdkInfoFromBrazil] - withConfigurationSettings:theSettings]; - insightsContext.httpClient.eventRecorderService = eventRecorderService; - instance = [AWSMobileAnalytics insightsWithContext:insightsContext - withOptions:theOptions - withCompletionBlock:completionBlock]; - } - - return instance; -} + _mobileAnalyticsContext = [AWSMobileAnalyticsDefaultContext contextWithIdentifier:appId + withClientConfiguration:configuration + withSdkInfo:[AWSMobileAnalyticsSDKInfo sdkInfoFromBrazil] + withConfigurationSettings:settings]; + _mobileAnalyticsContext.httpClient.eventRecorderService = [[AWSEventRecorderService alloc] initWithConfiguration:configuration.serviceConfiguration];; -+(AWSMobileAnalytics*) insightsWithContext:(id) theContext - withOptions:(id) theOptions - withCompletionBlock:(AIInitializationCompletionBlock)completionBlock -{ - AWSMobileAnalytics* instance = nil; - @synchronized([AWSMobileAnalytics class]) - { - instance = [self getInstanceWithIdentifier:theContext.identifier]; - if(instance == nil) - { - instance = [[AWSMobileAnalytics alloc] initInstanceWithContext:theContext - withOptions:theOptions - withCompletionBlock:completionBlock]; - [_instances setObject:instance forKey:theContext.identifier]; - } - } - - return instance; -} + _deliveryClient = [AWSMobileAnalyticsDefaultDeliveryClient deliveryClientWithContext:_mobileAnalyticsContext + withWanDelivery:options.allowWANDelivery]; + _eventClient = [AWSMobileAnalyticsDefaultEventClient eventClientWithContext:_mobileAnalyticsContext + withDeliveryClient:_deliveryClient + allowsEventCollection:options.allowEventCollection]; + + id reqTimingInterceptor = [[AWSMobileAnalyticsRequestTimingInterceptor alloc] initWithConnectivity:[_mobileAnalyticsContext.system connectivity] + withEventClient:(id)_eventClient]; + [_mobileAnalyticsContext.httpClient addInterceptor:reqTimingInterceptor]; -/** - * CONSTRUCTOR ACTUAL - */ --(AWSMobileAnalytics*) initInstanceWithContext:(id) theContext - withOptions:(id) theOptions - withCompletionBlock:(AIInitializationCompletionBlock)completionBlock -{ - if (self = [super init]) - { - _insightsContext = theContext; - - if(theOptions == nil) - { - theOptions = [AWSMobileAnalytics defaultOptions]; - } - - _deliveryClient = [AWSMobileAnalyticsDefaultDeliveryClient deliveryClientWithContext:theContext withWanDelivery:[theOptions allowWANDelivery]]; - - id internalEventClient = [AWSMobileAnalyticsDefaultEventClient eventClientWithContext:self.insightsContext - withDeliveryClient:_deliveryClient - allowsEventCollection:[theOptions allowEventCollection]]; - _eventClient = internalEventClient; - - id reqTimingInterceptor = [[AWSMobileAnalyticsRequestTimingInterceptor alloc] initWithConnectivity:[[theContext system] connectivity] withEventClient:internalEventClient]; - [[_insightsContext httpClient] addInterceptor:reqTimingInterceptor]; - - - // Session Client - _sessionClient = [AWSMobileAnalyticsDefaultSessionClient sessionClientWithEventClient:internalEventClient - withDeliveryClient:_deliveryClient - withContext:self.insightsContext]; - - + _sessionClient = [AWSMobileAnalyticsDefaultSessionClient sessionClientWithEventClient:(id)_eventClient + withDeliveryClient:_deliveryClient + withContext:_mobileAnalyticsContext]; - // let the user do any final initialization - if(completionBlock != nil) - { + if(completionBlock) { completionBlock(self); } - - [self.sessionClient startSession]; - [self.insightsContext synchronize]; - - AZLogInfo(@"Mobile Analytics SDK(%@) Initialization successfully completed.", [theContext sdkInfo].sdkVersion); - } - - return self; -} + [_sessionClient startSession]; + [_mobileAnalyticsContext synchronize]; -+(instancetype) defaultMobileAnalyticsWithAppNamespace:(NSString *)theIdentifier { - if (![AWSServiceManager defaultServiceManager].defaultServiceConfiguration) { - return nil; + AWSLogInfo(@"Mobile Analytics SDK(%@) Initialization successfully completed.", [_mobileAnalyticsContext sdkInfo].sdkVersion); } - - static AWSMobileAnalytics *_defaultAIAmazonInsights = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - _defaultAIAmazonInsights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:theIdentifier completionBlock:nil]; - - }); - - return _defaultAIAmazonInsights; -} -+(AWSMobileAnalytics *) mobileAnalyticsWithEventRecorderService:(AWSEventRecorderService *)eventRecorderService - appNamespace:(NSString *)theIdentifier - completionBlock:(AIInitializationCompletionBlock)completionBlock -{ - return [self insightsWithEventRecorderService:eventRecorderService - withIdentifier:(NSString *)theIdentifier - withConfigSettings:nil - withCompletionBlock:completionBlock]; + return self; } - - -+(AWSMobileAnalytics *) insightsWithEventRecorderService:(AWSEventRecorderService *)eventRecorderService - withIdentifier:(NSString *)theIdentifier - withConfigSettings:(NSDictionary *)configSettings - withCompletionBlock:(AIInitializationCompletionBlock)completionBlock -{ - - // create insights options from theClientConfig - id options = [AWSMobileAnalytics optionsWithAllowEventCollection:[AWSMobileAnalyticsClientConfiguration defaultClientConfiguration].enableEvents - withAllowWANDelivery:[AWSMobileAnalyticsClientConfiguration defaultClientConfiguration].transmitOnWAN]; - - return [AWSMobileAnalytics insightsWithEventRecorderService:(AWSEventRecorderService *)eventRecorderService - withIdentifier:(NSString *)theIdentifier - withOptions:options - withSettings:configSettings - withCompletionBlock:completionBlock]; +// Private method for testing purpose ++ (void)removeCachedInstances { + NSArray *allKeys = [_mobileAnalyticsForAppNamespace allKeys]; + for (NSString *key in allKeys) { + [_mobileAnalyticsForAppNamespace removeObjectForKey:key]; + } } - - @end diff --git a/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsClientConfiguration.h b/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsClientConfiguration.h deleted file mode 100644 index 6d6e4d52254..00000000000 --- a/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsClientConfiguration.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#import - -@interface AWSMobileAnalyticsClientEnvironment : NSObject -@property(nonatomic) NSString* appVersion; -@property(nonatomic) NSString* appBuild; -@property(nonatomic) NSString* appPackageName; -@property(nonatomic) NSString* appName; - -typedef NS_ENUM(NSInteger, AZAppIdentificationStrategy) { - AZAppIdentificationStrategy_Global = 0, - AZAppIdentificationStrategy_Private -}; - -+(AWSMobileAnalyticsClientEnvironment *)defaultEnvironment; -@end - -@interface AWSMobileAnalyticsClientConfiguration : NSObject -@property(nonatomic) BOOL useHttps; -@property(nonatomic) NSDictionary *attributes; -@property(nonatomic) AWSMobileAnalyticsClientEnvironment *environment; -@property(nonatomic) BOOL transmitOnWAN; -@property(nonatomic) BOOL enableEvents; -@property(nonatomic) AZAppIdentificationStrategy identificationStrategy; - -+(AWSMobileAnalyticsClientConfiguration *) defaultClientConfiguration; -@end diff --git a/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsConfiguration.h b/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsConfiguration.h new file mode 100644 index 00000000000..3aaed1da065 --- /dev/null +++ b/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsConfiguration.h @@ -0,0 +1,44 @@ +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +#import + +@class AWSServiceConfiguration; + +typedef NS_ENUM(NSInteger, AWSAppIdentificationStrategy) { + AWSAppIdentificationStrategyGlobal = 0, + AWSAppIdentificationStrategyPrivate +}; + +@interface AWSMobileAnalyticsEnvironment : NSObject + +@property (nonatomic, strong) NSString *appVersion; +@property (nonatomic, strong) NSString *appBuild; +@property (nonatomic, strong) NSString *appPackageName; +@property (nonatomic, strong) NSString *appName; + +@end + +@interface AWSMobileAnalyticsConfiguration : NSObject + +@property (nonatomic, assign) BOOL useHttps; +@property (nonatomic, strong) NSDictionary *attributes; +@property (nonatomic, strong) AWSMobileAnalyticsEnvironment *environment; +@property (nonatomic, assign) BOOL transmitOnWAN; +@property (nonatomic, assign) BOOL enableEvents; +@property (nonatomic, assign) AWSAppIdentificationStrategy identificationStrategy; +@property (nonatomic, strong) AWSServiceConfiguration *serviceConfiguration; + +@end diff --git a/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsClientConfiguration.m b/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsConfiguration.m similarity index 67% rename from AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsClientConfiguration.m rename to AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsConfiguration.m index 6b3b9b3bc25..3c6752dc1d7 100644 --- a/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsClientConfiguration.m +++ b/AWSCore/MobileAnalytics/AZCommon/AWSMobileAnalyticsConfiguration.m @@ -13,19 +13,14 @@ * permissions and limitations under the License. */ -#import "AWSMobileAnalyticsClientConfiguration.h" +#import "AWSMobileAnalyticsConfiguration.h" +#import "AWSService.h" -@implementation AWSMobileAnalyticsClientEnvironment +@implementation AWSMobileAnalyticsEnvironment static NSString* const UNKNOWN = @"Unknown"; -+(AWSMobileAnalyticsClientEnvironment *)defaultEnvironment -{ - return [[self alloc] init]; -} - --(instancetype)init -{ +-(instancetype)init { if(self = [super init]) { //App Details NSString *shortVersionString = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; @@ -40,30 +35,19 @@ -(instancetype)init return self; } - @end -@implementation AWSMobileAnalyticsClientConfiguration +@implementation AWSMobileAnalyticsConfiguration -+(AWSMobileAnalyticsClientConfiguration *)defaultClientConfiguration -{ - static AWSMobileAnalyticsClientConfiguration *sharedConfiguration = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedConfiguration = [[self alloc] init]; - }); - return sharedConfiguration; -} - --(instancetype)init -{ - if(self = [super init]) { +- (instancetype)init { + if (self = [super init]) { _attributes = [NSDictionary dictionary]; _useHttps = YES; - _environment = [AWSMobileAnalyticsClientEnvironment defaultEnvironment]; + _environment = [AWSMobileAnalyticsEnvironment new]; _transmitOnWAN = NO; _enableEvents = YES; - _identificationStrategy = AZAppIdentificationStrategy_Private; + _identificationStrategy = AWSAppIdentificationStrategyPrivate; + _serviceConfiguration = [AWSServiceManager defaultServiceManager].defaultServiceConfiguration; } return self; } diff --git a/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsDefaultContext.m b/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsDefaultContext.m index ac0467029e0..7e52b224af4 100644 --- a/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsDefaultContext.m +++ b/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsDefaultContext.m @@ -23,84 +23,81 @@ #import "AWSMobileAnalyticsDefaultDeliveryClient.h" #import "AWSMobileAnalyticsIOSLifeCycleManager.h" #import "AWSMobileAnalyticsIOSClientContext.h" -#import "AWSMobileAnalyticsClientConfiguration.h" +#import "AWSMobileAnalyticsConfiguration.h" #import "AWSMobileAnalyticsIOSClientContext.h" -#import "AWSMobileAnalyticsClientConfiguration.h" +#import "AWSMobileAnalyticsConfiguration.h" @interface AWSMobileAnalyticsDefaultContext() + @property(nonatomic) id uniqueIdService; + @end @implementation AWSMobileAnalyticsDefaultContext -+(id) contextWithIdentifier:(NSString*) theIdentifier - withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo - withConfigurationSettings:(NSDictionary*)settings -{ ++ (id) contextWithIdentifier:(NSString*) theIdentifier + withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo + withConfigurationSettings:(NSDictionary*)settings { return [AWSMobileAnalyticsDefaultContext contextWithIdentifier:theIdentifier - withClientConfiguration:[AWSMobileAnalyticsClientConfiguration defaultClientConfiguration] - withSdkInfo:sdkInfo - withConfigurationSettings:settings]; + withClientConfiguration:[AWSMobileAnalyticsConfiguration new] + withSdkInfo:sdkInfo + withConfigurationSettings:settings]; } + (id) contextWithIdentifier:(NSString*) theIdentifier - withClientConfiguration:(AWSMobileAnalyticsClientConfiguration *)clientConfiguration - withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo - withConfigurationSettings:(NSDictionary*)settings -{ + withClientConfiguration:(AWSMobileAnalyticsConfiguration *)clientConfiguration + withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo + withConfigurationSettings:(NSDictionary*)settings { return [[AWSMobileAnalyticsDefaultContext alloc] initWithIdentifier:theIdentifier - withClientConfiguration:clientConfiguration - withSdkInfo:sdkInfo - withConfigurationSettings:settings]; + withClientConfiguration:clientConfiguration + withSdkInfo:sdkInfo + withConfigurationSettings:settings]; } --(id) initWithIdentifier:(NSString*) theIdentifier - withClientConfiguration:(AWSMobileAnalyticsClientConfiguration *)clientConfiguration - withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo - withConfigurationSettings:(NSDictionary*)settings -{ - if (self = [super init]) - { +- (id) initWithIdentifier:(NSString*) theIdentifier + withClientConfiguration:(AWSMobileAnalyticsConfiguration *)clientConfiguration + withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo + withConfigurationSettings:(NSDictionary*)settings { + if (self = [super init]) { _identifier = theIdentifier; - - + + _sdkInfo = sdkInfo; - + _system = [[AWSMobileAnalyticsIOSSystem alloc] initWithIdentifier:theIdentifier]; - + _uniqueIdService = [AWSMobileAnalyticsPrefsUniqueIdService idService]; _uniqueId = [self.uniqueIdService getUniqueIdWithContext:self]; // TODO: this may need to be broken up since self is not fully instantiated yet - + // now that we have the id, create the client context from the client configuration that // was passed in - AWSMobileAnalyticsClientEnvironment *environment = clientConfiguration.environment; + AWSMobileAnalyticsEnvironment *environment = clientConfiguration.environment; _clientContext = [AWSMobileAnalyticsIOSClientContext clientContextWithAppVersion:environment.appVersion - withAppBuild:environment.appBuild - withAppPackageName:environment.appPackageName - withAppName:environment.appName - withCustomAttributes:clientConfiguration.attributes]; - + withAppBuild:environment.appBuild + withAppPackageName:environment.appPackageName + withAppName:environment.appName + withCustomAttributes:clientConfiguration.attributes]; + _httpClient = [[AWSMobileAnalyticsDefaultHttpClient alloc] init]; [_httpClient addInterceptor:[[AWSMobileAnalyticsSDKInfoInterceptor alloc] initWithSDKInfo:_sdkInfo]]; [_httpClient addInterceptor:[[AWSMobileAnalyticsInstanceIdInterceptor alloc] initWithInstanceId:_uniqueId]]; [_httpClient addInterceptor:[AWSMobileAnalyticsClientContextInterceptor contextInterceptorWithClientContext:_clientContext]]; - + [_httpClient addInterceptor:[[AWSMobileAnalyticsLogInterceptor alloc] init]]; - + NSOperationQueue* queue = [[NSOperationQueue alloc] init]; [queue setMaxConcurrentOperationCount:1]; - - + + _configuration = [AWSMobileAnalyticsHttpCachingConfiguration configurationWithContext:self - withFileManager:_system.fileManager - withOverrideSettings:settings - withOperationQueue:queue]; + withFileManager:_system.fileManager + withOverrideSettings:settings + withOperationQueue:queue]; } return self; } --(void) synchronize -{ +- (void)synchronize { _uniqueId = [self.uniqueIdService getUniqueIdWithContext:self]; [_configuration refresh]; } diff --git a/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsSerializerFactory.m b/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsSerializerFactory.m index e5f32ac4374..8bf61270fba 100644 --- a/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsSerializerFactory.m +++ b/AWSCore/MobileAnalytics/core/AWSMobileAnalyticsSerializerFactory.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsSerializerFactory.h" -#import "AZLogging.h" +#import "AWSLogging.h" @interface AIDefaultSerializer : NSObject - (NSData *) writeObject:(id) theObject; @@ -27,7 +27,7 @@ @implementation AIDefaultSerializer - (NSData *) writeObject:(id) theObject { - AZLogWarn( @"Using the DefaultSerializer, only serializing the object's description to NSData"); + AWSLogWarn( @"Using the DefaultSerializer, only serializing the object's description to NSData"); if(theObject == nil) return nil; @@ -36,7 +36,7 @@ - (NSData *) writeObject:(id) theObject - (NSData *) writeArray:(NSArray *) theArray { - AZLogWarn( @"Using the DefaultSerializer, only serializing the array's description to NSData"); + AWSLogWarn( @"Using the DefaultSerializer, only serializing the array's description to NSData"); if(theArray == nil) return nil; @@ -45,12 +45,12 @@ - (NSData *) writeArray:(NSArray *) theArray - (void) readObject:(NSData *) theData { - AZLogWarn( @"Using the DefaultSerializer, do not know how to handle the data. Doing nothing"); + AWSLogWarn( @"Using the DefaultSerializer, do not know how to handle the data. Doing nothing"); } - (NSArray *) readArray:(NSData *) theData { - AZLogWarn( @"Using the DefaultSerializer, do not know how to handle the data. Doing nothing"); + AWSLogWarn( @"Using the DefaultSerializer, do not know how to handle the data. Doing nothing"); return nil; } diff --git a/AWSCore/MobileAnalytics/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.m b/AWSCore/MobileAnalytics/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.m index 3bf40bb125e..9f77c63bb87 100644 --- a/AWSCore/MobileAnalytics/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.m +++ b/AWSCore/MobileAnalytics/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.m @@ -22,7 +22,7 @@ #import "AWSMobileAnalyticsJSONSerializer.h" #import "AWSMobileAnalyticsConfigurationKeys.h" #import "AWSMobileAnalyticsSerializerFactory.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const CONFIG_KEY = @"configuration"; static NSString* const CONFIG_KEY_LAST_SYNC = @"configuration.lastSyncDate"; @@ -86,11 +86,11 @@ -(id) initWithContext:(id)context { if(createError != nil) { - AZLogError( @"Error creating preferences file. %@", [createError localizedDescription]); + AWSLogError( @"Error creating preferences file. %@", [createError localizedDescription]); } else { - AZLogError( @"The preferences file could not be created"); + AWSLogError( @"The preferences file could not be created"); } return nil; } @@ -119,14 +119,14 @@ -(NSDictionary*)loadPersistedSettingsAndMergeWith:(NSDictionary*)overrideSetting { if(error != nil) { - AZLogWarn( @"Unable to load the configuration from the file. %@, it is common if the file has not been created yet.", [error localizedDescription]); + AWSLogWarn( @"Unable to load the configuration from the file. %@, it is common if the file has not been created yet.", [error localizedDescription]); // Reset to never synchronized status if the file cannot be read due to missing file or corrupted file [self.preferences putDouble:0.0 forKey:CONFIG_KEY_LAST_SYNC]; self.lastConfigSyncTimestamp = 0.0; } else { - AZLogError( @"There was an error while attempting to load the confinguration from the file."); + AWSLogError( @"There was an error while attempting to load the confinguration from the file."); } return overrideSettings; } @@ -158,11 +158,11 @@ -(void)saveConfiguration:(NSDictionary*)configurationSettings { if(error != nil) { - AZLogError( @"There was an error while attempting to write the configuration to the file. %@", [error localizedDescription]); + AWSLogError( @"There was an error while attempting to write the configuration to the file. %@", [error localizedDescription]); } else { - AZLogError( @"There was an error while attempting to write the configuration to the file."); + AWSLogError( @"There was an error while attempting to write the configuration to the file."); } } } @@ -327,7 +327,7 @@ -(void) refresh // self.lastConfigSyncTimestamp = nowTimestamp; // } // -// AZLogDebug( @"\n==========Server-synced Configuration==========\n%@", serverConfig); +// AWSLogDebug( @"\n==========Server-synced Configuration==========\n%@", serverConfig); // } // } // }]; diff --git a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultHttpClient.m b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultHttpClient.m index a1af37fe03d..6e0c503da1d 100644 --- a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultHttpClient.m +++ b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultHttpClient.m @@ -15,12 +15,13 @@ #import "AWSMobileAnalyticsDefaultHttpClient.h" #import "AWSCore.h" -#import "AZCategory.h" +#import "AWSCategory.h" #import "AWSMobileAnalyticsInstanceIdInterceptor.h" #import "AWSMobileAnalyticsClientContextInterceptor.h" #import "GZIP.h" #import "AWSMobileAnalyticsDefaultSessionClient.h" -#import "AZLogging.h" +#import "AWSLogging.h" +#import "AWSEventRecorderService.h" NSString *const insightsDefaultRunLoopMode = @"com.amazon.insights.DefaultRunLoopMode"; @@ -79,7 +80,7 @@ -(void) addInterceptor: (id) theInterceptor AWSEventRecorderService *ers = self.eventRecorderService; if (ers == nil) { - AZLogError( @"AWSEventRecorderService is nil! "); + AWSLogError( @"AWSEventRecorderService is nil! "); } AWSEventRecorderServicePutEventsInput *putEventInput = [AWSEventRecorderServicePutEventsInput new]; @@ -138,7 +139,7 @@ -(void) addInterceptor: (id) theInterceptor //process others serviceEvent.eventType = event[@"event_type"]; - serviceEvent.timestamp = [[NSDate date] az_stringValue:AZDateISO8601DateFormat3]; + serviceEvent.timestamp = [[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3]; @@ -198,12 +199,12 @@ -(void) addInterceptor: (id) theInterceptor // int attempts = 1; // int maxAttempts = (theRetries > 0) ? theRetries + 1 : 1; // -// AZLogDebug( @"Will attempt the request a maximum of %d times", maxAttempts); +// AWSLogDebug( @"Will attempt the request a maximum of %d times", maxAttempts); // NSTimeInterval totalRequestTime = 0.0; // while (attempts <= maxAttempts) { // // NSDate* requestStartDate = [NSDate date]; -// AZLogDebug( @"Attempt %d of %d", attempts, maxAttempts); +// AWSLogDebug( @"Attempt %d of %d", attempts, maxAttempts); // // //Attach the request to the response // response.originatingRequest = theRequest; @@ -235,7 +236,7 @@ -(void) addInterceptor: (id) theInterceptor // } // // NSTimeInterval elapsedTime = [[NSDate date] timeIntervalSinceDate:requestStartDate]; -// AZLogDebug( @"Time of request %f", elapsedTime); +// AWSLogDebug( @"Time of request %f", elapsedTime); // totalRequestTime += elapsedTime; // // if (response.didTimeout) { diff --git a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultRequest.m b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultRequest.m index 204244e99b7..2b684c0c7b8 100644 --- a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultRequest.m +++ b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultRequest.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsDefaultRequest.h" -#import "AZLogging.h" +#import "AWSLogging.h" @implementation AWSMobileAnalyticsDefaultRequest @@ -104,7 +104,7 @@ -(NSDictionary *) toDictionary -(id) initWithDictionary: (NSDictionary *) theDictionary { - AZLogError( @"Initialization from NSDictionary is not supported for AWSMobileAnalyticsDefaultRequest"); + AWSLogError( @"Initialization from NSDictionary is not supported for AWSMobileAnalyticsDefaultRequest"); return [self init]; } diff --git a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultResponse.m b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultResponse.m index f9796d900ff..f07ba965da4 100644 --- a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultResponse.m +++ b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsDefaultResponse.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsDefaultResponse.h" -#import "AZLogging.h" +#import "AWSLogging.h" @implementation AWSMobileAnalyticsDefaultResponse @@ -59,11 +59,11 @@ -(NSString *) responseAsString { if(!self.isFinishedLoading) { - AZLogWarn( @"Attempting to access the response before its finished loading"); + AWSLogWarn( @"Attempting to access the response before its finished loading"); } if(self.response == nil || [self.response length] == 0) { - AZLogWarn( @"The response was nil or empty"); + AWSLogWarn( @"The response was nil or empty"); return [NSString string]; } return [AWSMobileAnalyticsStringUtils dataToString:self.response]; @@ -72,7 +72,7 @@ -(NSString *) responseAsString -(void)processConnectionTimeout { if (!self.isFinishedLoading && !self.error) { - AZLogVerbose( @"AWSMobileAnalyticsDefaultResponse: processConnectionTimeout"); + AWSLogVerbose( @"AWSMobileAnalyticsDefaultResponse: processConnectionTimeout"); self.didConnectionTimeout = YES; self.isFinishedLoading = YES; } @@ -84,7 +84,7 @@ -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLRespons NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; self.code = (int)[httpResponse statusCode] ; - AZLogVerbose( @"AWSMobileAnalyticsDefaultResponse: connection:didReceiveResponse: %ld", (long)[httpResponse statusCode]); + AWSLogVerbose( @"AWSMobileAnalyticsDefaultResponse: connection:didReceiveResponse: %ld", (long)[httpResponse statusCode]); self->_headers = [NSMutableDictionary dictionaryWithDictionary:httpResponse.allHeaderFields]; @@ -94,14 +94,14 @@ -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLRespons -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { - AZLogVerbose( @"AWSMobileAnalyticsDefaultResponse: connection:didReceiveData: %lu", (unsigned long)[data length]); + AWSLogVerbose( @"AWSMobileAnalyticsDefaultResponse: connection:didReceiveData: %lu", (unsigned long)[data length]); //append data to the body [self.response appendData:data]; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { - AZLogVerbose( @"AWSMobileAnalyticsDefaultResponse: connectionDidFinishLoading"); + AWSLogVerbose( @"AWSMobileAnalyticsDefaultResponse: connectionDidFinishLoading"); self.responseSize = [self.response length]; @@ -119,7 +119,7 @@ - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { //Log the error - AZLogError( @"AWSMobileAnalyticsDefaultResponse: didFailWithError: %@", error); + AWSLogError( @"AWSMobileAnalyticsDefaultResponse: didFailWithError: %@", error); self.error = error; self.isFinishedLoading = YES; } @@ -179,7 +179,7 @@ -(NSDictionary *) toDictionary -(id) initWithDictionary: (NSDictionary *) theDictionary { - AZLogError( @"Initialization from NSDictionary is not supported for AWSMobileAnalyticsDefaultResponse"); + AWSLogError( @"Initialization from NSDictionary is not supported for AWSMobileAnalyticsDefaultResponse"); return [self init]; } diff --git a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsLogInterceptor.m b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsLogInterceptor.m index 6facf6f68ba..5fe764d4ee5 100644 --- a/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsLogInterceptor.m +++ b/AWSCore/MobileAnalytics/core/http/AWSMobileAnalyticsLogInterceptor.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsLogInterceptor.h" -#import "AZLogging.h" +#import "AWSLogging.h" @implementation AWSMobileAnalyticsLogInterceptor @@ -22,11 +22,11 @@ -(void) before:(id) theRequest { @try { - AZLogDebug( @"%@", theRequest); + AWSLogDebug( @"%@", theRequest); } @catch (NSException *exception) { - AZLogWarn( @"%@", exception); + AWSLogWarn( @"%@", exception); } } @@ -34,11 +34,11 @@ -(void) after:(id) theResponse { @try { - AZLogDebug( @"%@", theResponse); + AWSLogDebug( @"%@", theResponse); } @catch (NSException *exception) { - AZLogWarn( @"%@", exception); + AWSLogWarn( @"%@", exception); } } diff --git a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsDefaultFileManager.m b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsDefaultFileManager.m index 8554e441c6c..8ba48237c6b 100644 --- a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsDefaultFileManager.m +++ b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsDefaultFileManager.m @@ -17,7 +17,7 @@ #import "AWSMobileAnalyticsBufferedReader.h" #import "AWSMobileAnalyticsWriter.h" #import "AWSMobileAnalyticsSerializerFactory.h" -#import "AZLogging.h" +#import "AWSLogging.h" NSString * const AIDefaultFileManagerErrorDomain = @"com.amazon.insights-framework.AIDefaultFileManagerErrorDomain"; @@ -58,7 +58,7 @@ -(AWSMobileAnalyticsFile*) createDirectory:(NSString*) theDirectoryPath NSError *error = nil; if([AWSMobileAnalyticsStringUtils isBlank:theDirectoryPath]) { - AZLogWarn( @"The directory path was blank"); + AWSLogWarn( @"The directory path was blank"); error =[AWSMobileAnalyticsErrorUtils errorWithDomain:AIDefaultFileManagerErrorDomain withDescription: @"The path was blank" withErrorCode:AIDefaultFileManagerErrorCode_EmptyOrNilPath]; @@ -506,7 +506,7 @@ -(NSDictionary *) readDataFromFile:(AWSMobileAnalyticsFile *) theFile if(theReader == nil) { - AZLogError( @"The reader provided was nil."); + AWSLogError( @"The reader provided was nil."); error = [AWSMobileAnalyticsErrorUtils errorWithDomain:AIDefaultFileManagerErrorDomain withDescription:@"Nil reader" withErrorCode: AIDefaultFileManagerErrorCode_NilReader]; @@ -529,7 +529,7 @@ -(NSDictionary *) readDataFromFile:(AWSMobileAnalyticsFile *) theFile if(error != nil) { - AZLogError( @"There was an error while reading the contents from the file %@. %@", theFile.absolutePath, [error localizedDescription]); + AWSLogError( @"There was an error while reading the contents from the file %@. %@", theFile.absolutePath, [error localizedDescription]); [AWSMobileAnalyticsErrorUtils safeSetError:theError withError:error]; if([theFile exists]) { @@ -575,7 +575,7 @@ -(NSDictionary *) readDataFromFile:(AWSMobileAnalyticsFile *) theFile withErrorCode: AIDefaultFileManagerErrorCode_ErrorParsingFileContents]; } - AZLogWarn( @"Not able to parse the contents from the file %@. %@. It is common if that file hasn't been created yet.", theFile.absolutePath, [error localizedDescription]); + AWSLogWarn( @"Not able to parse the contents from the file %@. %@. It is common if that file hasn't been created yet.", theFile.absolutePath, [error localizedDescription]); [AWSMobileAnalyticsErrorUtils safeSetError:theError withError:error]; if([theFile exists]) { @@ -633,7 +633,7 @@ -(BOOL) writeData:(id) theData { if(![theFile createNewFile]) { - AZLogError( @"There was an error while attempting to create the file."); + AWSLogError( @"There was an error while attempting to create the file."); error = [AWSMobileAnalyticsErrorUtils errorWithDomain:AIDefaultFileManagerErrorDomain withDescription:@"Failed to create file to write data to" withErrorCode: AIDefaultFileManagerErrorCode_UnableToCreateFile]; @@ -644,7 +644,7 @@ -(BOOL) writeData:(id) theData if(theWriter == nil) { - AZLogError( @"The writer provided was nil."); + AWSLogError( @"The writer provided was nil."); error = [AWSMobileAnalyticsErrorUtils errorWithDomain:AIDefaultFileManagerErrorDomain withDescription:@"Nil writer" withErrorCode: AIDefaultFileManagerErrorCode_NilWriter]; @@ -684,11 +684,11 @@ -(BOOL) writeData:(id) theData { if(error != nil) { - AZLogError( @"There was an error while attempting to write to the file. %@", [error localizedDescription]); + AWSLogError( @"There was an error while attempting to write to the file. %@", [error localizedDescription]); } else { - AZLogError( @"There was an error while attempting to write to the file."); + AWSLogError( @"There was an error while attempting to write to the file."); } } [AWSMobileAnalyticsErrorUtils safeSetError:theError withError:error]; diff --git a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsFile.m b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsFile.m index 60c7d099464..09233af48dc 100644 --- a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsFile.m +++ b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsFile.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsFile.h" -#import "AZLogging.h" +#import "AWSLogging.h" @interface AWSMobileAnalyticsFile() @property (nonatomic, readwrite) NSFileManager* fileManager; @@ -46,7 +46,7 @@ -(id) initWithFileMananager:(NSFileManager*) theFileManager self.fileManager = theFileManager; if(self.fileManager == nil) { - AZLogWarn( @"The file path is nil."); + AWSLogWarn( @"The file path is nil."); return nil; } @@ -66,7 +66,7 @@ -(id) initWithFileMananager:(NSFileManager*) theFileManager } else { - AZLogWarn( @"Both parent path name and child path name were nil"); + AWSLogWarn( @"Both parent path name and child path name were nil"); self->_absolutePath = nil; } } @@ -113,12 +113,12 @@ -(BOOL) createNewFile { if(self.fileManager == nil) { - AZLogWarn( @"The file manager is nil."); + AWSLogWarn( @"The file manager is nil."); return NO; } if([AWSMobileAnalyticsStringUtils isBlank:self.absolutePath]) { - AZLogWarn( @"The file path is nil."); + AWSLogWarn( @"The file path is nil."); return NO; } @@ -148,12 +148,12 @@ -(BOOL) deleteFile error:&error]; if(error != nil) { - AZLogError( @"The file could not be deleted. Error:%@", [error localizedDescription]); + AWSLogError( @"The file could not be deleted. Error:%@", [error localizedDescription]); } } else { - AZLogWarn( @"The file does not exist. path:%@", self.absolutePath); + AWSLogWarn( @"The file does not exist. path:%@", self.absolutePath); deleted = NO; } return deleted; @@ -163,12 +163,12 @@ -(BOOL) exists { if([AWSMobileAnalyticsStringUtils isBlank:self.absolutePath]) { - AZLogWarn( @"The file path is nil."); + AWSLogWarn( @"The file path is nil."); return NO; } if(self.fileManager == nil) { - AZLogWarn( @"The file manager is nil."); + AWSLogWarn( @"The file manager is nil."); return NO; } @@ -179,12 +179,12 @@ -(BOOL) mkdirs { if(self.absolutePath == nil) { - AZLogWarn( @"The file path is nil."); + AWSLogWarn( @"The file path is nil."); return NO; } if(self.fileManager == nil) { - AZLogWarn( @"The file manager is nil."); + AWSLogWarn( @"The file manager is nil."); return NO; } @@ -200,7 +200,7 @@ -(BOOL) mkdirs attributes:nil error:&error]; if(error != nil) { - AZLogError( @"The directory could not be created. Error:%@", [error localizedDescription]); + AWSLogError( @"The directory could not be created. Error:%@", [error localizedDescription]); created = NO; self->_isDirectory = NO; self->_isFile = NO; @@ -224,7 +224,7 @@ -(unsigned long long) length NSDictionary *attributes = [self.fileManager attributesOfItemAtPath:self.absolutePath error:&error]; if(error != nil || attributes == nil) { - AZLogError( @"The file size could not be determined. Error:%@", [error localizedDescription]); + AWSLogError( @"The file size could not be determined. Error:%@", [error localizedDescription]); return -1; } return [attributes fileSize]; @@ -242,7 +242,7 @@ -(NSArray*) listFiles if(error != nil) { - AZLogError( @"The list of files in directory could not be retreived. Error:%@", [error localizedDescription]); + AWSLogError( @"The list of files in directory could not be retreived. Error:%@", [error localizedDescription]); return [NSArray array]; } @@ -264,7 +264,7 @@ -(BOOL) renameTo:(NSString *) theNewFilename BOOL success = [self.fileManager moveItemAtPath:self.absolutePath toPath:newAbsolutePath error:&error]; if(error != nil) { - AZLogError( @"Failed to rename file to %@. Error:%@", theNewFilename, [error localizedDescription]); + AWSLogError( @"Failed to rename file to %@. Error:%@", theNewFilename, [error localizedDescription]); success = NO; } return success; diff --git a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSPreferences.m b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSPreferences.m index f31a30b2d80..eecc8d3d9bc 100644 --- a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSPreferences.m +++ b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSPreferences.m @@ -15,7 +15,7 @@ #import "AWSMobileAnalyticsIOSPreferences.h" #import "GZIP.h" -#import "AZLogging.h" +#import "AWSLogging.h" NSString * const AIPreferencesFilename = @"preferences"; @@ -43,7 +43,7 @@ - (id) initWithFileManager:(id) theFileManager NSAssert(theFileManager != nil, @"The file manager should not have been nil"); if(theFileManager == nil) { - AZLogError( @"The file manager should not have been nil"); + AWSLogError( @"The file manager should not have been nil"); return nil; } @@ -59,11 +59,11 @@ - (id) initWithFileManager:(id) theFileManager { if(createError != nil) { - AZLogError( @"Error creating preferences file. %@", [createError localizedDescription]); + AWSLogError( @"Error creating preferences file. %@", [createError localizedDescription]); } else { - AZLogError( @"The preferences file could not be created"); + AWSLogError( @"The preferences file could not be created"); } return nil; } @@ -79,11 +79,11 @@ - (void) writePreferences { if(error != nil) { - AZLogError( @"There was an error while attempting to write the preferences to the file. %@", [error localizedDescription]); + AWSLogError( @"There was an error while attempting to write the preferences to the file. %@", [error localizedDescription]); } else { - AZLogError( @"There was an error while attempting to write the preferences to the file."); + AWSLogError( @"There was an error while attempting to write the preferences to the file."); } } } @@ -97,11 +97,11 @@ - (void) loadPreferences { if(error != nil) { - AZLogWarn( @"Unable to load the preferences from the file. %@. It is common if the file has not been created yet.", [error localizedDescription]); + AWSLogWarn( @"Unable to load the preferences from the file. %@. It is common if the file has not been created yet.", [error localizedDescription]); } else { - AZLogError( @"There was an error while attempting to load the preferences from the file."); + AWSLogError( @"There was an error while attempting to load the preferences from the file."); } } @@ -120,12 +120,12 @@ - (BOOL) boolForKey:(NSString*) theKey withOptValue:(BOOL) defaultValue { if(self.preferences == nil) { - AZLogWarn( @"The preferences were nil"); + AWSLogWarn( @"The preferences were nil"); return defaultValue; } else if([AWSMobileAnalyticsStringUtils isBlank:theKey]) { - AZLogWarn( @"The key was blank"); + AWSLogWarn( @"The key was blank"); return defaultValue; } @@ -147,12 +147,12 @@ - (int) intForKey:(NSString*) theKey withOptValue:(int) defaultValue { if(self.preferences == nil) { - AZLogWarn( @"The preferences were nil"); + AWSLogWarn( @"The preferences were nil"); return defaultValue; } else if([AWSMobileAnalyticsStringUtils isBlank:theKey]) { - AZLogWarn( @"The key was blank"); + AWSLogWarn( @"The key was blank"); return defaultValue; } @@ -174,12 +174,12 @@ - (long long) longLongForKey:(NSString*) theKey withOptValue:(long long) default { if(self.preferences == nil) { - AZLogWarn( @"The user defaults were nil"); + AWSLogWarn( @"The user defaults were nil"); return defaultValue; } else if([AWSMobileAnalyticsStringUtils isBlank:theKey]) { - AZLogWarn( @"The key was blank"); + AWSLogWarn( @"The key was blank"); return defaultValue; } @@ -201,12 +201,12 @@ - (double) doubleForKey:(NSString*) theKey withOptValue:(double) defaultValue { if(self.preferences == nil) { - AZLogWarn( @"The preferences were nil"); + AWSLogWarn( @"The preferences were nil"); return defaultValue; } else if([AWSMobileAnalyticsStringUtils isBlank:theKey]) { - AZLogWarn( @"The key was blank"); + AWSLogWarn( @"The key was blank"); return defaultValue; } @@ -228,12 +228,12 @@ - (NSString *) stringForKey:(NSString*) theKey withOptValue:(NSString *) default { if(self.preferences == nil) { - AZLogWarn( @"The preferences were nil"); + AWSLogWarn( @"The preferences were nil"); return defaultValue; } else if([AWSMobileAnalyticsStringUtils isBlank:theKey]) { - AZLogWarn( @"The key was blank"); + AWSLogWarn( @"The key was blank"); return defaultValue; } @@ -281,17 +281,17 @@ - (void) putString:(NSString*) theValue forKey:(NSString*) theKey { if(self.preferences == nil) { - AZLogWarn( @"The preferences were nil"); + AWSLogWarn( @"The preferences were nil"); return; } else if([AWSMobileAnalyticsStringUtils isBlank:theKey]) { - AZLogWarn( @"The key was blank"); + AWSLogWarn( @"The key was blank"); return; } else if(theValue == nil) { - AZLogWarn( @"The key was nil"); + AWSLogWarn( @"The key was nil"); return; } diff --git a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSSystem.m b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSSystem.m index 331933d4a24..ca57a63ba54 100644 --- a/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSSystem.m +++ b/AWSCore/MobileAnalytics/core/system/AWSMobileAnalyticsIOSSystem.m @@ -18,7 +18,7 @@ #import "Reachability.h" #import "AWSMobileAnalyticsIOSSystem.h" #import "AWSMobileAnalyticsIOSLifeCycleManager.h" -#import "AZLogging.h" +#import "AWSLogging.h" #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) @@ -61,7 +61,7 @@ -(id) initWithIdentifier: (NSString*) theIdentifier withRootPath:(NSString*) the { if(![rootDirectory mkdirs]) { - AZLogError( @"Failed to create data directory for path %@", absolutePath); + AWSLogError( @"Failed to create data directory for path %@", absolutePath); } } @@ -78,7 +78,7 @@ -(id) initWithIdentifier: (NSString*) theIdentifier withRootPath:(NSString*) the } else { - AZLogError( @"The Mobile Analytics root directory could not be created"); + AWSLogError( @"The Mobile Analytics root directory could not be created"); NSAssert([rootDirectory exists], @"The Mobile Analytics root directory could not be created"); } } @@ -104,7 +104,7 @@ - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)theUrl withFileManager:(NSFil forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ - AZLogError( @"Error excluding %@ from backup %@", [theUrl lastPathComponent], error); + AWSLogError( @"Error excluding %@ from backup %@", [theUrl lastPathComponent], error); } return success; } @@ -113,7 +113,7 @@ - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)theUrl withFileManager:(NSFil NSString* path = [theUrl path]; if(![theFileManager fileExistsAtPath:path]) { - AZLogError( @"URL %@ references a nonexistent file location", theUrl); + AWSLogError( @"URL %@ references a nonexistent file location", theUrl); return NO; } diff --git a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsConnectivityPolicy.m b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsConnectivityPolicy.m index a4d27508c4d..663dd341866 100644 --- a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsConnectivityPolicy.m +++ b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsConnectivityPolicy.m @@ -15,19 +15,19 @@ #import "AWSMobileAnalyticsConnectivityPolicy.h" #import "AWSMobileAnalyticsConfigurationKeys.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const SUBMITTED_TIME_KEY = @"AWSMobileAnalyticsSubmissionTimePolicy.submissionTime"; @interface AWSMobileAnalyticsConnectivityPolicy() @property(nonatomic)id connectivity; -@property(nonatomic)id configuration; +@property(nonatomic)id configuration; @property(nonatomic)BOOL allowWan; @end @implementation AWSMobileAnalyticsConnectivityPolicy +(AWSMobileAnalyticsConnectivityPolicy*)policyWithConnectivity:(id)connectivity - withConfiguration:(id)configuration + withConfiguration:(id)configuration withAllowWan:(BOOL)allowWan { return [[AWSMobileAnalyticsConnectivityPolicy alloc]initWithConnectivity:connectivity @@ -36,7 +36,7 @@ +(AWSMobileAnalyticsConnectivityPolicy*)policyWithConnectivity:(id)connectivity - withConfiguration:(id)configuration + withConfiguration:(id)configuration withAllowWan:(BOOL)allowWan { if(self = [super init]) @@ -60,7 +60,7 @@ -(BOOL)isAllowed } if (isAllowed == NO) { - AZLogWarn(@"Submission request being dropped because the device doesn't have network connection or allowWAN has been turned off while in Cellular network"); + AWSLogWarn(@"Submission request being dropped because the device doesn't have network connection or allowWAN has been turned off while in Cellular network"); } return isAllowed; } diff --git a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDefaultDeliveryClient.m b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDefaultDeliveryClient.m index 2f475111e79..500e0445bb3 100644 --- a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDefaultDeliveryClient.m +++ b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDefaultDeliveryClient.m @@ -22,7 +22,7 @@ #import "AWSMobileAnalyticsSerializable.h" #import "AWSMobileAnalyticsSerializerFactory.h" #import "AWSMobileAnalyticsStringUtils.h" -#import "AZLogging.h" +#import "AWSLogging.h" #import static NSSet* RETRY_REQUEST_CODES = nil; @@ -30,7 +30,7 @@ @interface AWSMobileAnalyticsDefaultDeliveryClient() @property(nonatomic)id httpClient; -@property(nonatomic)id configuration; +@property(nonatomic)id configuration; @property(nonatomic)AWSMobileAnalyticsDeliveryPolicyFactory* factory; @property(nonatomic)AWSMobileAnalyticsERSRequestBuilder* builder; @property(nonatomic)NSOperationQueue* operationQueue; @@ -85,7 +85,7 @@ +(AWSMobileAnalyticsDefaultDeliveryClient*)deliveryClientWithContext:(id)client - withConfiguration:(id)configuration + withConfiguration:(id)configuration withLifeCycleManager:(id)lifeCycleManager withPolicyFactory:(AWSMobileAnalyticsDeliveryPolicyFactory*)factory withRequestBuilder:(AWSMobileAnalyticsERSRequestBuilder*)builder @@ -133,7 +133,7 @@ -(void) notify:(id) theEvent -(void) enqueueEventForDelivery:(id) theEvent { if(self.operationQueue.operationCount >= MAX_OPERATIONS) { - AZLogWarn(@"The event is being dropped because too many operations enqueued"); + AWSLogWarn(@"The event is being dropped because too many operations enqueued"); return; } @@ -141,23 +141,23 @@ -(void) enqueueEventForDelivery:(id) theEvent NSData* serializedEventData = [self.serializer writeObject:theEvent]; NSString* serializedEvent = [[NSString alloc] initWithData:serializedEventData encoding:NSUTF8StringEncoding]; - if([[AZLogger defaultLogger] logLevel] >= AZLogLevelDebug) + if([[AWSLogger defaultLogger] logLevel] >= AWSLogLevelDebug) { NSMutableString* output = [[NSMutableString alloc]init]; [output appendString:@"\n==========Batch Object==========\n"]; [output appendString:serializedEvent]; - AZLogDebug( @"%@", output); + AWSLogDebug( @"%@", output); } NSError* error = nil; [self.eventStore put:serializedEvent withError:&error]; if(error) { - AZLogError( @"event was not stored: %@", [error localizedDescription]); + AWSLogError( @"event was not stored: %@", [error localizedDescription]); } else { - AZLogInfo(@"Event: '%@' recorded to local filestore", [AWSMobileAnalyticsStringUtils clipString:theEvent.eventType toMaxChars:5 andAppendEllipses:YES]); + AWSLogInfo(@"Event: '%@' recorded to local filestore", [AWSMobileAnalyticsStringUtils clipString:theEvent.eventType toMaxChars:5 andAppendEllipses:YES]); } }]; } @@ -175,7 +175,7 @@ -(void) attemptDelivery -(void) attemptDeliveryUsingPolicies:(NSArray*)policies { if(self.operationQueue.operationCount >= MAX_OPERATIONS) { - AZLogWarn(@"Submission request being dropped because too many operations enqueued"); + AWSLogWarn(@"Submission request being dropped because too many operations enqueued"); return; } @@ -238,7 +238,7 @@ -(void) attemptDeliveryUsingPolicies:(NSArray*)policies NSTimeInterval totalTime = [[NSDate date] timeIntervalSinceDate:start]; - AZLogInfo( @"Time of attemptDelivery: %f", totalTime); + AWSLogInfo( @"Time of attemptDelivery: %f", totalTime); }]; } @@ -261,7 +261,7 @@ -(BOOL)submitEvents:(NSArray*)events andUpdatePolicies:(NSArray*)policies id request = [self.builder buildWithObjects:events]; if(!request) { - AZLogError( @"There was an error when building the http request"); + AWSLogError( @"There was an error when building the http request"); return submitted; } @@ -270,24 +270,24 @@ -(BOOL)submitEvents:(NSArray*)events andUpdatePolicies:(NSArray*)policies id response = [self.httpClient execute:request withRetries:requestRetries withTimeout:timeout]; if(!response) { - AZLogError( @"The http request returned a null http response"); + AWSLogError( @"The http request returned a null http response"); return submitted; } - AZLogVerbose( @"The http response code is %d", response.code); + AWSLogVerbose( @"The http response code is %d", response.code); if(response.code/100 == 2) { - AZLogInfo(@"Successful submission of %lu events. Response code:%d", (unsigned long)[events count], response.code); + AWSLogInfo(@"Successful submission of %lu events. Response code:%d", (unsigned long)[events count], response.code); submitted = YES; } else if(response.code/100 == 4 && ![RETRY_REQUEST_CODES containsObject:[NSNumber numberWithInt:response.code]]) { - AZLogError(@"Server rejected submission of %lu events.(Pending events will be removed from queue) Response code:%d, Error Message:%@", (unsigned long)[events count], response.code, response.error); + AWSLogError(@"Server rejected submission of %lu events.(Pending events will be removed from queue) Response code:%d, Error Message:%@", (unsigned long)[events count], response.code, response.error); submitted = YES; } else { - AZLogError(@"Unable to successfully deliver events to server. Response code: %d. Error Message:%@", response.code, response.error); + AWSLogError(@"Unable to successfully deliver events to server. Response code: %d. Error Message:%@", response.code, response.error); } // inform the policies that we've attempted a submission diff --git a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.m b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.m index 8f1adcc3e47..2c2b077a7c3 100644 --- a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.m +++ b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.m @@ -21,7 +21,7 @@ @interface AWSMobileAnalyticsDeliveryPolicyFactory() -@property(nonatomic)id configuration; +@property(nonatomic)id configuration; @property(nonatomic)id system; @property(nonatomic)id preferences; @property(nonatomic)BOOL isWANAllowed; @@ -33,7 +33,7 @@ @implementation AWSMobileAnalyticsDeliveryPolicyFactory +(AWSMobileAnalyticsDeliveryPolicyFactory*)factoryWithSystem:(id)system withPreferences:(id)preferences - withConfiguration:(id)configuration + withConfiguration:(id)configuration withAllowWanSubmission:(BOOL)allowWan { return [[AWSMobileAnalyticsDeliveryPolicyFactory alloc] initWithSystem:system @@ -43,7 +43,7 @@ +(AWSMobileAnalyticsDeliveryPolicyFactory*)factoryWithSystem:(id)system - withConfiguration:(id)configuration + withConfiguration:(id)configuration withPreferences:(id)preferences withAllowWanSubmission:(BOOL)allowWan { diff --git a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsERSRequestBuilder.m b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsERSRequestBuilder.m index 08f7592782e..9343704c983 100644 --- a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsERSRequestBuilder.m +++ b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsERSRequestBuilder.m @@ -27,7 +27,7 @@ /**************Request Factory****************/ @interface AWSMobileAnalyticsERSRequestBuilder() -@property(nonatomic)id configuration; +@property(nonatomic)id configuration; @property(nonatomic)id httpClient; @property(nonatomic)NSString* applicationKey; @property(nonatomic)NSString* uniqueId; @@ -35,7 +35,7 @@ @interface AWSMobileAnalyticsERSRequestBuilder() @implementation AWSMobileAnalyticsERSRequestBuilder -+(AWSMobileAnalyticsERSRequestBuilder *)builderWithConfiguration:(id)configuration ++(AWSMobileAnalyticsERSRequestBuilder *)builderWithConfiguration:(id)configuration withHttpClient:(id)httpClient withApplicationKey:(NSString*)applicationKey withUniqueId:(NSString*)uniqueId @@ -47,7 +47,7 @@ +(AWSMobileAnalyticsERSRequestBuilder *)builderWithConfiguration:(id)configuration +- (id)initWithConfiguration:(id)configuration withHttpClient:(id)httpClient withApplicationKey:(NSString *)applicationKey withUniqueId:(NSString*)uniqueId diff --git a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsFileEventStore.m b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsFileEventStore.m index ef5e0e4ef28..a356c1a33c7 100644 --- a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsFileEventStore.m +++ b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsFileEventStore.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsFileEventStore.h" -#import "AZLogging.h" +#import "AWSLogging.h" NSString * const AIEventsDirectoryName = @"events"; NSString * const AIEventsFilename = @"eventsFile"; @@ -31,7 +31,7 @@ +(AWSMobileAnalyticsFileEventStore *) fileStoreWithContext:(id) theContext NSAssert(theContext != nil, @"The context must not be nil"); if(theContext == nil) { - AZLogError( @"The context must not be nil."); + AWSLogError( @"The context must not be nil."); return nil; } self.context = theContext; @@ -59,7 +59,7 @@ -(id) initWithContext:(id) theContext NSAssert(error == nil, @"There should not be an error when creating the events directory. Error: %@", [error localizedDescription]); if(error != nil || eventsDirectory == nil || ![eventsDirectory exists]) { - AZLogError( @"Unable to create events directory - An error occurred while attempting to create the events directory. Error: %@", [error localizedDescription]); + AWSLogError( @"Unable to create events directory - An error occurred while attempting to create the events directory. Error: %@", [error localizedDescription]); return nil; } @@ -68,7 +68,7 @@ -(id) initWithContext:(id) theContext NSAssert(error == nil, @"There should not be an error when creating the events file. Error: %@", [error localizedDescription]); if(error != nil || self.eventsFile == nil || ![self.eventsFile exists]) { - AZLogError( @"Unable to open events file - An error occurred while attempting to create/open the events file. Error: %@", [error localizedDescription]); + AWSLogError( @"Unable to open events file - An error occurred while attempting to create/open the events file. Error: %@", [error localizedDescription]); return nil; } @@ -93,7 +93,7 @@ -(BOOL) put:(NSString *) theEvent withError:(NSError **) theError [self tryInitializeWriter:&writer error:&error]; if(error != nil || writer == nil) { - AZLogError( @"Unable to write event to file - There was an error while attempting to create the writer. Error: %@", [error localizedDescription]); + AWSLogError( @"Unable to write event to file - There was an error while attempting to create the writer. Error: %@", [error localizedDescription]); [AWSMobileAnalyticsErrorUtils safeSetError:theError withError:error]; return NO; } @@ -104,12 +104,12 @@ -(BOOL) put:(NSString *) theEvent withError:(NSError **) theError } else { - AZLogError( @"The events file exceeded its allowed size of %d bytes.", maxStorageSize); + AWSLogError( @"The events file exceeded its allowed size of %d bytes.", maxStorageSize); } if(error != nil) { - AZLogError( @"Unable to write event to file - There was an error while attempting to write to the writer. Error: %@", [error localizedDescription]); + AWSLogError( @"Unable to write event to file - There was an error while attempting to write to the writer. Error: %@", [error localizedDescription]); } [writer close]; } @@ -155,7 +155,7 @@ -(AWSMobileAnalyticsFile *) deleteReadEvents:(int) theLineNumber AWSMobileAnalyticsFile *tempEventsFile = [fileManager createFileWithPath:[self.eventsFileName stringByAppendingString:@".tmp"] error:&error]; if(error != nil || tempEventsFile == nil || ![tempEventsFile exists]) { - AZLogError( @"There was an error while attempting to create temporary events file. Error: %@", [error localizedDescription]); + AWSLogError( @"There was an error while attempting to create temporary events file. Error: %@", [error localizedDescription]); return self.eventsFile; } @@ -197,12 +197,12 @@ -(AWSMobileAnalyticsFile *) deleteReadEvents:(int) theLineNumber } else { - AZLogError( @"Failed to rename temp file to events file"); + AWSLogError( @"Failed to rename temp file to events file"); } } else { - AZLogError( @"Failed to delete previous events file"); + AWSLogError( @"Failed to delete previous events file"); } } else @@ -211,7 +211,7 @@ -(AWSMobileAnalyticsFile *) deleteReadEvents:(int) theLineNumber { if(![tempEventsFile deleteFile]) { - AZLogError( @"Failed to delete the empty temp events file"); + AWSLogError( @"Failed to delete the empty temp events file"); } } } @@ -252,7 +252,7 @@ -(BOOL) tryOpenReader if(error != nil || inputStream == nil) { - AZLogError( @"There was an error while attempting to create output stream to event file. Error: %@", [error localizedDescription]); + AWSLogError( @"There was an error while attempting to create output stream to event file. Error: %@", [error localizedDescription]); return NO; } diff --git a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsSubmissionTimePolicy.m b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsSubmissionTimePolicy.m index 19a1e841fff..d95c0901293 100644 --- a/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsSubmissionTimePolicy.m +++ b/AWSCore/MobileAnalytics/delivery/AWSMobileAnalyticsSubmissionTimePolicy.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsSubmissionTimePolicy.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const SUBMITTED_TIME_KEY = @"AWSMobileAnalyticsSubmissionTimePolicy.submissionTime"; @interface AWSMobileAnalyticsSubmissionTimePolicy() @@ -49,7 +49,7 @@ -(BOOL)isAllowed NSTimeInterval timeSinceLastSubmission = [[NSDate date] timeIntervalSince1970] - self.lastSubmittedTime; if (!(timeSinceLastSubmission > self.waitInterval)) { - AZLogWarn(@"Submission request being dropped because it has been submitted too frequently, please try again in %.f seconds.",self.waitInterval - timeSinceLastSubmission); + AWSLogWarn(@"Submission request being dropped because it has been submitted too frequently, please try again in %.f seconds.",self.waitInterval - timeSinceLastSubmission); } return timeSinceLastSubmission > self.waitInterval; } diff --git a/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsDefaultEventClient.m b/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsDefaultEventClient.m index 5daf702d6c3..71aded36ec3 100644 --- a/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsDefaultEventClient.m +++ b/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsDefaultEventClient.m @@ -15,7 +15,7 @@ #import "AWSMobileAnalyticsDefaultEventClient.h" #import "AWSMobileAnalyticsDefaultEvent.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const EVENT_SCHEMA_VERSION = @"v2.0"; static NSString* const ANALYTICS_ENABLED = @"isAnalyticsEnabled"; @@ -81,7 +81,7 @@ -(void) recordEvent:(id)theEvent -(void) submitEvents { - AZLogVerbose( @"Notifying delivery client of submission request."); + AWSLogVerbose( @"Notifying delivery client of submission request."); [self.deliveryClient attemptDelivery]; } @@ -97,7 +97,7 @@ -(void) submitEvents { if (theEventType == nil) { - AZLogWarn( @"Nil event type provided to createInternalEvent"); + AWSLogWarn( @"Nil event type provided to createInternalEvent"); return nil; } return [AWSMobileAnalyticsDefaultEvent defaultEventWithInsightsContext:self.context withEventTimestamp:theTimestamp withEventType:theEventType]; @@ -109,7 +109,7 @@ -(void) recordEvent:(id) theEvent //- Argument Checks ---------------------------------------------= if (theEvent == nil) { - AZLogInfo( @"Nil event provided to recordEvent"); + AWSLogInfo( @"Nil event provided to recordEvent"); return; } @@ -177,10 +177,10 @@ -(void) recordEvent:(id) theEvent -(void) notifyObserversForInternalEvent:(id) theEvent { - AZLogVerbose( @"Notifying AWSMobileAnalyticsEventObservers"); - if([[AZLogger defaultLogger] logLevel] >= AZLogLevelVerbose) + AWSLogVerbose( @"Notifying AWSMobileAnalyticsEventObservers"); + if([[AWSLogger defaultLogger] logLevel] >= AWSLogLevelVerbose) { - AZLogVerbose( @"%@", theEvent); + AWSLogVerbose( @"%@", theEvent); } for (id observer in self.eventObservers) @@ -194,12 +194,12 @@ -(void) addGlobalAttribute:(NSString*) theValue { if (theValue == nil) { - AZLogVerbose( @"Nil value provided to addGlobalAttribute"); + AWSLogVerbose( @"Nil value provided to addGlobalAttribute"); return; } if (theKey == nil) { - AZLogVerbose( @"Nil key provided to addGlobalAttribute"); + AWSLogVerbose( @"Nil key provided to addGlobalAttribute"); return; } @@ -215,17 +215,17 @@ -(void) addGlobalAttribute:(NSString*) theValue { if (theEventType == nil) { - AZLogVerbose( @"Nil event type passed into addGlobalAttribute"); + AWSLogVerbose( @"Nil event type passed into addGlobalAttribute"); return; } if (theKey == nil) { - AZLogVerbose( @"Nil key passed into addGlobalAttribute"); + AWSLogVerbose( @"Nil key passed into addGlobalAttribute"); return; } if (theValue == nil) { - AZLogVerbose( @"Nil value passed into addGlobalAttribute"); + AWSLogVerbose( @"Nil value passed into addGlobalAttribute"); return; } @@ -244,12 +244,12 @@ -(void) addGlobalMetric:(NSNumber*) theValue { if (theValue == nil) { - AZLogVerbose( @"Nil value provided to addGlobalMetric"); + AWSLogVerbose( @"Nil value provided to addGlobalMetric"); return; } if (theKey == nil) { - AZLogVerbose( @"Nil key provided to addGlobalMetric"); + AWSLogVerbose( @"Nil key provided to addGlobalMetric"); return; } @@ -265,17 +265,17 @@ -(void) addGlobalMetric:(NSNumber*) theValue { if (theEventType == nil) { - AZLogVerbose( @"Nil event type passed into addGlobalMetric"); + AWSLogVerbose( @"Nil event type passed into addGlobalMetric"); return; } if (theKey == nil) { - AZLogVerbose( @"Nil key passed into addGlobalMetric"); + AWSLogVerbose( @"Nil key passed into addGlobalMetric"); return; } if (theValue == nil) { - AZLogVerbose( @"Nil value passed into addGlobalMetric"); + AWSLogVerbose( @"Nil value passed into addGlobalMetric"); return; } @@ -294,7 +294,7 @@ -(void) addEventObserver:(id) theObserver { if (theObserver == nil) { - AZLogVerbose( @"Nil observer passed to addEventObserver"); + AWSLogVerbose( @"Nil observer passed to addEventObserver"); return; } @@ -308,7 +308,7 @@ -(void) removeEventObserver:(id) theObserver { if (theObserver == nil) { - AZLogVerbose( @"Nil observer passed to removeEventObserver"); + AWSLogVerbose( @"Nil observer passed to removeEventObserver"); return; } @@ -319,7 +319,7 @@ -(void) removeGlobalAttributeForKey:(NSString*) theKey { if (theKey == nil) { - AZLogVerbose( @"Nil key provided to removeGlobalAttributeForKey"); + AWSLogVerbose( @"Nil key provided to removeGlobalAttributeForKey"); return; } @@ -334,12 +334,12 @@ -(void) removeGlobalAttributeForKey:(NSString*) theKey { if (theEventType == nil) { - AZLogVerbose( @"Nil event type passed into removeGlobalAttributeForKey"); + AWSLogVerbose( @"Nil event type passed into removeGlobalAttributeForKey"); return; } if (theKey == nil) { - AZLogVerbose( @"Nil key passed into removeGlobalAttribute"); + AWSLogVerbose( @"Nil key passed into removeGlobalAttribute"); return; } @@ -356,7 +356,7 @@ -(void) removeGlobalMetricForKey:(NSString*) theKey { if (theKey == nil) { - AZLogVerbose( @"Nil key provided to removeGlobalMetric"); + AWSLogVerbose( @"Nil key provided to removeGlobalMetric"); return; } @@ -372,12 +372,12 @@ -(void) removeGlobalMetricForKey:(NSString*) theKey { if (theEventType == nil) { - AZLogVerbose( @"Nil event type passed into removeGlobalMetric"); + AWSLogVerbose( @"Nil event type passed into removeGlobalMetric"); return; } if (theKey == nil) { - AZLogVerbose( @"Nil key passed into removeGlobalMetric"); + AWSLogVerbose( @"Nil key passed into removeGlobalMetric"); return; } diff --git a/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsEventConstraintDecorator.m b/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsEventConstraintDecorator.m index 47b95b03046..8c2adffc557 100644 --- a/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsEventConstraintDecorator.m +++ b/AWSCore/MobileAnalytics/event/AWSMobileAnalyticsEventConstraintDecorator.m @@ -15,7 +15,7 @@ #import "AWSMobileAnalyticsEventConstraintDecorator.h" #import "AWSMobileAnalyticsStringUtils.h" -#import "AZLogging.h" +#import "AWSLogging.h" static int const MAX_NUM_OF_METRICS_AND_ATTRIBUTES = 40; //changed from 20 to 40 to parity with Android SDK static int const MAX_EVENT_ATTRIBUTE_METRIC_KEY_LENGTH = 50; @@ -122,7 +122,7 @@ + (NSString*) trimKey:(NSString*)theKey NSString* trimmedKey = [AWSMobileAnalyticsStringUtils clipString:theKey toMaxChars:MAX_EVENT_ATTRIBUTE_METRIC_KEY_LENGTH andAppendEllipses:NO]; if(trimmedKey.length < theKey.length) { - AZLogWarn(@"The %@ key has been trimmed to a length of %0d characters", theType, MAX_EVENT_ATTRIBUTE_METRIC_KEY_LENGTH); + AWSLogWarn(@"The %@ key has been trimmed to a length of %0d characters", theType, MAX_EVENT_ATTRIBUTE_METRIC_KEY_LENGTH); } return trimmedKey; @@ -133,7 +133,7 @@ + (NSString*) trimValue:(NSString*)theValue NSString* trimmedValue = [AWSMobileAnalyticsStringUtils clipString:theValue toMaxChars:MAX_EVENT_ATTRIBUTE_VALUE_LENGTH andAppendEllipses:NO]; if(trimmedValue.length < theValue.length) { - AZLogWarn( @"The attribute value has been trimmed to a length of %0d characters", MAX_EVENT_ATTRIBUTE_VALUE_LENGTH); + AWSLogWarn( @"The attribute value has been trimmed to a length of %0d characters", MAX_EVENT_ATTRIBUTE_VALUE_LENGTH); } return trimmedValue; diff --git a/AWSCore/MobileAnalytics/include/AWSMobileAnalytics.h b/AWSCore/MobileAnalytics/include/AWSMobileAnalytics.h index 4e66f0b0a2f..12ee6c37106 100644 --- a/AWSCore/MobileAnalytics/include/AWSMobileAnalytics.h +++ b/AWSCore/MobileAnalytics/include/AWSMobileAnalytics.h @@ -18,38 +18,40 @@ #import "AWSMobileAnalyticsEventClient.h" #import "AWSCore.h" -#import "AWSMobileAnalyticsClientConfiguration.h" +#import "AWSMobileAnalyticsConfiguration.h" @class AWSMobileAnalytics; -@class AWSMobileAnalyticsClientConfiguration; -@protocol AZCredentialProvider; -typedef void(^AIInitializationCompletionBlock)(AWSMobileAnalytics *); +@class AWSServiceConfiguration; +@class AWSMobileAnalyticsConfiguration; + +typedef void(^AWSInitializationCompletionBlock)(AWSMobileAnalytics *); @interface AWSMobileAnalytics : NSObject /** - * Return the AWSMobileAnalyticsEventClient - * @returns the AWSMobileAnalyticsEventClient to create, record, and submit events + * Returns the `AWSMobileAnalyticsEventClient`. + * @returns the `AWSMobileAnalyticsEventClient` to create, record, and submit events. */ @property (nonatomic, readonly) id eventClient; - /** - * Create an AWSMobileAnalytics instance with the specified identifier using provided eventRecorderService instance. - * @param appNamespace A UUID(universally unique identifier) provided by user for multi-tenancy purpose. - * @param completionBlock A AIInitializationCompletionBlock that allows developers to handle custom logic after initialization but before the session begins. - * @returns The AWSMobileAnalytics instance with the specified identifier, or nil if eventRecorderService does not exist or theIdentifier is empty. + * Creates an `AWSMobileAnalytics` instance with the specified `appId` using the default `configuration` if the instance does not already exists for the `appId`. If an instance exists for the given `appId`, returns the existing instance. `configuration` and `completionBlock` are ignored if an instance exists for the given `appId`. The strong reference to the instance is maintained by `AWSMobileAnalytics`, and the developer does not need to retain it manually. + * + * @param appId An appId used to distinguish multiple instances of AWSMobileAnalytics. + * @returns The AWSMobileAnalytics instance with the specified appId or nil if serviceConfiguration is invalid or appId is empty. */ -+(AWSMobileAnalytics *) mobileAnalyticsWithEventRecorderService:(AWSEventRecorderService *)eventRecorderService - appNamespace:(NSString *)appNamespace - completionBlock:(AIInitializationCompletionBlock)completionBlock; - ++ (instancetype)mobileAnalyticsForAppId:(NSString *)appId; /** - * Create an AWSMobileAnalytics instance with the specified identifier using defaultServiceConfiguration. - * @param appNamespace A UUID(universally unique identifier) provided by user for multi-tenancy purpose. - * @returns The AWSMobileAnalytics instance with the specified identifier, or nil if defaultServiceConfiguration does not exist or theIdentifier is empty. + * Creates an `AWSMobileAnalytics` instance with the specified `appId` using provided `configuration` if the instance does not already exists for the `appId`. If an instance exists for the given `appId`, returns the existing instance. `configuration` and `completionBlock` are ignored if an instance exists for the given `appId`. The strong reference to the instance is maintained by `AWSMobileAnalytics`, and the developer does not need to retain it manually. + * + * @param appId An appId used to distinguish multiple instances of AWSMobileAnalytics. + * @param configuration A configuraiton object. By default, it uses [AWSServiceManager defaultServiceManager].defaultServiceConfiguration to access the service. + * @param completionBlock A AWSInitializationCompletionBlock that allows developers to handle custom logic after initialization but before the session begins. + * @returns The AWSMobileAnalytics instance with the specified appId or nil if serviceConfiguration is invalid or appId is empty. */ -+(instancetype) defaultMobileAnalyticsWithAppNamespace:(NSString *)appNamespace; ++ (instancetype)mobileAnalyticsForAppId:(NSString *)appId + configuration:(AWSMobileAnalyticsConfiguration *)configuration + completionBlock:(AWSInitializationCompletionBlock)completionBlock; @end diff --git a/AWSCore/MobileAnalytics/include/AWSMobileAnalyticsEventClient.h b/AWSCore/MobileAnalytics/include/AWSMobileAnalyticsEventClient.h index 2347b6769ab..0ebe8d67246 100644 --- a/AWSCore/MobileAnalytics/include/AWSMobileAnalyticsEventClient.h +++ b/AWSCore/MobileAnalytics/include/AWSMobileAnalyticsEventClient.h @@ -71,8 +71,8 @@ * @param theKey the name of the attribute to add */ @required --(void) addGlobalAttribute:(NSString *) theValue - forKey:(NSString *) theKey; +- (void)addGlobalAttribute:(NSString *)theValue + forKey:(NSString *)theKey; /** * Adds the specified attribute to all subsequent recorded events with the specified event type. @@ -81,9 +81,9 @@ * @param theEventType the type of events to add the attribute to */ @required --(void) addGlobalAttribute:(NSString *) theValue - forKey:(NSString *) theKey - forEventType:(NSString *) theEventType; +- (void)addGlobalAttribute:(NSString *)theValue + forKey:(NSString *)theKey + forEventType:(NSString *)theEventType; /** * Adds the specified metric to all subsequent recorded events. @@ -91,8 +91,8 @@ * @param theKey the name of the metric to add */ @required --(void) addGlobalMetric:(NSNumber *) theValue - forKey:(NSString *) theKey; +- (void)addGlobalMetric:(NSNumber *)theValue + forKey:(NSString *)theKey; /** * Adds the specified metric to all subsequent recorded events with the specified event type. @@ -101,16 +101,16 @@ * @param theEventType the type of events to add the metric to */ @required --(void) addGlobalMetric:(NSNumber *) theValue - forKey:(NSString *) theKey - forEventType:(NSString *) theEventType; +- (void)addGlobalMetric:(NSNumber *)theValue + forKey:(NSString *)theKey + forEventType:(NSString *)theEventType; /** * Removes the specified attribute. All subsequent recorded events will no longer have this global attribute. * @param theKey the key of the attribute to remove */ @required --(void) removeGlobalAttributeForKey:(NSString*) theKey; +- (void)removeGlobalAttributeForKey:(NSString*) theKey; /** * Removes the specified attribute. All subsequent recorded events with the specified event type will no longer have this global attribute. @@ -118,7 +118,7 @@ * @param theEventType the type of events to remove the attribute from */ @required --(void) removeGlobalAttributeForKey:(NSString*) theKey +- (void)removeGlobalAttributeForKey:(NSString*) theKey forEventType:(NSString*) theEventType; /** @@ -126,7 +126,7 @@ * @param theKey the key of the metric to remove */ @required --(void) removeGlobalMetricForKey:(NSString*) theKey; +- (void)removeGlobalMetricForKey:(NSString*) theKey; /** * Removes the specified metric. All subsequent recorded events with the specified event type will no longer have this global metric. @@ -134,7 +134,7 @@ * @param theEventType the type of events to remove the metric from */ @required --(void) removeGlobalMetricForKey:(NSString*) theKey +- (void)removeGlobalMetricForKey:(NSString*) theKey forEventType:(NSString*) theEventType; /** @@ -142,7 +142,7 @@ * @param theEvent The AWSMobileAnalyticsEvent to persist */ @required --(void) recordEvent:(id)theEvent; +- (void)recordEvent:(id)theEvent; /** * Create an AWSMobileAnalyticsEvent with the specified theEventType @@ -150,7 +150,7 @@ * @returns an AWSMobileAnalyticsEvent with the specified event type */ @required --(id) createEventWithEventType:(NSString *) theEventType; +- (id)createEventWithEventType:(NSString *)theEventType; /** * Submits all recorded events to the Mobile Analytics Website. If you try to submit @@ -159,6 +159,6 @@ * are automatically submitted when the application goes into the background. */ @required --(void) submitEvents; +- (void)submitEvents; @end diff --git a/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsContext.h b/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsContext.h index ca5de94d1df..6e546a87f2b 100644 --- a/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsContext.h +++ b/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsContext.h @@ -14,7 +14,7 @@ */ #import -#import "configuration/AWSMobileAnalyticsConfiguration.h" +#import "configuration/AWSMobileAnalyticsConfiguring.h" #import "../delivery/AWSMobileAnalyticsDeliveryClient.h" #import "http/AWSMobileAnalyticsHttpClient.h" #import "util/AWSMobileAnalyticsSDKInfo.h" @@ -33,7 +33,7 @@ @property (nonatomic, retain, readonly) id clientContext; @required -@property (nonatomic, retain, readonly) id configuration; +@property (nonatomic, retain, readonly) id configuration; @required @property (nonatomic, retain, readonly) NSString* uniqueId; diff --git a/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsDefaultContext.h b/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsDefaultContext.h index 3362d60785f..f4ff27e69fe 100644 --- a/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsDefaultContext.h +++ b/AWSCore/MobileAnalytics/include/core/AWSMobileAnalyticsDefaultContext.h @@ -21,25 +21,25 @@ #import "http/AWSMobileAnalyticsClientContextInterceptor.h" #import "http/AWSMobileAnalyticsInstanceIdInterceptor.h" -@class AWSMobileAnalyticsClientConfiguration; +@class AWSMobileAnalyticsConfiguration; @interface AWSMobileAnalyticsDefaultContext : NSObject -+(id) contextWithIdentifier:(NSString*) theCredentials - withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo - withConfigurationSettings:(NSDictionary*)settings; ++ (id)contextWithIdentifier:(NSString*) theCredentials + withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo + withConfigurationSettings:(NSDictionary*)settings; -+(id) contextWithIdentifier:(NSString*) theCredentials - withClientConfiguration:(AWSMobileAnalyticsClientConfiguration *)clientConfiguration - withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo - withConfigurationSettings:(NSDictionary*)settings; ++ (id)contextWithIdentifier:(NSString*) theCredentials + withClientConfiguration:(AWSMobileAnalyticsConfiguration *)clientConfiguration + withSdkInfo:(AWSMobileAnalyticsSDKInfo*)sdkInfo + withConfigurationSettings:(NSDictionary*)settings; @property (nonatomic, retain, readonly) NSString* identifier; @property (nonatomic, retain, readonly) id clientContext; -@property (nonatomic, retain, readonly) id configuration; +@property (nonatomic, retain, readonly) id configuration; @property (nonatomic, retain, readonly) NSString* uniqueId; diff --git a/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsConfiguration.h b/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsConfiguring.h similarity index 97% rename from AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsConfiguration.h rename to AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsConfiguring.h index 0f59e7fa7a8..191c37fbf15 100644 --- a/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsConfiguration.h +++ b/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsConfiguring.h @@ -15,7 +15,7 @@ #import -@protocol AWSMobileAnalyticsConfiguration +@protocol AWSMobileAnalyticsConfiguring //@required //- (BOOL) boolForKey: (NSString*) key; diff --git a/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.h b/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.h index a2fefe9970e..48edc3890dc 100644 --- a/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.h +++ b/AWSCore/MobileAnalytics/include/core/configuration/AWSMobileAnalyticsHttpCachingConfiguration.h @@ -14,7 +14,7 @@ */ #import -#import "AWSMobileAnalyticsConfiguration.h" +#import "AWSMobileAnalyticsConfiguring.h" #import "../system/AWSMobileAnalyticsFileManager.h" @protocol AWSMobileAnalyticsHttpClient; @@ -23,7 +23,7 @@ FOUNDATION_EXPORT NSString * const AIConfigurationFileStoreFilename; -@interface AWSMobileAnalyticsHttpCachingConfiguration : NSObject +@interface AWSMobileAnalyticsHttpCachingConfiguration : NSObject +(AWSMobileAnalyticsHttpCachingConfiguration*)configurationWithContext:(id)context withFileManager:(id)fileManager withOverrideSettings:(NSDictionary*)overrideSettings diff --git a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsConnectivityPolicy.h b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsConnectivityPolicy.h index 6a211708a62..4770d7c4bca 100644 --- a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsConnectivityPolicy.h +++ b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsConnectivityPolicy.h @@ -20,7 +20,7 @@ @interface AWSMobileAnalyticsConnectivityPolicy : NSObject +(AWSMobileAnalyticsConnectivityPolicy*)policyWithConnectivity:(id)connectivity - withConfiguration:(id)configuration + withConfiguration:(id)configuration withAllowWan:(BOOL)allowWan; -(BOOL)isAllowed; diff --git a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDefaultDeliveryClient.h b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDefaultDeliveryClient.h index d775e70ebb5..ebde9ce17c0 100644 --- a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDefaultDeliveryClient.h +++ b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDefaultDeliveryClient.h @@ -33,7 +33,7 @@ withOperationQueue:(NSOperationQueue*)operationQueue; -(id)initWithHttpClient:(id)client - withConfiguration:(id)configuration + withConfiguration:(id)configuration withLifeCycleManager:(id)lifeCycleManager withPolicyFactory:(AWSMobileAnalyticsDeliveryPolicyFactory*)factory withRequestBuilder:(AWSMobileAnalyticsERSRequestBuilder*)builder diff --git a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.h b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.h index b8d6265585d..dbd515c8622 100644 --- a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.h +++ b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsDeliveryPolicyFactory.h @@ -21,7 +21,7 @@ +(AWSMobileAnalyticsDeliveryPolicyFactory*)factoryWithSystem:(id)system withPreferences:(id)preferences - withConfiguration:(id)configuration + withConfiguration:(id)configuration withAllowWanSubmission:(BOOL)allowWan; -(id) createConnectivityPolicy; diff --git a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsERSRequestBuilder.h b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsERSRequestBuilder.h index e2624ed1fad..2480c4abf1d 100644 --- a/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsERSRequestBuilder.h +++ b/AWSCore/MobileAnalytics/include/delivery/AWSMobileAnalyticsERSRequestBuilder.h @@ -18,7 +18,7 @@ #import "../core/AWSMobileAnalyticsContext.h" @interface AWSMobileAnalyticsERSRequestBuilder : NSObject -+(AWSMobileAnalyticsERSRequestBuilder *)builderWithConfiguration:(id)configuration ++(AWSMobileAnalyticsERSRequestBuilder *)builderWithConfiguration:(id)configuration withHttpClient:(id)httpClient withApplicationKey:(NSString*)applicationKey withUniqueId:(NSString*)uniqueId; diff --git a/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsAppleMonetizationEventBuilder.m b/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsAppleMonetizationEventBuilder.m index e41c4dce079..311c5a6e293 100644 --- a/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsAppleMonetizationEventBuilder.m +++ b/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsAppleMonetizationEventBuilder.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsAppleMonetizationEventBuilder.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const APPLE_STORE = @"Apple"; @@ -64,22 +64,22 @@ -(void)withTransactionId:(NSString *)theTransactionId{ -(BOOL)isValid{ if([self productId] == nil){ - AZLogError(@"Apple Monetization event is not valid: it requires the product id"); + AWSLogError(@"Apple Monetization event is not valid: it requires the product id"); return false; } if([self transactionId] == nil){ - AZLogError(@"Apple Monetization event is not valid: it requires the transaction id"); + AWSLogError(@"Apple Monetization event is not valid: it requires the transaction id"); return false; } if(self.isItemPriceSet != YES){ - AZLogError(@"Apple Monetization event is not valid: it requires the item price and locale"); + AWSLogError(@"Apple Monetization event is not valid: it requires the item price and locale"); return false; } if(self.isQuantitySet != YES){ - AZLogError(@"Apple Monetization event is not valid: it requires the quantity"); + AWSLogError(@"Apple Monetization event is not valid: it requires the quantity"); return false; } diff --git a/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsMonetizationEventBuilder.m b/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsMonetizationEventBuilder.m index f3ceb310a1c..faf8328bb1e 100644 --- a/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsMonetizationEventBuilder.m +++ b/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsMonetizationEventBuilder.m @@ -15,7 +15,7 @@ #import "AWSMobileAnalyticsStringUtils.h" #import "AWSMobileAnalyticsMonetizationEventBuilder.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const PURCHASE_EVENT_NAME = @"_monetization.purchase"; @@ -75,7 +75,7 @@ @implementation AWSMobileAnalyticsMonetizationEventBuilder{ } -(BOOL) isValid{ - AZLogWarn(@"You are required to override the isValid method of the monetization event builder"); + AWSLogWarn(@"You are required to override the isValid method of the monetization event builder"); return false; } @@ -147,28 +147,28 @@ -(void)setStore:(NSString *)theStore{ -(BOOL)doBaseValidation{ if (eventClient == nil) { - AZLogError(@"Cannot build Monetization event: the eventClient is null"); + AWSLogError(@"Cannot build Monetization event: the eventClient is null"); return false; } if ([AWSMobileAnalyticsStringUtils isBlank:productId]) { - AZLogError(@"Base Monetization event is not valid: it is missing the product id"); + AWSLogError(@"Base Monetization event is not valid: it is missing the product id"); return false; } if (!isQuantitySet) { - AZLogError(@"Base Monetization event is not valid: it is missing the quantity"); + AWSLogError(@"Base Monetization event is not valid: it is missing the quantity"); return false; } if ([AWSMobileAnalyticsStringUtils isBlank:store]) { - AZLogError(@"Base Monetization event is not valid: it is missing the store"); + AWSLogError(@"Base Monetization event is not valid: it is missing the store"); return false; } if ([AWSMobileAnalyticsStringUtils isBlank:currency] || !isItemPriceSet) { if([AWSMobileAnalyticsStringUtils isBlank:formattedItemPrice]){ - AZLogError(@"Base Monetization event is not valid: it requires the formatted price or the currency and price"); + AWSLogError(@"Base Monetization event is not valid: it requires the formatted price or the currency and price"); return false; } } diff --git a/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsVirtualMonetizationEventBuilder.m b/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsVirtualMonetizationEventBuilder.m index 40a9b18ede5..739936393a6 100644 --- a/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsVirtualMonetizationEventBuilder.m +++ b/AWSCore/MobileAnalytics/monetization/AWSMobileAnalyticsVirtualMonetizationEventBuilder.m @@ -14,7 +14,7 @@ */ #import "AWSMobileAnalyticsVirtualMonetizationEventBuilder.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const VIRTUAL_STORE = @"Virtual"; @@ -53,22 +53,22 @@ -(void)withCurrency:(NSString *)theCurrency{ -(BOOL)isValid{ if([self productId] == nil){ - AZLogError(@"Virtual Monetization event is not valid: it requires the product id"); + AWSLogError(@"Virtual Monetization event is not valid: it requires the product id"); return false; } if(!self.isQuantitySet){ - AZLogError(@"Virtual Monetization event is not valid: it is missing the quantity"); + AWSLogError(@"Virtual Monetization event is not valid: it is missing the quantity"); return false; } if(!self.isItemPriceSet){ - AZLogError(@"Virtual Monetization event is not valid: it is missing the numerical price"); + AWSLogError(@"Virtual Monetization event is not valid: it is missing the numerical price"); return false; } if ([self currency] == nil){ - AZLogError(@"Virtual Monetization event is not valid: it requires the currency"); + AWSLogError(@"Virtual Monetization event is not valid: it requires the currency"); return false; } diff --git a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsActiveSessionState.m b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsActiveSessionState.m index 265217d2581..d9353933c4f 100644 --- a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsActiveSessionState.m +++ b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsActiveSessionState.m @@ -16,12 +16,12 @@ #import "AWSMobileAnalyticsActiveSessionState.h" #import "AWSMobileAnalyticsDefaultSessionClient+SessionState.h" #import "AWSMobileAnalyticsSession.h" -#import "AZLogging.h" +#import "AWSLogging.h" @implementation AWSMobileAnalyticsActiveSessionState -(void)resumeWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session Resume Failed: Session is already running."); + AWSLogVerbose( @"Session Resume Failed: Session is already running."); } -(void)pauseWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ @@ -36,7 +36,7 @@ -(void)startWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionC [sessionClient startNewSession]; [sessionClient changeState:SESSION_STATE_ACTIVE]; }else{ - AZLogVerbose( @"Session Start Failed: Previous session was started too recently."); + AWSLogVerbose( @"Session Start Failed: Previous session was started too recently."); } } @@ -46,11 +46,11 @@ -(void)stopWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionCl } -(void)enterStateWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session State: Entering Active State."); + AWSLogVerbose( @"Session State: Entering Active State."); } -(void)exitStateWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session State: Exiting Active State."); + AWSLogVerbose( @"Session State: Exiting Active State."); } @end diff --git a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsDefaultSessionClient.m b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsDefaultSessionClient.m index 6cad58b8bee..af99d016898 100644 --- a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsDefaultSessionClient.m +++ b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsDefaultSessionClient.m @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -#import "AZCategory.h" +#import "AWSCategory.h" #import "AWSMobileAnalyticsDefaultSessionClient.h" #import "AWSMobileAnalyticsSession.h" #import "AWSMobileAnalyticsContext.h" @@ -24,7 +24,7 @@ #import "AWSMobileAnalyticsPausedSessionState.h" #import "AWSMobileAnalyticsSessionClientState.h" #import "AWSMobileAnalyticsDelayedBlock.h" -#import "AZLogging.h" +#import "AWSLogging.h" //Event Type Constants --------------------------- NSString *const SESSION_START_EVENT_TYPE = @"_session.start"; @@ -182,7 +182,7 @@ -(void)startNewSession{ // Generate new session object self.session = [AWSMobileAnalyticsSession sessionWithContext:self.context]; - AZLogVerbose( @"Firing Session Event: Start"); + AWSLogVerbose( @"Firing Session Event: Start"); // Prepare Event Tagging [self.eventClient addGlobalAttribute:[self.session sessionId] forKey:SESSION_ID_ATTRIBUTE_KEY]; @@ -190,7 +190,7 @@ -(void)startNewSession{ //latest ERS Server's API Change, SessionStartTime need to be included in every request - NSString* sessionStartTimeString = [self.session.startTime az_stringValue:AZDateISO8601DateFormat3]; + NSString* sessionStartTimeString = [self.session.startTime aws_stringValue:AWSDateISO8601DateFormat3]; [self.eventClient addGlobalAttribute:sessionStartTimeString forKey:SESSION_START_TIME_ATTRIBUTE_KEY]; // Fire Session start Event @@ -198,7 +198,7 @@ -(void)startNewSession{ id startEvent = [self.eventClient createInternalEvent:SESSION_START_EVENT_TYPE]; [self.eventClient recordEvent:startEvent andApplyGlobalAttributes:YES]; - AZLogInfo( "Session Started."); + AWSLogInfo( "Session Started."); } -(void)endCurrentSession{ @@ -207,9 +207,9 @@ -(void)endCurrentSession{ } // Fire Session stop Event - AZLogVerbose( @"Firing Session Event: Stop"); - NSString* sessionStartTimeString = [self.session.startTime az_stringValue:AZDateISO8601DateFormat3]; - NSString* sessionStopTimeString = [self.session.stopTime az_stringValue:AZDateISO8601DateFormat3]; + AWSLogVerbose( @"Firing Session Event: Stop"); + NSString* sessionStartTimeString = [self.session.startTime aws_stringValue:AWSDateISO8601DateFormat3]; + NSString* sessionStopTimeString = [self.session.stopTime aws_stringValue:AWSDateISO8601DateFormat3]; id stopEvent = [self.eventClient createInternalEvent:SESSION_STOP_EVENT_TYPE]; [stopEvent addMetric:[NSNumber numberWithUnsignedLongLong:[self.session timeDurationInMillis]] forKey:SESSION_DURATION_METRIC_KEY]; [stopEvent addAttribute:self.session.sessionId forKey:SESSION_ID_ATTRIBUTE_KEY]; @@ -222,27 +222,27 @@ -(void)endCurrentSession{ // Kill current session object self.session = nil; - AZLogInfo( "Session Stopped."); + AWSLogInfo( "Session Stopped."); [self.deliveryClient forceDeliveryAndWaitForCompletion:NO]; } -(void)pauseCurrentSession{ [self.session pause]; - AZLogVerbose( @"Firing Session Event: Pause"); + AWSLogVerbose( @"Firing Session Event: Pause"); id pauseEvent = [self.eventClient createInternalEvent:SESSION_PAUSE_EVENT_TYPE]; [pauseEvent addMetric:[NSNumber numberWithUnsignedLongLong:[self.session timeDurationInMillis]] forKey:SESSION_DURATION_METRIC_KEY]; [self.eventClient recordEvent:pauseEvent andApplyGlobalAttributes:YES]; - AZLogInfo( "Session Paused."); + AWSLogInfo( "Session Paused."); } -(void)resumeCurrentSession{ [self.session resume]; - AZLogVerbose( @"Firing Session Event: Resume"); + AWSLogVerbose( @"Firing Session Event: Resume"); id resumeEvent = [self.eventClient createInternalEvent:SESSION_RESUME_EVENT_TYPE]; [self.eventClient recordEvent:resumeEvent andApplyGlobalAttributes:YES]; - AZLogInfo( "Session Resumed."); + AWSLogInfo( "Session Resumed."); } diff --git a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsInactiveSessionState.m b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsInactiveSessionState.m index a10b43897c4..42f7a54c668 100644 --- a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsInactiveSessionState.m +++ b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsInactiveSessionState.m @@ -16,7 +16,7 @@ #import "AWSMobileAnalyticsInactiveSessionState.h" #import "AWSMobileAnalyticsDefaultSessionClient+SessionState.h" #import "AWSMobileAnalyticsSession.h" -#import "AZLogging.h" +#import "AWSLogging.h" @implementation AWSMobileAnalyticsInactiveSessionState @@ -29,7 +29,7 @@ -(void)pauseWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionC id pauseEvent = [sessionClient.eventClient createInternalEvent:SESSION_PAUSE_EVENT_TYPE]; [sessionClient.eventClient recordEvent:pauseEvent andApplyGlobalAttributes:YES]; - AZLogVerbose( @"Session Pause Failed: No session is running."); + AWSLogVerbose( @"Session Pause Failed: No session is running."); } -(void)startWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ @@ -38,15 +38,15 @@ -(void)startWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionC } -(void)stopWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session Stop Failed: No session is running."); + AWSLogVerbose( @"Session Stop Failed: No session is running."); } -(void)enterStateWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session State: Entering Inactive State."); + AWSLogVerbose( @"Session State: Entering Inactive State."); } -(void)exitStateWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session State: Exiting Inactive State."); + AWSLogVerbose( @"Session State: Exiting Inactive State."); } @end diff --git a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsPausedSessionState.m b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsPausedSessionState.m index d3068c525e8..d3258386e21 100644 --- a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsPausedSessionState.m +++ b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsPausedSessionState.m @@ -16,7 +16,7 @@ #import "AWSMobileAnalyticsPausedSessionState.h" #import "AWSMobileAnalyticsDefaultSessionClient+SessionState.h" #import "AWSMobileAnalyticsSession.h" -#import "AZLogging.h" +#import "AWSLogging.h" @implementation AWSMobileAnalyticsPausedSessionState @@ -26,13 +26,13 @@ -(void)resumeWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)session [sessionClient resumeCurrentSession]; [sessionClient changeState:SESSION_STATE_ACTIVE]; }else{ - AZLogVerbose( @"Session has expired. Starting a fresh one..."); + AWSLogVerbose( @"Session has expired. Starting a fresh one..."); [self startWithSessionClient:sessionClient]; } } -(void)pauseWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session Pause Failed: Session is already paused."); + AWSLogVerbose( @"Session Pause Failed: Session is already paused."); } -(void)startWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ @@ -47,13 +47,13 @@ -(void)stopWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionCl } -(void)enterStateWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session State: Entering Paused State."); + AWSLogVerbose( @"Session State: Entering Paused State."); [sessionClient.sessionStore persistSessionDetails:sessionClient.session]; [sessionClient waitForSessionTimeout]; } -(void)exitStateWithSessionClient:(AWSMobileAnalyticsDefaultSessionClient *)sessionClient{ - AZLogVerbose( @"Session State: Exiting Paused State."); + AWSLogVerbose( @"Session State: Exiting Paused State."); // this will be executed on a main thread bg operation queue [sessionClient cancelDelayedBlock]; [sessionClient.sessionStore deletePesistedSession]; diff --git a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSession.m b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSession.m index 3f27a2def38..d429ca9e992 100644 --- a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSession.m +++ b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSession.m @@ -17,7 +17,7 @@ #import "AWSMobileAnalyticsDateUtils.h" #import "AWSMobileAnalyticsStringUtils.h" #import "AWSMobileAnalyticsContext.h" -#import "AZLogging.h" +#import "AWSLogging.h" #define _SESSION_ID_DATE_FORMAT @"yyyyMMdd" #define _SESSION_ID_TIME_FORMAT @"HHmmssSSS" @@ -98,9 +98,9 @@ - (UTCTimeMillis) timeDurationInMillis UTCTimeMillis duration = end - start; - AZLogVerbose( "start: %llu", start); - AZLogVerbose( "end: %llu", end); - AZLogVerbose( "duration: %llu", duration); + AWSLogVerbose( "start: %llu", start); + AWSLogVerbose( "end: %llu", end); + AWSLogVerbose( "duration: %llu", duration); return duration; } diff --git a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSessionStore.m b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSessionStore.m index a9f939afb4d..d22441ba61e 100644 --- a/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSessionStore.m +++ b/AWSCore/MobileAnalytics/session/AWSMobileAnalyticsSessionStore.m @@ -15,7 +15,7 @@ #import "AWSMobileAnalyticsSessionStore.h" #import "AWSMobileAnalyticsStringUtils.h" -#import "AZLogging.h" +#import "AWSLogging.h" static NSString* const SESSION_FILE_NAME = @"sessionFile"; @@ -42,11 +42,11 @@ -(id) initWithFileManager:(id)fileManager { if(createError != nil) { - AZLogError( @"Error creating session file. %@", [createError localizedDescription]); + AWSLogError( @"Error creating session file. %@", [createError localizedDescription]); } else { - AZLogError( @"The session file could not be created"); + AWSLogError( @"The session file could not be created"); } return nil; } @@ -74,7 +74,7 @@ -(AWSMobileAnalyticsSession*)retrievePersistedSessionDetails{ AWSMobileAnalyticsSession* session = [self createSessionFromSerializedDictionary:serializedSession]; if(session == nil){ - AZLogWarn( @"Can not obtain session details from the file. It is common if there is no previous paused session saved in the file."); + AWSLogWarn( @"Can not obtain session details from the file. It is common if there is no previous paused session saved in the file."); return nil; } @@ -135,11 +135,11 @@ -(void)persistSessionDetails:(AWSMobileAnalyticsSession*)session { if(error != nil) { - AZLogError( @"There was an error while attempting to write the session to the file. %@", [error localizedDescription]); + AWSLogError( @"There was an error while attempting to write the session to the file. %@", [error localizedDescription]); } else { - AZLogError( @"There was an error while attempting to write the session to the file."); + AWSLogError( @"There was an error while attempting to write the session to the file."); } } } @@ -163,11 +163,11 @@ -(BOOL)deletePesistedSession{ { if(error != nil) { - AZLogError( @"There was an error while attempting to delete the session file. %@", [error localizedDescription]); + AWSLogError( @"There was an error while attempting to delete the session file. %@", [error localizedDescription]); } else { - AZLogError( @"There was an error while attempting to delete the session file."); + AWSLogError( @"There was an error while attempting to delete the session file."); } return NO; diff --git a/AWSCore/Networking/AWSNetworking.h b/AWSCore/Networking/AWSNetworking.h index 86b782f261e..f1961ff5024 100644 --- a/AWSCore/Networking/AWSNetworking.h +++ b/AWSCore/Networking/AWSNetworking.h @@ -14,13 +14,198 @@ */ #import -#import "AZNetworking.h" -#import "AZModel.h" +#import "Bolts.h" +#import "AWSModel.h" -@interface AWSRequest : AZModel +FOUNDATION_EXPORT NSString *const AWSNetworkingErrorDomain; +typedef NS_ENUM(NSInteger, AWSNetworkingErrorType) { + AWSNetworkingErrorUnknown, + AWSNetworkingErrorCancelled +}; -@property (nonatomic, copy) AZNetworkingUploadProgressBlock uploadProgress; -@property (nonatomic, copy) AZNetworkingDownloadProgressBlock downloadProgress; +typedef NS_ENUM(NSInteger, AWSNetworkingRetryType) { + AWSNetworkingRetryTypeUnknown, + AWSNetworkingRetryTypeShouldNotRetry, + AWSNetworkingRetryTypeShouldRetry, + AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry, + AWSNetworkingRetryTypeShouldCorrectClockSkewAndRetry +}; + +@class AWSNetworkingConfiguration; +@class AWSNetworkingRequest; + +typedef void (^AWSNetworkingUploadProgressBlock) (int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); +typedef void (^AWSNetworkingDownloadProgressBlock) (int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); +typedef void (^AWSNetworkingCompletionHandlerBlock)(id responseObject, NSError *error); + +#pragma mark - AWSHTTPMethod + +typedef NS_ENUM(NSInteger, AWSHTTPMethod) { + AWSHTTPMethodUnknown, + AWSHTTPMethodGET, + AWSHTTPMethodHEAD, + AWSHTTPMethodPOST, + AWSHTTPMethodPUT, + AWSHTTPMethodPATCH, + AWSHTTPMethodDELETE +}; + +@interface NSString (AWSHTTPMethod) + ++ (instancetype)aws_stringWithHTTPMethod:(AWSHTTPMethod)HTTPMethod; + +@end + +#pragma mark - AWSNetworking + +@interface AWSNetworking : NSObject + ++ (instancetype)standardNetworking; ++ (instancetype)networking:(AWSNetworkingConfiguration *)configuration; + +- (BFTask *)sendRequest:(AWSNetworkingRequest *)request; + +- (BFTask *)sendDownloadRequest:(AWSNetworkingRequest *)request; + +- (BFTask *)sendUploadRequest:(AWSNetworkingRequest *)request; + +- (BFTask *)GET:(NSString *)URLString parameters:(NSDictionary *)parameters; + +- (BFTask *)HEAD:(NSString *)URLString parameters:(NSDictionary *)parameters; + +- (BFTask *)POST:(NSString *)URLString parameters:(NSDictionary *)parameters; + +- (BFTask *)PUT:(NSString *)URLString parameters:(NSDictionary *)parameters; + +- (BFTask *)PATCH:(NSString *)URLString parameters:(NSDictionary *)parameters; + +- (BFTask *)DELETE:(NSString *)URLString parameters:(NSDictionary *)parameters; + +@end + +#pragma mark - Protocols + +@protocol AWSURLRequestSerializer + +@required +- (BFTask *)validateRequest:(NSURLRequest *)request; +- (BFTask *)serializeRequest:(NSMutableURLRequest *)request + headers:(NSDictionary *)headers + parameters:(NSDictionary *)parameters; + +@end + +@protocol AWSNetworkingRequestInterceptor + +@required +- (BFTask *)interceptRequest:(NSMutableURLRequest *)request; + +@end + +@protocol AWSNetworkingHTTPResponseInterceptor + +@required +- (BFTask *)interceptResponse:(NSHTTPURLResponse *)response + data:(id)data + originalRequest:(NSURLRequest *)originalRequest + currentRequest:(NSURLRequest *)currentRequest; + +@end + +@protocol AWSHTTPURLResponseSerializer + +@required + +- (BOOL)validateResponse:(NSHTTPURLResponse *)response + fromRequest:(NSURLRequest *)request + data:(id)data + error:(NSError *__autoreleasing *)error; +- (id)responseObjectForResponse:(NSHTTPURLResponse *)response + originalRequest:(NSURLRequest *)originalRequest + currentRequest:(NSURLRequest *)currentRequest + data:(id)data + error:(NSError *__autoreleasing *)error; + +@end + +@protocol AWSURLRequestRetryHandler + +@required + +@property (nonatomic, assign) uint32_t maxRetryCount; + +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount + response:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *)error; + +- (NSTimeInterval)timeIntervalForRetry:(uint32_t)currentRetryCount + response:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *)error; + +@end + +#pragma mark - AWSURLRequestSerializer + +@interface AWSURLRequestSerializer : NSObject + +@end + +#pragma mark - AWSNetworkingConfiguration + +@interface AWSNetworkingConfiguration : NSObject + +@property (nonatomic, readonly) NSURL *URL; +@property (nonatomic, strong) NSURL *baseURL; +@property (nonatomic, strong) NSString *URLString; +@property (nonatomic, assign) AWSHTTPMethod HTTPMethod; +@property (nonatomic, strong) NSDictionary *headers; + +@property (nonatomic, strong) id requestSerializer; +@property (nonatomic, strong) NSArray *requestInterceptors; // Array of AWSNetworkingRequestInterceptor. +@property (nonatomic, strong) id responseSerializer; +@property (nonatomic, strong) NSArray *responseInterceptors; // Array of AWSNetworkingResponseInterceptor. +@property (nonatomic, strong) id retryHandler; + ++ (instancetype)defaultConfiguration; + +@end + +#pragma mark - AWSNetworkingRequest + +@interface AWSNetworkingRequest : AWSNetworkingConfiguration + +@property (nonatomic, strong) NSDictionary *parameters; +@property (nonatomic, strong) NSURL *uploadingFileURL; +@property (nonatomic, strong) NSURL *downloadingFileURL; +@property (nonatomic, assign) BOOL shouldWriteDirectly; + +@property (nonatomic, copy) AWSNetworkingUploadProgressBlock uploadProgress; +@property (nonatomic, copy) AWSNetworkingDownloadProgressBlock downloadProgress; + +@property (readonly, nonatomic, strong) NSURLSessionTask *task; +@property (readonly, nonatomic, assign, getter = isCancelled) BOOL cancelled; + ++ (instancetype)requestForDataTask:(AWSHTTPMethod)HTTPMethod + URLString:(NSString *)URLString; ++ (instancetype)requestForDownloadTask:(AWSHTTPMethod)HTTPMethod + URLString:(NSString *)URLString + downloadingFileURL:(NSURL *)downloadingFileURL; ++ (instancetype)requestForUploadTask:(AWSHTTPMethod)HTTPMethod + URLString:(NSString *)URLString + uploadingFileURL:(NSURL *)uploadingFileURL; + +- (void)assignProperties:(AWSNetworkingConfiguration *)configuration; +- (void)cancel; +- (void)pause; + +@end + +@interface AWSRequest : AWSModel + +@property (nonatomic, copy) AWSNetworkingUploadProgressBlock uploadProgress; +@property (nonatomic, copy) AWSNetworkingDownloadProgressBlock downloadProgress; @property (nonatomic, assign, readonly, getter = isCancelled) BOOL cancelled; @property (nonatomic, strong) NSURL *downloadingFileURL; @@ -29,6 +214,6 @@ @end -@interface AWSNetworkingRequestInterceptor : NSObject +@interface AWSNetworkingRequestInterceptor : NSObject @end diff --git a/AWSCore/Networking/AWSNetworking.m b/AWSCore/Networking/AWSNetworking.m index dd470bdb86a..37b6bcba6d6 100644 --- a/AWSCore/Networking/AWSNetworking.m +++ b/AWSCore/Networking/AWSNetworking.m @@ -15,12 +15,360 @@ #import "AWSNetworking.h" #import -#import "AZCategory.h" -#import "AZModel.h" +#import "AWSCategory.h" +#import "AWSModel.h" +#import "AWSURLSessionManager.h" + +NSString *const AWSNetworkingErrorDomain = @"com.amazonaws.AWSNetworkingErrorDomain"; +NSString *const AWSiOSSDKVersion = @"2.0.6"; + +#pragma mark - AWSHTTPMethod + +@implementation NSString (AWSHTTPMethod) + ++ (instancetype)aws_stringWithHTTPMethod:(AWSHTTPMethod)HTTPMethod { + NSString *string = nil; + switch (HTTPMethod) { + case AWSHTTPMethodGET: + string = @"GET"; + break; + case AWSHTTPMethodHEAD: + string = @"HEAD"; + break; + case AWSHTTPMethodPOST: + string = @"POST"; + break; + case AWSHTTPMethodPUT: + string = @"PUT"; + break; + case AWSHTTPMethodPATCH: + string = @"PATCH"; + break; + case AWSHTTPMethodDELETE: + string = @"DELETE"; + break; + + default: + break; + } + + return string; +} + +@end + +#pragma mark - AWSNetworking + +@interface AWSNetworking() + +@property (nonatomic, strong) AWSURLSessionManager *networkManager; + +@end + +@implementation AWSNetworking + +- (instancetype)init { + if (self = [super init]) { + AWSURLSessionManager *sessionManager = [AWSURLSessionManager new]; + self.networkManager = sessionManager; + } + + return self; +} + ++ (instancetype)standardNetworking { + static AWSNetworking *_standardNetworking = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + AWSNetworkingConfiguration *configuration = [AWSNetworkingConfiguration new]; + _standardNetworking = [AWSNetworking networking:configuration]; + }); + + return _standardNetworking; +} + ++ (instancetype)networking:(AWSNetworkingConfiguration *)configuration { + AWSNetworking *networking = [AWSNetworking new]; + networking.networkManager.configuration = configuration; + + return networking; +} + +- (BFTask *)sendRequest:(AWSNetworkingRequest *)request { + BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + [self.networkManager dataTaskWithRequest:request + completionHandler:^(id responseObject, NSError *error) { + if (!error) { + taskCompletionSource.result = responseObject; + } else { + taskCompletionSource.error = error; + } + }]; + + return taskCompletionSource.task; +} + +- (BFTask *)sendDownloadRequest:(AWSNetworkingRequest *)request { + BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + [self.networkManager downloadTaskWithRequest:request + completionHandler:^(id responseObject, NSError *error) { + if (!error) { + taskCompletionSource.result = responseObject; + } else { + taskCompletionSource.error = error; + } + }]; + + return taskCompletionSource.task; +} + +- (BFTask *)sendUploadRequest:(AWSNetworkingRequest *)request { + BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + [self.networkManager uploadTaskWithRequest:request + completionHandler:^(id responseObject, NSError *error) { + if (!error) { + taskCompletionSource.result = responseObject; + } else { + taskCompletionSource.error = error; + } + }]; + + return taskCompletionSource.task; +} + +- (BFTask *)GET:(NSString *)URLString parameters:(NSDictionary *)parameters { + AWSNetworkingRequest *request = [AWSNetworkingRequest requestForDataTask:AWSHTTPMethodGET + URLString:URLString]; + request.parameters = parameters; + return [self sendRequest:request]; +} + +- (BFTask *)HEAD:(NSString *)URLString parameters:(NSDictionary *)parameters { + AWSNetworkingRequest *request = [AWSNetworkingRequest requestForDataTask:AWSHTTPMethodHEAD + URLString:URLString]; + request.parameters = parameters; + return [self sendRequest:request]; +} + +- (BFTask *)POST:(NSString *)URLString parameters:(NSDictionary *)parameters { + AWSNetworkingRequest *request = [AWSNetworkingRequest requestForDataTask:AWSHTTPMethodPOST + URLString:URLString]; + request.parameters = parameters; + return [self sendRequest:request]; +} + +- (BFTask *)PUT:(NSString *)URLString parameters:(NSDictionary *)parameters { + AWSNetworkingRequest *request = [AWSNetworkingRequest requestForDataTask:AWSHTTPMethodPUT + URLString:URLString]; + request.parameters = parameters; + return [self sendRequest:request]; +} + +- (BFTask *)PATCH:(NSString *)URLString parameters:(NSDictionary *)parameters { + AWSNetworkingRequest *request = [AWSNetworkingRequest requestForDataTask:AWSHTTPMethodPATCH + URLString:URLString]; + request.parameters = parameters; + return [self sendRequest:request]; +} + +- (BFTask *)DELETE:(NSString *)URLString parameters:(NSDictionary *)parameters { + AWSNetworkingRequest *request = [AWSNetworkingRequest requestForDataTask:AWSHTTPMethodDELETE + URLString:URLString]; + request.parameters = parameters; + return [self sendRequest:request]; +} + +@end + +#pragma mark - AWSURLRequestSerializer + +@implementation AWSURLRequestSerializer + +- (BFTask *)validateRequest:(NSURLRequest *)request { + return [BFTask taskWithResult:nil]; +} + +- (BFTask *)serializeRequest:(NSMutableURLRequest *)request + headers:(NSDictionary *)header + parameters:(NSDictionary *)parameters { + if ([request.HTTPMethod isEqualToString:@"GET"]) { + NSMutableString *URLparameters = [NSMutableString new]; + for (id o in parameters) { + if ([URLparameters length] > 0) { + [URLparameters appendString:@"&"]; + } + + [URLparameters appendFormat:@"%@=%@", o, [parameters objectForKey:o]]; + } + + NSString *escapedURLParameters = [[URLparameters stringByRemovingPercentEncoding] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + request.URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@", + [request.URL absoluteString], + request.URL.query ? @"&" : @"?", + escapedURLParameters]]; + } + return [BFTask taskWithResult:nil]; +} + +@end + +#pragma mark - AWSNetworkingConfiguration + +@implementation AWSNetworkingConfiguration + ++ (instancetype)defaultConfiguration { + AWSNetworkingConfiguration *configuration = [AWSNetworkingConfiguration new]; + configuration.requestSerializer = [AWSURLRequestSerializer new]; + + return configuration; +} + +- (NSURL *)URL { + if (!self.URLString) { + return self.baseURL; + } + + return [NSURL URLWithString:self.URLString + relativeToURL:self.baseURL]; +} + +- (id)copyWithZone:(NSZone *)zone { + AWSNetworkingConfiguration *configuration = [[[self class] allocWithZone:zone] init]; + configuration.baseURL = [self.baseURL copy]; + configuration.URLString = [self.URLString copy]; + configuration.HTTPMethod = self.HTTPMethod; + configuration.headers = [self.headers copy]; + configuration.requestSerializer = self.requestSerializer; + configuration.requestInterceptors = [self.requestInterceptors copy]; + configuration.responseSerializer = self.responseSerializer; + configuration.responseInterceptors = [self.responseInterceptors copy]; + configuration.retryHandler = self.retryHandler; + + return configuration; +} + +@end + +#pragma mark - AWSNetworkingRequest + +@interface AWSNetworkingRequest() + +@property (nonatomic, strong) NSURLSessionTask *task; +@property (nonatomic, assign, getter = isCancelled) BOOL cancelled; + +@end + +@implementation AWSNetworkingRequest + ++ (instancetype)requestForDataTask:(AWSHTTPMethod)HTTPMethod + URLString:(NSString *)URLString { + AWSNetworkingRequest *request = [AWSNetworkingRequest new]; + request.HTTPMethod = HTTPMethod; + request.URLString = URLString; + + return request; +} + ++ (instancetype)requestForDownloadTask:(AWSHTTPMethod)HTTPMethod + URLString:(NSString *)URLString + downloadingFileURL:(NSURL *)downloadingFileURL { + AWSNetworkingRequest *request = [AWSNetworkingRequest new]; + request.HTTPMethod = HTTPMethod; + request.URLString = URLString; + request.downloadingFileURL = downloadingFileURL; + + return request; +} + ++ (instancetype)requestForUploadTask:(AWSHTTPMethod)HTTPMethod + URLString:(NSString *)URLString + uploadingFileURL:(NSURL *)uploadingFileURL { + AWSNetworkingRequest *request = [AWSNetworkingRequest new]; + request.HTTPMethod = HTTPMethod; + request.URLString = URLString; + request.uploadingFileURL = uploadingFileURL; + + return request; +} + +- (void)assignProperties:(AWSNetworkingConfiguration *)configuration { + if (!self.baseURL) { + self.baseURL = configuration.baseURL; + } + + if (!self.URLString) { + self.URLString = configuration.URLString; + } + + if (!self.HTTPMethod) { + self.HTTPMethod = configuration.HTTPMethod; + } + + if (configuration.headers) { + NSMutableDictionary *mutableCopy = [configuration.headers mutableCopy]; + [self.headers enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [mutableCopy setObject:obj forKey:key]; + }]; + self.headers = mutableCopy; + } + + if (!self.requestSerializer) { + self.requestSerializer = configuration.requestSerializer; + } + + if (configuration.requestInterceptors) { + self.requestInterceptors = configuration.requestInterceptors; + } + + if (!self.responseSerializer) { + self.responseSerializer = configuration.responseSerializer; + } + + if (configuration.responseInterceptors) { + self.responseInterceptors = configuration.responseInterceptors; + } + + if (!self.retryHandler) { + self.retryHandler = configuration.retryHandler; + } +} + +- (void)setTask:(NSURLSessionTask *)task { + @synchronized(self) { + if (!_cancelled) { + _task = task; + } else { + _task = nil; + } + } +} + +- (BOOL)isCancelled { + @synchronized(self) { + return _cancelled; + } +} + +- (void)cancel { + @synchronized(self) { + if (!_cancelled) { + _cancelled = YES; + [self.task cancel]; + } + } +} + +- (void)pause { + @synchronized(self) { + [self.task cancel]; + } +} + +@end @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @property (nonatomic, assign) NSNumber *shouldWriteDirectly; @end @@ -29,17 +377,17 @@ @implementation AWSRequest - (instancetype)init { if (self = [super init]) { - _internalRequest = [AZNetworkingRequest new]; + _internalRequest = [AWSNetworkingRequest new]; } return self; } -- (void)setUploadProgress:(AZNetworkingUploadProgressBlock)uploadProgress { +- (void)setUploadProgress:(AWSNetworkingUploadProgressBlock)uploadProgress { self.internalRequest.uploadProgress = uploadProgress; } -- (void)setDownloadProgress:(AZNetworkingDownloadProgressBlock)downloadProgress { +- (void)setDownloadProgress:(AWSNetworkingDownloadProgressBlock)downloadProgress { self.internalRequest.downloadProgress = downloadProgress; } @@ -85,14 +433,14 @@ - (NSString *)userAgent { NSString *systemName = [[[UIDevice currentDevice] systemName] stringByReplacingOccurrencesOfString:@" " withString:@"-"]; NSString *systemVersion = [[UIDevice currentDevice] systemVersion]; NSString *localeIdentifier = [[NSLocale currentLocale] localeIdentifier]; - _userAgent = [NSString stringWithFormat:@"aws-sdk-iOS/%@ %@/%@ %@", @"2.0.5", systemName, systemVersion, localeIdentifier]; + _userAgent = [NSString stringWithFormat:@"aws-sdk-iOS/%@ %@/%@ %@", AWSiOSSDKVersion, systemName, systemVersion, localeIdentifier]; }); return _userAgent; } - (BFTask *)interceptRequest:(NSMutableURLRequest *)request { - [request setValue:[[NSDate date] az_stringValue:AZDateISO8601DateFormat2] forHTTPHeaderField:@"X-Amz-Date"]; + [request setValue:[[NSDate date] aws_stringValue:AWSDateISO8601DateFormat2] forHTTPHeaderField:@"X-Amz-Date"]; NSString *userAgent = [self userAgent]; [request setValue:userAgent forHTTPHeaderField:@"User-Agent"]; diff --git a/AWSCore/Networking/AWSURLSessionManager.h b/AWSCore/Networking/AWSURLSessionManager.h new file mode 100644 index 00000000000..3343c308239 --- /dev/null +++ b/AWSCore/Networking/AWSURLSessionManager.h @@ -0,0 +1,33 @@ +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +#import + +#import "AWSNetworking.h" + +@interface AWSURLSessionManager : NSObject + +@property (nonatomic, strong) AWSNetworkingConfiguration *configuration; + +- (void)dataTaskWithRequest:(AWSNetworkingRequest *)request + completionHandler:(AWSNetworkingCompletionHandlerBlock)completionHandler; + +- (void)downloadTaskWithRequest:(AWSNetworkingRequest *)request + completionHandler:(AWSNetworkingCompletionHandlerBlock)completionHandler; + +- (void)uploadTaskWithRequest:(AWSNetworkingRequest *)request + completionHandler:(AWSNetworkingCompletionHandlerBlock)completionHandler; + +@end diff --git a/AmazonCore/Networking/AZURLSessionManager.m b/AWSCore/Networking/AWSURLSessionManager.m similarity index 78% rename from AmazonCore/Networking/AZURLSessionManager.m rename to AWSCore/Networking/AWSURLSessionManager.m index 47325822845..8031c852897 100644 --- a/AmazonCore/Networking/AZURLSessionManager.m +++ b/AWSCore/Networking/AWSURLSessionManager.m @@ -13,27 +13,27 @@ * permissions and limitations under the License. */ -#import "AZURLSessionManager.h" +#import "AWSURLSessionManager.h" -#import "AZSynchronizedMutableDictionary.h" -#import "AZLogging.h" -#import "AZCategory.h" +#import "AWSSynchronizedMutableDictionary.h" +#import "AWSLogging.h" +#import "AWSCategory.h" #import "AWSSignature.h" -#pragma mark - AZURLSessionManagerDelegate +#pragma mark - AWSURLSessionManagerDelegate -typedef NS_ENUM(NSInteger, AZURLSessionTaskType) { - AZURLSessionTaskTypeUnknown, - AZURLSessionTaskTypeData, - AZURLSessionTaskTypeDownload, - AZURLSessionTaskTypeUpload +typedef NS_ENUM(NSInteger, AWSURLSessionTaskType) { + AWSURLSessionTaskTypeUnknown, + AWSURLSessionTaskTypeData, + AWSURLSessionTaskTypeDownload, + AWSURLSessionTaskTypeUpload }; -@interface AZURLSessionManagerDelegate : NSObject +@interface AWSURLSessionManagerDelegate : NSObject -@property (nonatomic, assign) AZURLSessionTaskType taskType; -@property (nonatomic, copy) AZNetworkingCompletionHandlerBlock dataTaskCompletionHandler; -@property (nonatomic, strong) AZNetworkingRequest *request; +@property (nonatomic, assign) AWSURLSessionTaskType taskType; +@property (nonatomic, copy) AWSNetworkingCompletionHandlerBlock dataTaskCompletionHandler; +@property (nonatomic, strong) AWSNetworkingRequest *request; @property (nonatomic, strong) NSURL *uploadingFileURL; @property (nonatomic, strong) NSURL *downloadingFileURL; @@ -50,11 +50,11 @@ @interface AZURLSessionManagerDelegate : NSObject @end -@implementation AZURLSessionManagerDelegate +@implementation AWSURLSessionManagerDelegate - (instancetype)init { if (self = [super init]) { - _taskType = AZURLSessionTaskTypeUnknown; + _taskType = AWSURLSessionTaskTypeUnknown; } return self; @@ -62,26 +62,26 @@ - (instancetype)init { @end -#pragma mark - AZNetworkingRequest +#pragma mark - AWSNetworkingRequest -@interface AZNetworkingRequest() +@interface AWSNetworkingRequest() -@property (nonatomic, strong) id task; +@property (nonatomic, strong) NSURLSessionTask *task; @end -#pragma mark - AZURLSessionManager +#pragma mark - AWSURLSessionManager -//const int64_t AZMinimumDownloadTaskSize = 1000000; +//const int64_t AWSMinimumDownloadTaskSize = 1000000; -@interface AZURLSessionManager() +@interface AWSURLSessionManager() @property (nonatomic, strong) NSURLSession *session; -@property (nonatomic, strong) AZSynchronizedMutableDictionary *sessionManagerDelegates; +@property (nonatomic, strong) AWSSynchronizedMutableDictionary *sessionManagerDelegates; @end -@implementation AZURLSessionManager +@implementation AWSURLSessionManager - (instancetype)init { if (self = [super init]) { @@ -92,20 +92,20 @@ - (instancetype)init { _session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:operationQueue]; - _sessionManagerDelegates = [AZSynchronizedMutableDictionary new]; + _sessionManagerDelegates = [AWSSynchronizedMutableDictionary new]; } return self; } -- (void)dataTaskWithRequest:(AZNetworkingRequest *)request - completionHandler:(AZNetworkingCompletionHandlerBlock)completionHandler { +- (void)dataTaskWithRequest:(AWSNetworkingRequest *)request + completionHandler:(AWSNetworkingCompletionHandlerBlock)completionHandler { [request assignProperties:self.configuration]; - AZURLSessionManagerDelegate *delegate = [AZURLSessionManagerDelegate new]; + AWSURLSessionManagerDelegate *delegate = [AWSURLSessionManagerDelegate new]; delegate.dataTaskCompletionHandler = completionHandler; delegate.request = request; - delegate.taskType = AZURLSessionTaskTypeData; + delegate.taskType = AWSURLSessionTaskTypeData; delegate.downloadingFileURL = request.downloadingFileURL; delegate.uploadingFileURL = request.uploadingFileURL; delegate.shouldWriteDirectly = request.shouldWriteDirectly; @@ -113,30 +113,30 @@ - (void)dataTaskWithRequest:(AZNetworkingRequest *)request [self taskWithDelegate:delegate]; } -- (void)downloadTaskWithRequest:(AZNetworkingRequest *)request - completionHandler:(AZNetworkingCompletionHandlerBlock)completionHandler { +- (void)downloadTaskWithRequest:(AWSNetworkingRequest *)request + completionHandler:(AWSNetworkingCompletionHandlerBlock)completionHandler { [request assignProperties:self.configuration]; - AZURLSessionManagerDelegate *delegate = [AZURLSessionManagerDelegate new]; + AWSURLSessionManagerDelegate *delegate = [AWSURLSessionManagerDelegate new]; delegate.dataTaskCompletionHandler = completionHandler; delegate.request = request; - delegate.taskType = AZURLSessionTaskTypeDownload; + delegate.taskType = AWSURLSessionTaskTypeDownload; delegate.downloadingFileURL = request.downloadingFileURL; delegate.shouldWriteDirectly = request.shouldWriteDirectly; } -- (void)uploadTaskWithRequest:(AZNetworkingRequest *)request - completionHandler:(AZNetworkingCompletionHandlerBlock)completionHandler { +- (void)uploadTaskWithRequest:(AWSNetworkingRequest *)request + completionHandler:(AWSNetworkingCompletionHandlerBlock)completionHandler { [request assignProperties:self.configuration]; - AZURLSessionManagerDelegate *delegate = [AZURLSessionManagerDelegate new]; + AWSURLSessionManagerDelegate *delegate = [AWSURLSessionManagerDelegate new]; delegate.dataTaskCompletionHandler = completionHandler; delegate.request = request; - delegate.taskType = AZURLSessionTaskTypeUpload; + delegate.taskType = AWSURLSessionTaskTypeUpload; delegate.uploadingFileURL = request.uploadingFileURL; } -- (void)taskWithDelegate:(AZURLSessionManagerDelegate *)delegate { +- (void)taskWithDelegate:(AWSURLSessionManagerDelegate *)delegate { delegate.responseData = nil; delegate.responseObject = nil; delegate.error = nil; @@ -182,18 +182,18 @@ - (void)taskWithDelegate:(AZURLSessionManagerDelegate *)delegate { return nil; }] continueWithSuccessBlock:^id(BFTask *task) { - AZNetworkingRequest *request = delegate.request; + AWSNetworkingRequest *request = delegate.request; if (request.isCancelled) { if (delegate.dataTaskCompletionHandler) { - AZNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; - completionHandler(nil, [NSError errorWithDomain:AZNetworkingErrorDomain - code:AZNetworkingErrorCancelled + AWSNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; + completionHandler(nil, [NSError errorWithDomain:AWSNetworkingErrorDomain + code:AWSNetworkingErrorCancelled userInfo:nil]); } return nil; } - mutableRequest.HTTPMethod = [NSString az_stringWithHTTPMethod:delegate.request.HTTPMethod]; + mutableRequest.HTTPMethod = [NSString aws_stringWithHTTPMethod:delegate.request.HTTPMethod]; if ([request.requestSerializer respondsToSelector:@selector(serializeRequest:headers:parameters:)]) { BFTask *resultTask = [request.requestSerializer serializeRequest:mutableRequest @@ -206,7 +206,7 @@ - (void)taskWithDelegate:(AZURLSessionManagerDelegate *)delegate { } BFTask *sequencialTask = [BFTask taskWithResult:nil]; - for(idinterceptor in request.requestInterceptors) { + for(idinterceptor in request.requestInterceptors) { if ([interceptor respondsToSelector:@selector(interceptRequest:)]) { sequencialTask = [sequencialTask continueWithSuccessBlock:^id(BFTask *task) { return [interceptor interceptRequest:mutableRequest]; @@ -216,7 +216,7 @@ - (void)taskWithDelegate:(AZURLSessionManagerDelegate *)delegate { return task; }] continueWithSuccessBlock:^id(BFTask *task) { - AZNetworkingRequest *request = delegate.request; + AWSNetworkingRequest *request = delegate.request; if ([request.requestSerializer respondsToSelector:@selector(validateRequest:)]) { return [request.requestSerializer validateRequest:mutableRequest]; } else { @@ -224,15 +224,15 @@ - (void)taskWithDelegate:(AZURLSessionManagerDelegate *)delegate { } }] continueWithSuccessBlock:^id(BFTask *task) { switch (delegate.taskType) { - case AZURLSessionTaskTypeData: + case AWSURLSessionTaskTypeData: delegate.request.task = [self.session dataTaskWithRequest:mutableRequest]; break; - case AZURLSessionTaskTypeDownload: + case AWSURLSessionTaskTypeDownload: delegate.request.task = [self.session downloadTaskWithRequest:mutableRequest]; break; - case AZURLSessionTaskTypeUpload: + case AWSURLSessionTaskTypeUpload: delegate.request.task = [self.session uploadTaskWithRequest:mutableRequest fromFile:delegate.uploadingFileURL]; break; @@ -246,14 +246,14 @@ - (void)taskWithDelegate:(AZURLSessionManagerDelegate *)delegate { forKey:@(((NSURLSessionTask *)delegate.request.task).taskIdentifier)]; [delegate.request.task resume]; } else { - AZLogError(@"Invalid AZURLSessionTaskType."); + AWSLogError(@"Invalid AWSURLSessionTaskType."); } return nil; }] continueWithBlock:^id(BFTask *task) { if (task.error) { if (delegate.dataTaskCompletionHandler) { - AZNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; + AWSNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; completionHandler(nil, task.error); } } @@ -265,7 +265,7 @@ - (void)taskWithDelegate:(AZURLSessionManagerDelegate *)delegate { - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask didCompleteWithError:(NSError *)error { [[[BFTask taskWithResult:nil] continueWithSuccessBlock:^id(BFTask *task) { - AZURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(sessionTask.taskIdentifier)]; + AWSURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(sessionTask.taskIdentifier)]; if (delegate.downloadingFileURL) { [delegate.responseFilehandle closeFile]; @@ -285,11 +285,11 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask if ([delegate.tempDownloadedFileURL isEqual:delegate.downloadingFileURL] == NO) { if ([[NSFileManager defaultManager] fileExistsAtPath:delegate.downloadingFileURL.path]) { - AZLogWarn(@"Warning: target file already exists, will be overwritten at the file path: %@",delegate.downloadingFileURL); + AWSLogWarn(@"Warning: target file already exists, will be overwritten at the file path: %@",delegate.downloadingFileURL); [[NSFileManager defaultManager] removeItemAtPath:delegate.downloadingFileURL.path error:&error]; } if (error) { - AZLogError(@"Delete File Error: [%@]",error); + AWSLogError(@"Delete File Error: [%@]",error); } error = nil; [[NSFileManager defaultManager] moveItemAtURL:delegate.tempDownloadedFileURL @@ -314,7 +314,8 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask delegate.responseObject = delegate.downloadingFileURL; } } - } else if (delegate.responseData || [[httpResponse allHeaderFields][@"Content-Length"] integerValue] == 0) { + } else if (!delegate.error) { + // need to call responseSerializer if there is no client-side error. if ([delegate.request.responseSerializer respondsToSelector:@selector(responseObjectForResponse:originalRequest:currentRequest:data:error:)]) { NSError *error = nil; delegate.responseObject = [delegate.request.responseSerializer responseObjectForResponse:httpResponse @@ -335,26 +336,26 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask if (delegate.error && [sessionTask.response isKindOfClass:[NSHTTPURLResponse class]] && delegate.request.retryHandler) { - AZNetworkingRetryType retryType = [delegate.request.retryHandler shouldRetry:delegate.currentRetryCount + AWSNetworkingRetryType retryType = [delegate.request.retryHandler shouldRetry:delegate.currentRetryCount response:(NSHTTPURLResponse *)sessionTask.response data:delegate.responseData error:delegate.error]; switch (retryType) { - case AZNetworkingRetryTypeShouldCorrectClockSkewAndRetry: { + case AWSNetworkingRetryTypeShouldCorrectClockSkewAndRetry: { //Correct Clock Skew if ([sessionTask.response isKindOfClass:[NSHTTPURLResponse class]]) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)sessionTask.response; NSString *dateStr = [[httpResponse allHeaderFields] objectForKey:@"Date"]; NSDate *serverTime = nil; if ([dateStr length] > 0) { - serverTime = [NSDate az_dateFromString:dateStr]; + serverTime = [NSDate aws_dateFromString:dateStr]; } else { //If response header does not have 'Date' field, try to extract timeInfo from messageBody. // currently only been used for SQS. if ([delegate.responseObject isKindOfClass:[NSDictionary class]]) { - NSString *messageBody = delegate.responseObject[@"Error"][@"Message"]; + NSString *messageBody = [delegate.responseObject[@"Error"] aws_objectForCaseInsensitiveKey:@"Message"]; if (messageBody) { - serverTime = [NSDate az_getDateFromMessageBody:messageBody]; + serverTime = [NSDate aws_getDateFromMessageBody:messageBody]; } } } @@ -362,13 +363,13 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask if (serverTime) { NSDate *deviceTime = [NSDate date]; NSTimeInterval skewTime = [deviceTime timeIntervalSinceDate:serverTime]; - [NSDate az_setRuntimeClockSkew:skewTime]; + [NSDate aws_setRuntimeClockSkew:skewTime]; } } } - case AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry: { + case AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry: { id signer = [delegate.request.requestInterceptors lastObject]; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" @@ -381,7 +382,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask #pragma clang diagnostic pop } - case AZNetworkingRetryTypeShouldRetry: { + case AWSNetworkingRetryTypeShouldRetry: { NSTimeInterval timeIntervalToSleep = [delegate.request.retryHandler timeIntervalForRetry:delegate.currentRetryCount response:(NSHTTPURLResponse *)sessionTask.response data:delegate.responseData @@ -392,16 +393,16 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask } break; - case AZNetworkingRetryTypeShouldNotRetry: { + case AWSNetworkingRetryTypeShouldNotRetry: { if (delegate.dataTaskCompletionHandler) { - AZNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; + AWSNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; completionHandler(delegate.responseObject, delegate.error); } } break; default: - AZLogError(@"Unknown retry type. This should not happen."); + AWSLogError(@"Unknown retry type. This should not happen."); NSAssert(NO, @"Unknown retry type. This should not happen."); break; } @@ -413,7 +414,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask } if (delegate.dataTaskCompletionHandler) { - AZNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; + AWSNetworkingCompletionHandlerBlock completionHandler = delegate.dataTaskCompletionHandler; completionHandler(delegate.responseObject, delegate.error); } } @@ -425,8 +426,8 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)sessionTask } - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { - AZURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(task.taskIdentifier)]; - AZNetworkingUploadProgressBlock uploadProgress = delegate.request.uploadProgress; + AWSURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(task.taskIdentifier)]; + AWSNetworkingUploadProgressBlock uploadProgress = delegate.request.uploadProgress; if (uploadProgress) { NSURLSessionTask *sessionTask = delegate.request.task; @@ -451,32 +452,32 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSend - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { - AZURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(dataTask.taskIdentifier)]; + AWSURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(dataTask.taskIdentifier)]; if (delegate.downloadingFileURL) { if (delegate.shouldWriteDirectly) { //If set (e..g by S3 Transfer Manager), downloaded data will be wrote to the downloadingFileURL directly, if the file already exists, it will appended to the end. - AZLogDebug(@"DirectWrite is On, downloaded data will be wrote to the downloadingFileURL directly, if the file already exists, it will appended to the end.\ + AWSLogDebug(@"DirectWrite is On, downloaded data will be wrote to the downloadingFileURL directly, if the file already exists, it will appended to the end.\ Original file may be modified even the downloading task has been paused/cancelled later."); delegate.tempDownloadedFileURL = delegate.downloadingFileURL; NSError *error = nil; if ([[NSFileManager defaultManager] fileExistsAtPath:delegate.tempDownloadedFileURL.path]) { - AZLogDebug(@"target file already exists, will be appended at the file path: %@",delegate.tempDownloadedFileURL); + AWSLogDebug(@"target file already exists, will be appended at the file path: %@",delegate.tempDownloadedFileURL); delegate.responseFilehandle = [NSFileHandle fileHandleForUpdatingURL:delegate.tempDownloadedFileURL error:&error]; if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } [delegate.responseFilehandle seekToEndOfFile]; } else { //Create the file if (![[NSFileManager defaultManager] createFileAtPath:delegate.tempDownloadedFileURL.path contents:nil attributes:nil]) { - AZLogError(@"Error: Can not create file with file path:%@",delegate.tempDownloadedFileURL.path); + AWSLogError(@"Error: Can not create file with file path:%@",delegate.tempDownloadedFileURL.path); } error = nil; delegate.responseFilehandle = [NSFileHandle fileHandleForWritingToURL:delegate.tempDownloadedFileURL error:&error]; if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } } @@ -486,19 +487,19 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data delegate.tempDownloadedFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:tempFileName]]; NSError *error = nil; if ([[NSFileManager defaultManager] fileExistsAtPath:delegate.tempDownloadedFileURL.path]) { - AZLogWarn(@"Warning: target file already exists, will be overwritten at the file path: %@",delegate.tempDownloadedFileURL); + AWSLogWarn(@"Warning: target file already exists, will be overwritten at the file path: %@",delegate.tempDownloadedFileURL); [[NSFileManager defaultManager] removeItemAtPath:delegate.tempDownloadedFileURL.path error:&error]; } if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } if (![[NSFileManager defaultManager] createFileAtPath:delegate.tempDownloadedFileURL.path contents:nil attributes:nil]) { - AZLogError(@"Error: Can not create file with file path:%@",delegate.tempDownloadedFileURL.path); + AWSLogError(@"Error: Can not create file with file path:%@",delegate.tempDownloadedFileURL.path); } error = nil; delegate.responseFilehandle = [NSFileHandle fileHandleForWritingToURL:delegate.tempDownloadedFileURL error:&error]; if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } } @@ -506,7 +507,7 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data // if([response isKindOfClass:[NSHTTPURLResponse class]]) { // NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; - // if ([[[httpResponse allHeaderFields] objectForKey:@"Content-Length"] longLongValue] >= AZMinimumDownloadTaskSize) { + // if ([[[httpResponse allHeaderFields] objectForKey:@"Content-Length"] longLongValue] >= AWSMinimumDownloadTaskSize) { // completionHandler(NSURLSessionResponseBecomeDownload); // return; // } @@ -516,12 +517,12 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data } - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { - AZURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(downloadTask.taskIdentifier)]; + AWSURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(downloadTask.taskIdentifier)]; delegate.request.task = downloadTask; } - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { - AZURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(dataTask.taskIdentifier)]; + AWSURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(dataTask.taskIdentifier)]; if (delegate.downloadingFileURL) { [delegate.responseFilehandle writeData:data]; @@ -533,7 +534,7 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data } } - AZNetworkingDownloadProgressBlock downloadProgress = delegate.request.downloadProgress; + AWSNetworkingDownloadProgressBlock downloadProgress = delegate.request.downloadProgress; if (downloadProgress) { int64_t bytesWritten = [data length]; @@ -561,7 +562,7 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data #pragma mark - NSURLSessionDownloadDelegate - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { - AZURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(downloadTask.taskIdentifier)]; + AWSURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(downloadTask.taskIdentifier)]; if (!delegate.error) { NSError *error = nil; [[NSFileManager defaultManager] moveItemAtURL:location @@ -577,8 +578,8 @@ - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTas } - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { - AZURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(downloadTask.taskIdentifier)]; - AZNetworkingDownloadProgressBlock downloadProgress = delegate.request.downloadProgress; + AWSURLSessionManagerDelegate *delegate = [self.sessionManagerDelegates objectForKey:@(downloadTask.taskIdentifier)]; + AWSNetworkingDownloadProgressBlock downloadProgress = delegate.request.downloadProgress; if (downloadProgress) { downloadProgress(bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); } diff --git a/AWSCore/STS/AWSSTS.h b/AWSCore/STS/AWSSTS.h index 668411fc05c..30bb45bcb28 100644 --- a/AWSCore/STS/AWSSTS.h +++ b/AWSCore/STS/AWSSTS.h @@ -20,19 +20,18 @@ @class BFTask; /** - * AWS Security Token Service

The AWS Security Token Service (STS) is a web service that enables you to request temporary, limited-privilege credentials for AWS Identity and Access Management (IAM) users or for users that you authenticate (federated users). This guide provides descriptions of the STS API. For more detailed information about using this service, go to Using Temporary Security Credentials.

As an alternative to using the API, you can use one of the AWS SDKs, which consist of libraries and sample code for various programming languages and platforms (Java, Ruby, .NET, iOS, Android, etc.). The SDKs provide a convenient way to create programmatic access to STS. For example, the SDKs take care of cryptographically signing requests, managing errors, and retrying requests automatically. For information about the AWS SDKs, including how to download and install them, see the Tools for Amazon Web Services page.

For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about the Query API, go to Making Query Requests in Using IAM. For information about using security tokens with other AWS products, go to Using Temporary Security Credentials to Access AWS in Using Temporary Security Credentials.

If you're new to AWS and need additional technical information about a specific AWS product, you can find the product's technical documentation at http://aws.amazon.com/documentation/.

Endpoints

For information about STS endpoints, see Regions and Endpoints in the AWS General Reference.

Recording API requests

STS supports AWS CloudTrail, which is a service that records AWS calls for your AWS account and delivers log files to an Amazon S3 bucket. By using information collected by CloudTrail, you can determine what requests were successfully made to STS, who made the request, when it was made, and so on. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide.

+ * AWS Security Token Service

The AWS Security Token Service (STS) is a web service that enables you to request temporary, limited-privilege credentials for AWS Identity and Access Management (IAM) users or for users that you authenticate (federated users). This guide provides descriptions of the STS API. For more detailed information about using this service, go to Using Temporary Security Credentials.

For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about the Query API, go to Making Query Requests in Using IAM. For information about using security tokens with other AWS products, go to Using Temporary Security Credentials to Access AWS in Using Temporary Security Credentials.

If you're new to AWS and need additional technical information about a specific AWS product, you can find the product's technical documentation at http://aws.amazon.com/documentation/.

Endpoints

For information about STS endpoints, see Regions and Endpoints in the AWS General Reference.

Recording API requests

STS supports AWS CloudTrail, which is a service that records AWS calls for your AWS account and delivers log files to an Amazon S3 bucket. By using information collected by CloudTrail, you can determine what requests were successfully made to STS, who made the request, when it was made, and so on. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide.

*/ @interface AWSSTS : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultSTS; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) that you can use to access AWS resources that you might not normally have access to. Typically, you use AssumeRole for cross-account access or federation.

Important: You cannot call AssumeRole by using AWS account credentials; access will be denied. You must use IAM user credentials or temporary security credentials to call AssumeRole.

For cross-account access, imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts. For more information about roles, see Roles in Using IAM.

For federation, you can, for example, grant single sign-on access to the AWS Management Console. If you already have an identity and authentication system in your corporate network, you don't have to recreate user identities in AWS in order to grant those user identities access to AWS. Instead, after a user has been authenticated, you call AssumeRole (and specify the role with the appropriate permissions) to get temporary security credentials for that user. With those temporary security credentials, you construct a sign-in URL that users can use to access the console. For more information, see Scenarios for Granting Temporary Access in Using Temporary Security Credentials.

The temporary security credentials are valid for the duration that you specified when calling AssumeRole, which can be from 900 seconds (15 minutes) to 3600 seconds (1 hour). The default is 1 hour.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole in Using Temporary Security Credentials.

To assume a role, your AWS account must be trusted by the role. The trust relationship is defined in the role's trust policy when the role is created. You must also have a policy that allows you to call sts:AssumeRole.

Using MFA with AssumeRole

You can optionally include multi-factor authentication (MFA) information when you call AssumeRole. This is useful for cross-account scenarios in which you want to make sure that the user who is assuming the role has been authenticated using an AWS MFA device. In that scenario, the trust policy of the role being assumed includes a condition that tests for MFA authentication; if the caller does not include valid MFA information, the request to assume the role is denied. The condition in a trust policy that tests for MFA authentication might look like the following example.

"Condition": {"Null": {"aws:MultiFactorAuthAge": false}}

For more information, see Configuring MFA-Protected API Access in the Using IAM guide.

To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode parameters. The SerialNumber value identifies the user's hardware or virtual MFA device. The TokenCode is the time-based one-time password (TOTP) that the MFA devices produces.

+ *

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) that you can use to access AWS resources that you might not normally have access to. Typically, you use AssumeRole for cross-account access or federation.

Important: You cannot call AssumeRole by using AWS account credentials; access will be denied. You must use IAM user credentials or temporary security credentials to call AssumeRole.

For cross-account access, imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts. For more information about roles, see Roles in Using IAM.

For federation, you can, for example, grant single sign-on access to the AWS Management Console. If you already have an identity and authentication system in your corporate network, you don't have to recreate user identities in AWS in order to grant those user identities access to AWS. Instead, after a user has been authenticated, you call AssumeRole (and specify the role with the appropriate permissions) to get temporary security credentials for that user. With those temporary security credentials, you construct a sign-in URL that users can use to access the console. For more information, see Scenarios for Granting Temporary Access in Using Temporary Security Credentials.

The temporary security credentials are valid for the duration that you specified when calling AssumeRole, which can be from 900 seconds (15 minutes) to 3600 seconds (1 hour). The default is 1 hour.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole in Using Temporary Security Credentials.

To assume a role, your AWS account must be trusted by the role. The trust relationship is defined in the role's trust policy when the role is created. You must also have a policy that allows you to call sts:AssumeRole.

Using MFA with AssumeRole

You can optionally include multi-factor authentication (MFA) information when you call AssumeRole. This is useful for cross-account scenarios in which you want to make sure that the user who is assuming the role has been authenticated using an AWS MFA device. In that scenario, the trust policy of the role being assumed includes a condition that tests for MFA authentication; if the caller does not include valid MFA information, the request to assume the role is denied. The condition in a trust policy that tests for MFA authentication might look like the following example.

"Condition": {"Null": {"aws:MultiFactorAuthAge": false}}

For more information, see Configuring MFA-Protected API Access in the Using IAM guide.

To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode parameters. The SerialNumber value identifies the user's hardware or virtual MFA device. The TokenCode is the time-based one-time password (TOTP) that the MFA devices produces.

* * @param request A container for the necessary parameters to execute the AssumeRole service method. * @@ -44,7 +43,7 @@ - (BFTask *)assumeRole:(AWSSTSAssumeRoleRequest *)request; /** - *

Returns a set of temporary security credentials for users who have been authenticated via a SAML authentication response. This operation provides a mechanism for tying an enterprise identity store or directory to role-based AWS access without user-specific credentials or configuration.

The temporary security credentials returned by this operation consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS services. The credentials are valid for the duration that you specified when calling AssumeRoleWithSAML, which can be up to 3600 seconds (1 hour) or until the time specified in the SAML authentication response's NotOnOrAfter value, whichever is shorter.

The maximum duration for a session is 1 hour, and the minimum duration is 15 minutes, even if values outside this range are specified.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

Before your application can call AssumeRoleWithSAML, you must configure your SAML identity provider (IdP) to issue the claims required by AWS. Additionally, you must use AWS Identity and Access Management (IAM) to create a SAML provider entity in your AWS account that represents your identity provider, and create an IAM role that specifies this SAML provider in its trust policy.

Calling AssumeRoleWithSAML does not require the use of AWS security credentials. The identity of the caller is validated by using keys in the metadata document that is uploaded for the SAML provider entity for your identity provider.

For more information, see the following resources:

+ *

Returns a set of temporary security credentials for users who have been authenticated via a SAML authentication response. This operation provides a mechanism for tying an enterprise identity store or directory to role-based AWS access without user-specific credentials or configuration.

The temporary security credentials returned by this operation consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS services. The credentials are valid for the duration that you specified when calling AssumeRoleWithSAML, which can be up to 3600 seconds (1 hour) or until the time specified in the SAML authentication response's NotOnOrAfter value, whichever is shorter.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

Before your application can call AssumeRoleWithSAML, you must configure your SAML identity provider (IdP) to issue the claims required by AWS. Additionally, you must use AWS Identity and Access Management (IAM) to create a SAML provider entity in your AWS account that represents your identity provider, and create an IAM role that specifies this SAML provider in its trust policy.

Calling AssumeRoleWithSAML does not require the use of AWS security credentials. The identity of the caller is validated by using keys in the metadata document that is uploaded for the SAML provider entity for your identity provider.

For more information, see the following resources:

* * @param request A container for the necessary parameters to execute the AssumeRoleWithSAML service method. * @@ -68,7 +67,7 @@ - (BFTask *)assumeRoleWithWebIdentity:(AWSSTSAssumeRoleWithWebIdentityRequest *)request; /** - *

Decodes additional information about the authorization status of a request from an encoded message returned in response to an AWS request.

For example, if a user is not authorized to perform an action that he or she has requested, the request returns a Client.UnauthorizedOperation response (an HTTP 403 response). Some AWS actions additionally return an encoded message that can provide details about this authorization failure.

Only certain AWS actions return an encoded authorization message. The documentation for an individual action indicates whether that action returns an encoded message in addition to returning an HTTP code.

The message is encoded because the details of the authorization status can constitute privileged information that the user who requested the action should not see. To decode an authorization status message, a user must be granted permissions via an IAM policy to request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage) action.

The decoded message includes the following type of information:

  • Whether the request was denied due to an explicit deny or due to the absence of an explicit allow. For more information, see Determining Whether a Request is Allowed or Denied in Using IAM.
  • The principal who made the request.
  • The requested action.
  • The requested resource.
  • The values of condition keys in the context of the user's request.
+ *

Decodes additional information about the authorization status of a request from an encoded message returned in response to an AWS request.

For example, if a user is not authorized to perform an action that he or she has requested, the request returns a Client.UnauthorizedOperation response (an HTTP 403 response). Some AWS actions additionally return an encoded message that can provide details about this authorization failure.

The message is encoded because the details of the authorization status can constitute privileged information that the user who requested the action should not see. To decode an authorization status message, a user must be granted permissions via an IAM policy to request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage) action.

The decoded message includes the following type of information:

  • Whether the request was denied due to an explicit deny or due to the absence of an explicit allow. For more information, see Determining Whether a Request is Allowed or Denied in Using IAM.
  • The principal who made the request.
  • The requested action.
  • The requested resource.
  • The values of condition keys in the context of the user's request.
* * @param request A container for the necessary parameters to execute the DecodeAuthorizationMessage service method. * @@ -80,7 +79,7 @@ - (BFTask *)decodeAuthorizationMessage:(AWSSTSDecodeAuthorizationMessageRequest *)request; /** - *

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) for a federated user. A typical use is in a proxy application that gets temporary security credentials on behalf of distributed applications inside a corporate network. Because you must call the GetFederationToken action using the long-term security credentials of an IAM user, this call is appropriate in contexts where those credentials can be safely stored, usually in a server-based application.

Note: Do not use this call in mobile applications or client-based web applications that directly get temporary security credentials. For those types of applications, use AssumeRoleWithWebIdentity.

The GetFederationToken action must be called by using the long-term AWS security credentials of an IAM user. You can also call GetFederationToken using the security credentials of an AWS account (root), but this is not recommended. Instead, we recommend that you create an IAM user for the purpose of the proxy application and then attach a policy to the IAM user that limits federated users to only the actions and resources they need access to. For more information, see IAM Best Practices in Using IAM.

The temporary security credentials that are obtained by using the long-term credentials of an IAM user are valid for the specified duration, between 900 seconds (15 minutes) and 129600 seconds (36 hours). Temporary credentials that are obtained by using AWS account (root) credentials have a maximum duration of 3600 seconds (1 hour)

Permissions

The permissions for the temporary security credentials returned by GetFederationToken are determined by a combination of the following:

  • The policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken.
  • The policy that is passed as a parameter in the call.

The passed policy is attached to the temporary security credentials that result from the GetFederationToken API call--that is, to the federated user. When the federated user makes an AWS request, AWS evaluates the policy attached to the federated user in combination with the policy or policies attached to the IAM user whose credentials were used to call GetFederationToken. AWS allows the federated user's request only when both the federated user and the IAM user are explicitly allowed to perform the requested action. The passed policy cannot grant more permissions than those that are defined in the IAM user policy.

A typical use case is that the permissions of the IAM user whose credentials are used to call GetFederationToken are designed to allow access to all the actions and resources that any federated user will need. Then, for individual users, you pass a policy to the operation that scopes down the permissions to a level that's appropriate to that individual user, using a policy that allows only a subset of permissions that are granted to the IAM user.

If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource.

For more information about how permissions work, see Permissions for GetFederationToken in Using Temporary Security Credentials. For information about using GetFederationToken to create temporary security credentials, see Creating Temporary Credentials to Enable Access for Federated Users in Using Temporary Security Credentials.

+ *

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) for a federated user. A typical use is in a proxy application that gets temporary security credentials on behalf of distributed applications inside a corporate network. Because you must call the GetFederationToken action using the long-term security credentials of an IAM user, this call is appropriate in contexts where those credentials can be safely stored, usually in a server-based application.

Note: Do not use this call in mobile applications or client-based web applications that directly get temporary security credentials. For those types of applications, use AssumeRoleWithWebIdentity.

The GetFederationToken action must be called by using the long-term AWS security credentials of an IAM user. You can also call GetFederationToken using the security credentials of an AWS account (root), but this is not recommended. Instead, we recommend that you create an IAM user for the purpose of the proxy application and then attach a policy to the IAM user that limits federated users to only the actions and resources they need access to. For more information, see IAM Best Practices in Using IAM.

The temporary security credentials that are obtained by using the long-term credentials of an IAM user are valid for the specified duration, between 900 seconds (15 minutes) and 129600 seconds (36 hours). Temporary credentials that are obtained by using AWS account (root) credentials have a maximum duration of 3600 seconds (1 hour)

Permissions

The permissions for the temporary security credentials returned by GetFederationToken are determined by a combination of the following:

  • The policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken.
  • The policy that is passed as a parameter in the call.

The passed policy is attached to the temporary security credentials that result from the GetFederationToken API call--that is, to the federated user. When the federated user makes an AWS request, AWS evaluates the policy attached to the federated user in combination with the policy or policies attached to the IAM user whose credentials were used to call GetFederationToken. AWS allows the federated user's request only when both the federated user and the IAM user are explicitly allowed to perform the requested action. The passed policy cannot grant more permissions than those that are defined in the IAM user policy.

A typical use case is that the permissions of the IAM user whose credentials are used to call GetFederationToken are designed to allow access to all the actions and resources that any federated user will need. Then, for individual users, you pass a policy to the operation that scopes down the permissions to a level that's appropriate to that individual user, using a policy that allows only a subset of permissions that are granted to the IAM user.

If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource.

For more information about how permissions work, see Permissions for GetFederationToken in Using Temporary Security Credentials. For information about using GetFederationToken to create temporary security credentials, see Creating Temporary Credentials to Enable Access for Federated Users in Using Temporary Security Credentials.

* * @param request A container for the necessary parameters to execute the GetFederationToken service method. * @@ -92,7 +91,7 @@ - (BFTask *)getFederationToken:(AWSSTSGetFederationTokenRequest *)request; /** - *

Returns a set of temporary credentials for an AWS account or IAM user. The credentials consist of an access key ID, a secret access key, and a security token. Typically, you use GetSessionToken if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances. MFA-enabled IAM users would need to call GetSessionToken and submit an MFA code that is associated with their MFA device. Using the temporary security credentials that are returned from the call, IAM users can then make programmatic calls to APIs that require MFA authentication.

The GetSessionToken action must be called by using the long-term AWS security credentials of the AWS account or an IAM user. Credentials that are created by IAM users are valid for the duration that you specify, between 900 seconds (15 minutes) and 129600 seconds (36 hours); credentials that are created by using account credentials have a maximum duration of 3600 seconds (1 hour).

We recommend that you do not call GetSessionToken with root account credentials. Instead, follow our best practices by creating one or more IAM users, giving them the necessary permissions, and using IAM users for everyday interaction with AWS.

The permissions associated with the temporary security credentials returned by GetSessionToken are based on the permissions associated with account or IAM user whose credentials are used to call the action. If GetSessionToken is called using root account credentials, the temporary credentials have root account permissions. Similarly, if GetSessionToken is called using the credentials of an IAM user, the temporary credentials have the same permissions as the IAM user.

For more information about using GetSessionToken to create temporary credentials, go to Creating Temporary Credentials to Enable Access for IAM Users in Using Temporary Security Credentials.

+ *

Returns a set of temporary credentials for an AWS account or IAM user. The credentials consist of an access key ID, a secret access key, and a security token. Typically, you use GetSessionToken if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances. MFA-enabled IAM users would need to call GetSessionToken and submit an MFA code that is associated with their MFA device. Using the temporary security credentials that are returned from the call, IAM users can then make programmatic calls to APIs that require MFA authentication.

The GetSessionToken action must be called by using the long-term AWS security credentials of the AWS account or an IAM user. Credentials that are created by IAM users are valid for the duration that you specify, between 900 seconds (15 minutes) and 129600 seconds (36 hours); credentials that are created by using account credentials have a maximum duration of 3600 seconds (1 hour).

The permissions associated with the temporary security credentials returned by GetSessionToken are based on the permissions associated with account or IAM user whose credentials are used to call the action. If GetSessionToken is called using root account credentials, the temporary credentials have root account permissions. Similarly, if GetSessionToken is called using the credentials of an IAM user, the temporary credentials have the same permissions as the IAM user.

For more information about using GetSessionToken to create temporary credentials, go to Creating Temporary Credentials to Enable Access for IAM Users in Using Temporary Security Credentials.

* * @param request A container for the necessary parameters to execute the GetSessionToken service method. * diff --git a/AWSCore/STS/AWSSTS.m b/AWSCore/STS/AWSSTS.m index 9b33c8f3054..3a352c37b31 100644 --- a/AWSCore/STS/AWSSTS.m +++ b/AWSCore/STS/AWSSTS.m @@ -15,8 +15,8 @@ #import "AWSSTS.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -47,12 +47,12 @@ + (void)initialize { @"InvalidClientTokenId" : @(AWSSTSErrorInvalidClientTokenId), @"MissingAuthenticationToken" : @(AWSSTSErrorMissingAuthenticationToken), @"ExpiredTokenException" : @(AWSSTSErrorExpiredToken), - @"IDPCommunicationErrorException" : @(AWSSTSErrorIDPCommunicationError), - @"IDPRejectedClaimException" : @(AWSSTSErrorIDPRejectedClaim), + @"IDPCommunicationError" : @(AWSSTSErrorIDPCommunicationError), + @"IDPRejectedClaim" : @(AWSSTSErrorIDPRejectedClaim), @"InvalidAuthorizationMessageException" : @(AWSSTSErrorInvalidAuthorizationMessage), - @"InvalidIdentityTokenException" : @(AWSSTSErrorInvalidIdentityToken), - @"MalformedPolicyDocumentException" : @(AWSSTSErrorMalformedPolicyDocument), - @"PackedPolicyTooLargeException" : @(AWSSTSErrorPackedPolicyTooLarge), + @"InvalidIdentityToken" : @(AWSSTSErrorInvalidIdentityToken), + @"MalformedPolicyDocument" : @(AWSSTSErrorMalformedPolicyDocument), + @"PackedPolicyTooLarge" : @(AWSSTSErrorPackedPolicyTooLarge), }; } @@ -80,12 +80,19 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (!*error && [responseObject isKindOfClass:[NSDictionary class]]) { NSDictionary *errorInfo = responseObject[@"Error"]; - if (errorInfo) { + if (errorInfo[@"Code"] && errorCodeDictionary[errorInfo[@"Code"]]) { + if (error) { + *error = [NSError errorWithDomain:AWSSTSErrorDomain + code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] + userInfo:errorInfo + ]; + return responseObject; + } + } else if (errorInfo) { if (error) { *error = [NSError errorWithDomain:AWSSTSErrorDomain code:AWSSTSErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"], [errorInfo objectForKey:@"Message"]] - }]; + userInfo:errorInfo]; } } else if (self.outputClass) { responseObject = [MTLJSONAdapter modelOfClass:self.outputClass @@ -105,22 +112,22 @@ @interface AWSSTSRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSSTSRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSSTSErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSSTSErrorIncompleteSignature: case AWSSTSErrorInvalidClientTokenId: case AWSSTSErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -135,15 +142,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSSTS() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -167,25 +173,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceSTS]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceSTS]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSTSRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -194,9 +200,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -217,7 +223,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)assumeRole:(AWSSTSAssumeRoleRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AssumeRole" @@ -226,7 +232,7 @@ - (BFTask *)assumeRole:(AWSSTSAssumeRoleRequest *)request { - (BFTask *)assumeRoleWithSAML:(AWSSTSAssumeRoleWithSAMLRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AssumeRoleWithSAML" @@ -235,7 +241,7 @@ - (BFTask *)assumeRoleWithSAML:(AWSSTSAssumeRoleWithSAMLRequest *)request { - (BFTask *)assumeRoleWithWebIdentity:(AWSSTSAssumeRoleWithWebIdentityRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AssumeRoleWithWebIdentity" @@ -244,7 +250,7 @@ - (BFTask *)assumeRoleWithWebIdentity:(AWSSTSAssumeRoleWithWebIdentityRequest *) - (BFTask *)decodeAuthorizationMessage:(AWSSTSDecodeAuthorizationMessageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DecodeAuthorizationMessage" @@ -253,7 +259,7 @@ - (BFTask *)decodeAuthorizationMessage:(AWSSTSDecodeAuthorizationMessageRequest - (BFTask *)getFederationToken:(AWSSTSGetFederationTokenRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetFederationToken" @@ -262,7 +268,7 @@ - (BFTask *)getFederationToken:(AWSSTSGetFederationTokenRequest *)request { - (BFTask *)getSessionToken:(AWSSTSGetSessionTokenRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetSessionToken" diff --git a/AWSCore/STS/AWSSTSModel.h b/AWSCore/STS/AWSSTSModel.h index 7f819d9f04d..2613f39e006 100644 --- a/AWSCore/STS/AWSSTSModel.h +++ b/AWSCore/STS/AWSSTSModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSSTSErrorDomain; @@ -92,7 +92,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { /** *

Contains the result of a successful call to the AssumeRole action, including temporary AWS credentials that can be used to make AWS requests.

*/ -@interface AWSSTSAssumeRoleResponse : AZModel +@interface AWSSTSAssumeRoleResponse : AWSModel /** @@ -116,12 +116,12 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { /** - *

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the SAML authentication response's NotOnOrAfter value. The actual expiration time is whichever value is shorter.

The maximum duration for a session is 1 hour, and the minimum duration is 15 minutes, even if values outside this range are specified. + *

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the SAML authentication response's NotOnOrAfter value. The actual expiration time is whichever value is shorter.

*/ @property (nonatomic, strong) NSNumber *durationSeconds; /** - *

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

The policy must be 2048 bytes or shorter, and its packed size must be less than 450 bytes. + *

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

*/ @property (nonatomic, strong) NSString *policy; @@ -145,7 +145,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { /** *

Contains the result of a successful call to the AssumeRoleWithSAML action, including temporary AWS credentials that can be used to make AWS requests.

*/ -@interface AWSSTSAssumeRoleWithSAMLResponse : AZModel +@interface AWSSTSAssumeRoleWithSAMLResponse : AWSModel /** @@ -208,7 +208,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { /** *

Contains the result of a successful call to the AssumeRoleWithWebIdentity action, including temporary AWS credentials that can be used to make AWS requests.

*/ -@interface AWSSTSAssumeRoleWithWebIdentityResponse : AZModel +@interface AWSSTSAssumeRoleWithWebIdentityResponse : AWSModel /** @@ -247,7 +247,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { *

The identifiers for the temporary security credentials that the operation returns.

* Required parameters: [AssumedRoleId, Arn] */ -@interface AWSSTSAssumedRoleUser : AZModel +@interface AWSSTSAssumedRoleUser : AWSModel /** @@ -266,7 +266,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { *

AWS credentials for API authentication.

* Required parameters: [AccessKeyId, SecretAccessKey, SessionToken, Expiration] */ -@interface AWSSTSCredentials : AZModel +@interface AWSSTSCredentials : AWSModel /** @@ -304,7 +304,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { /** *

A document that contains additional information about the authorization status of a request from an encoded message that is returned in response to an AWS request.

*/ -@interface AWSSTSDecodeAuthorizationMessageResponse : AZModel +@interface AWSSTSDecodeAuthorizationMessageResponse : AWSModel /** @@ -318,7 +318,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { *

Identifiers for the federated user that is associated with the credentials.

* Required parameters: [FederatedUserId, Arn] */ -@interface AWSSTSFederatedUser : AZModel +@interface AWSSTSFederatedUser : AWSModel /** @@ -356,7 +356,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { /** *

Contains the result of a successful call to the GetFederationToken action, including temporary AWS credentials that can be used to make AWS requests.

*/ -@interface AWSSTSGetFederationTokenResponse : AZModel +@interface AWSSTSGetFederationTokenResponse : AWSModel /** @@ -399,7 +399,7 @@ typedef NS_ENUM(NSInteger, AWSSTSErrorType) { /** *

Contains the result of a successful call to the GetSessionToken action, including temporary AWS credentials that can be used to make AWS requests.

*/ -@interface AWSSTSGetSessionTokenResponse : AZModel +@interface AWSSTSGetSessionTokenResponse : AWSModel /** diff --git a/AWSCore/STS/AWSSTSModel.m b/AWSCore/STS/AWSSTSModel.m index 2ef61c0adcb..02c9895c433 100644 --- a/AWSCore/STS/AWSSTSModel.m +++ b/AWSCore/STS/AWSSTSModel.m @@ -14,7 +14,7 @@ */ #import "AWSSTSModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSSTSErrorDomain = @"com.amazonaws.AWSSTSErrorDomain"; @@ -155,9 +155,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)expirationJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } diff --git a/AWSCore/STS/Resources/sts-2011-06-15.json b/AWSCore/STS/Resources/sts-2011-06-15.json index a23d903d392..2d1d3952621 100644 --- a/AWSCore/STS/Resources/sts-2011-06-15.json +++ b/AWSCore/STS/Resources/sts-2011-06-15.json @@ -9,7 +9,7 @@ "xmlNamespace":"https://sts.amazonaws.com/doc/2011-06-15/", "protocol":"query" }, - "documentation":"AWS Security Token Service\n\n

The AWS Security Token Service (STS) is a web service that enables you to request temporary,\n limited-privilege credentials for AWS Identity and Access Management (IAM) users or for users that you authenticate\n (federated users). This guide provides descriptions of the STS API. For more detailed\n information about using this service, go to Using\n Temporary Security Credentials.

\n\n As an alternative to using the API, you can use one of the AWS SDKs, which consist of\n libraries and sample code for various programming languages and platforms (Java, Ruby, .NET,\n iOS, Android, etc.). The SDKs provide a convenient way to create programmatic access to\n STS. For example, the SDKs take care of cryptographically signing requests, managing\n errors, and retrying requests automatically. For information about the AWS SDKs, including how\n to download and install them, see the Tools for Amazon\n Web Services page. \n\n

For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For\n general information about the Query API, go to Making Query Requests in Using IAM. For information about using\n security tokens with other AWS products, go to Using Temporary\n Security Credentials to Access AWS in Using Temporary Security Credentials.

\n\n

If you're new to AWS and need additional technical information about a specific AWS product,\n you can find the product's technical documentation at http://aws.amazon.com/documentation/.

\n\n

\n Endpoints\n

\n

For information about STS endpoints, see Regions and Endpoints in the AWS General Reference.

\n\n

\n Recording API requests\n

\n

STS supports AWS CloudTrail, which is a service that records AWS calls for your AWS\n account and delivers log files to an Amazon S3 bucket. By using information collected by\n CloudTrail, you can determine what requests were successfully made to STS, who made the\n request, when it was made, and so on. To learn more about CloudTrail, including how to turn it\n on and find your log files, see the AWS\n CloudTrail User Guide.

", + "documentation":"AWS Security Token Service

The AWS Security Token Service (STS) is a web service that enables you to request temporary, limited-privilege credentials for AWS Identity and Access Management (IAM) users or for users that you authenticate (federated users). This guide provides descriptions of the STS API. For more detailed information about using this service, go to Using Temporary Security Credentials.

For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about the Query API, go to Making Query Requests in Using IAM. For information about using security tokens with other AWS products, go to Using Temporary Security Credentials to Access AWS in Using Temporary Security Credentials.

If you're new to AWS and need additional technical information about a specific AWS product, you can find the product's technical documentation at http://aws.amazon.com/documentation/.

Endpoints

For information about STS endpoints, see Regions and Endpoints in the AWS General Reference.

Recording API requests

STS supports AWS CloudTrail, which is a service that records AWS calls for your AWS account and delivers log files to an Amazon S3 bucket. By using information collected by CloudTrail, you can determine what requests were successfully made to STS, who made the request, when it was made, and so on. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide.

", "operations":{ "AssumeRole":{ "name":"AssumeRole", @@ -20,7 +20,7 @@ "input":{"shape":"AssumeRoleRequest"}, "output":{ "shape":"AssumeRoleResponse", - "documentation":"

Contains the result of a successful call to the AssumeRole action, including\n temporary AWS credentials that can be used to make AWS requests.

", + "documentation":"

Contains the result of a successful call to the AssumeRole action, including temporary AWS credentials that can be used to make AWS requests.

", "resultWrapper":"AssumeRoleResult" }, "errors":[ @@ -32,7 +32,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message\n describes the specific error.

" + "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" }, { "shape":"PackedPolicyTooLargeException", @@ -42,10 +42,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message\n describes how big the policy document is, in packed form, as a percentage of what the API\n allows.

" + "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" } ], - "documentation":"

Returns a set of temporary security credentials (consisting of an access key ID, a secret\n access key, and a security token) that you can use to access AWS resources that you might not\n normally have access to. Typically, you use AssumeRole for cross-account access\n or federation.

\n\n

Important: You cannot call AssumeRole by using AWS account credentials;\n access will be denied. You must use IAM user credentials or temporary security credentials\n to call AssumeRole.

\n\n

For cross-account access, imagine that you own multiple accounts and need to access resources\n in each account. You could create long-term credentials in each account to access those\n resources. However, managing all those credentials and remembering which one can access which\n account can be time consuming. Instead, you can create one set of long-term credentials in one\n account and then use temporary security credentials to access all the other accounts by\n assuming roles in those accounts. For more information about roles, see Roles in\n Using IAM.

\n\n

For federation, you can, for example, grant single sign-on access to the AWS Management\n Console. If you already have an identity and authentication system in your corporate network,\n you don't have to recreate user identities in AWS in order to grant those user identities\n access to AWS. Instead, after a user has been authenticated, you call AssumeRole\n (and specify the role with the appropriate permissions) to get temporary security credentials\n for that user. With those temporary security credentials, you construct a sign-in URL that\n users can use to access the console. For more information, see Scenarios for\n Granting Temporary Access in Using Temporary Security Credentials.

\n\n

The temporary security credentials are valid for the duration that you specified when calling\n AssumeRole, which can be from 900 seconds (15 minutes) to 3600 seconds (1\n hour). The default is 1 hour.

\n\n\n

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass\n a policy, the temporary security credentials that are returned by the operation have the\n permissions that are defined in the access policy of the role that is being assumed. If you\n pass a policy to this operation, the temporary security credentials that are returned by the\n operation have the permissions that are allowed by both the access policy of the role that is\n being assumed, and the policy that you pass. This gives you a way to further\n restrict the permissions for the resulting temporary security credentials. You cannot use the\n passed policy to grant permissions that are in excess of those allowed by the access policy of\n the role that is being assumed. For more information, see Permissions for\n AssumeRole in Using Temporary Security Credentials.

\n\n

To assume a role, your AWS account must be trusted by the role. The trust relationship is\n defined in the role's trust policy when the role is created. You must also have a policy that\n allows you to call sts:AssumeRole.

\n\n

\n Using MFA with AssumeRole\n

\n

You can optionally include multi-factor authentication (MFA) information when you call\n AssumeRole. This is useful for cross-account scenarios in which you want to\n make sure that the user who is assuming the role has been authenticated using an AWS MFA\n device. In that scenario, the trust policy of the role being assumed includes a condition that\n tests for MFA authentication; if the caller does not include valid MFA information, the\n request to assume the role is denied. The condition in a trust policy that tests for MFA\n authentication might look like the following example.

\n\n

\n \"Condition\": {\"Null\": {\"aws:MultiFactorAuthAge\": false}}\n

\n\n

For more information, see Configuring\n MFA-Protected API Access in the Using IAM guide.

\n\n

To use MFA with AssumeRole, you pass values for the SerialNumber\n and TokenCode parameters. The SerialNumber value identifies the\n user's hardware or virtual MFA device. The TokenCode is the time-based one-time\n password (TOTP) that the MFA devices produces.

\n\n\n \n \n \n \n \n \n https://sts.amazonaws.com/\n?Version=2011-06-15\n&Action=AssumeRole\n&RoleSessionName=Bob\n&RoleArn=arn:aws:iam::123456789012:role/demo\n&Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%22Stmt1%22%2C%22Effect%22%\n 3A%22Allow%22%2C%22Action%22%3A%22s3%3A*%22%2C%22Resource%22%3A%22*%22%7D\n %5D%7D\n&DurationSeconds=3600\n&ExternalId=123ABC\n&AUTHPARAMS\n\n \n \n \n \n AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW\n LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd\n QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU\n 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz\n +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==\n \n \n wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY\n \n 2011-07-15T23:28:33.359Z\n AKIAIOSFODNN7EXAMPLE\n \n \n arn:aws:sts::123456789012:assumed-role/demo/Bob\n ARO123EXAMPLE123:Bob\n \n 6\n \n \n c6104cbe-af31-11e0-8154-cbc7ccf896c7\n \n\n\n " + "documentation":"

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) that you can use to access AWS resources that you might not normally have access to. Typically, you use AssumeRole for cross-account access or federation.

Important: You cannot call AssumeRole by using AWS account credentials; access will be denied. You must use IAM user credentials or temporary security credentials to call AssumeRole.

For cross-account access, imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts. For more information about roles, see Roles in Using IAM.

For federation, you can, for example, grant single sign-on access to the AWS Management Console. If you already have an identity and authentication system in your corporate network, you don't have to recreate user identities in AWS in order to grant those user identities access to AWS. Instead, after a user has been authenticated, you call AssumeRole (and specify the role with the appropriate permissions) to get temporary security credentials for that user. With those temporary security credentials, you construct a sign-in URL that users can use to access the console. For more information, see Scenarios for Granting Temporary Access in Using Temporary Security Credentials.

The temporary security credentials are valid for the duration that you specified when calling AssumeRole, which can be from 900 seconds (15 minutes) to 3600 seconds (1 hour). The default is 1 hour.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole in Using Temporary Security Credentials.

To assume a role, your AWS account must be trusted by the role. The trust relationship is defined in the role's trust policy when the role is created. You must also have a policy that allows you to call sts:AssumeRole.

Using MFA with AssumeRole

You can optionally include multi-factor authentication (MFA) information when you call AssumeRole. This is useful for cross-account scenarios in which you want to make sure that the user who is assuming the role has been authenticated using an AWS MFA device. In that scenario, the trust policy of the role being assumed includes a condition that tests for MFA authentication; if the caller does not include valid MFA information, the request to assume the role is denied. The condition in a trust policy that tests for MFA authentication might look like the following example.

\"Condition\": {\"Null\": {\"aws:MultiFactorAuthAge\": false}}

For more information, see Configuring MFA-Protected API Access in the Using IAM guide.

To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode parameters. The SerialNumber value identifies the user's hardware or virtual MFA device. The TokenCode is the time-based one-time password (TOTP) that the MFA devices produces.

" }, "AssumeRoleWithSAML":{ "name":"AssumeRoleWithSAML", @@ -56,7 +56,7 @@ "input":{"shape":"AssumeRoleWithSAMLRequest"}, "output":{ "shape":"AssumeRoleWithSAMLResponse", - "documentation":"

Contains the result of a successful call to the AssumeRoleWithSAML action, including\n temporary AWS credentials that can be used to make AWS requests.

", + "documentation":"

Contains the result of a successful call to the AssumeRoleWithSAML action, including temporary AWS credentials that can be used to make AWS requests.

", "resultWrapper":"AssumeRoleWithSAMLResult" }, "errors":[ @@ -68,7 +68,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message\n describes the specific error.

" + "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" }, { "shape":"PackedPolicyTooLargeException", @@ -78,7 +78,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message\n describes how big the policy document is, in packed form, as a percentage of what the API\n allows.

" + "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" }, { "shape":"IDPRejectedClaimException", @@ -88,7 +88,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the\n claim is invalid.

\n

If this error is returned for the AssumeRoleWithWebIdentity operation, it can\n also mean that the claim has expired or has been explicitly revoked.

" + "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the claim is invalid.

If this error is returned for the AssumeRoleWithWebIdentity operation, it can also mean that the claim has expired or has been explicitly revoked.

" }, { "shape":"InvalidIdentityTokenException", @@ -98,7 +98,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity\n token from the identity provider and then retry the request.

" + "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity token from the identity provider and then retry the request.

" }, { "shape":"ExpiredTokenException", @@ -108,10 +108,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token\n from the identity provider and then retry the request.

" + "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token from the identity provider and then retry the request.

" } ], - "documentation":"

Returns a set of temporary security credentials for users who have been authenticated via a\n SAML authentication response. This operation provides a mechanism for tying an enterprise\n identity store or directory to role-based AWS access without user-specific credentials or\n configuration.

\n\n

The temporary security credentials returned by this operation consist of an access key ID, a\n secret access key, and a security token. Applications can use these temporary security\n credentials to sign calls to AWS services. The credentials are valid for the duration that you\n specified when calling AssumeRoleWithSAML, which can be up to 3600 seconds (1\n hour) or until the time specified in the SAML authentication response's\n NotOnOrAfter value, whichever is shorter.

\n\n The maximum duration for a session is 1 hour, and the minimum duration is 15 minutes, even\n if values outside this range are specified. \n\n

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a\n policy, the temporary security credentials that are returned by the operation have the\n permissions that are defined in the access policy of the role that is being assumed. If you\n pass a policy to this operation, the temporary security credentials that are returned by the\n operation have the permissions that are allowed by both the access policy of the role that is\n being assumed, and the policy that you pass. This gives you a way to further\n restrict the permissions for the resulting temporary security credentials. You cannot use the\n passed policy to grant permissions that are in excess of those allowed by the access policy of\n the role that is being assumed. For more information, see Permissions for\n AssumeRoleWithSAML in Using Temporary Security Credentials.

\n\n

Before your application can call AssumeRoleWithSAML, you must configure your\n SAML identity provider (IdP) to issue the claims required by AWS. Additionally, you must use\n AWS Identity and Access Management (IAM) to create a SAML provider entity in your AWS account that represents your\n identity provider, and create an IAM role that specifies this SAML provider in its trust\n policy.

\n\n

Calling AssumeRoleWithSAML does not require the use of AWS security\n credentials. The identity of the caller is validated by using keys in the metadata document\n that is uploaded for the SAML provider entity for your identity provider.

\n\n

For more information, see the following resources:

\n\n \n\n \n \n \n " + "documentation":"

Returns a set of temporary security credentials for users who have been authenticated via a SAML authentication response. This operation provides a mechanism for tying an enterprise identity store or directory to role-based AWS access without user-specific credentials or configuration.

The temporary security credentials returned by this operation consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS services. The credentials are valid for the duration that you specified when calling AssumeRoleWithSAML, which can be up to 3600 seconds (1 hour) or until the time specified in the SAML authentication response's NotOnOrAfter value, whichever is shorter.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

Before your application can call AssumeRoleWithSAML, you must configure your SAML identity provider (IdP) to issue the claims required by AWS. Additionally, you must use AWS Identity and Access Management (IAM) to create a SAML provider entity in your AWS account that represents your identity provider, and create an IAM role that specifies this SAML provider in its trust policy.

Calling AssumeRoleWithSAML does not require the use of AWS security credentials. The identity of the caller is validated by using keys in the metadata document that is uploaded for the SAML provider entity for your identity provider.

For more information, see the following resources:

" }, "AssumeRoleWithWebIdentity":{ "name":"AssumeRoleWithWebIdentity", @@ -122,7 +122,7 @@ "input":{"shape":"AssumeRoleWithWebIdentityRequest"}, "output":{ "shape":"AssumeRoleWithWebIdentityResponse", - "documentation":"

Contains the result of a successful call to the AssumeRoleWithWebIdentity action,\n including temporary AWS credentials that can be used to make AWS requests.

", + "documentation":"

Contains the result of a successful call to the AssumeRoleWithWebIdentity action, including temporary AWS credentials that can be used to make AWS requests.

", "resultWrapper":"AssumeRoleWithWebIdentityResult" }, "errors":[ @@ -134,7 +134,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message\n describes the specific error.

" + "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" }, { "shape":"PackedPolicyTooLargeException", @@ -144,7 +144,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message\n describes how big the policy document is, in packed form, as a percentage of what the API\n allows.

" + "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" }, { "shape":"IDPRejectedClaimException", @@ -154,7 +154,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the\n claim is invalid.

\n

If this error is returned for the AssumeRoleWithWebIdentity operation, it can\n also mean that the claim has expired or has been explicitly revoked.

" + "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the claim is invalid.

If this error is returned for the AssumeRoleWithWebIdentity operation, it can also mean that the claim has expired or has been explicitly revoked.

" }, { "shape":"IDPCommunicationErrorException", @@ -164,7 +164,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request could not be fulfilled because the non-AWS identity provider (IDP) that was asked\n to verify the incoming identity token could not be reached. This is often a transient error\n caused by network conditions. Retry the request a limited number of times so that you don't\n exceed the request rate. If the error persists, the non-AWS identity provider might be down or\n not responding.

" + "documentation":"

The request could not be fulfilled because the non-AWS identity provider (IDP) that was asked to verify the incoming identity token could not be reached. This is often a transient error caused by network conditions. Retry the request a limited number of times so that you don't exceed the request rate. If the error persists, the non-AWS identity provider might be down or not responding.

" }, { "shape":"InvalidIdentityTokenException", @@ -174,7 +174,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity\n token from the identity provider and then retry the request.

" + "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity token from the identity provider and then retry the request.

" }, { "shape":"ExpiredTokenException", @@ -184,10 +184,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token\n from the identity provider and then retry the request.

" + "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token from the identity provider and then retry the request.

" } ], - "documentation":"

Returns a set of temporary security credentials for users who have been authenticated in a\n mobile or web application with a web identity provider, such as Login with Amazon, Facebook,\n or Google.

\n\n

Calling AssumeRoleWithWebIdentity does not require the use of AWS security\n credentials. Therefore, you can distribute an application (for example, on mobile devices)\n that requests temporary security credentials without including long-term AWS credentials in\n the application, and without deploying server-based proxy services that use long-term AWS\n credentials. Instead, the identity of the caller is validated by using a token from the web\n identity provider.

\n\n

The temporary security credentials returned by this API consist of an access key ID, a\n secret access key, and a security token. Applications can use these temporary security\n credentials to sign calls to AWS service APIs. The credentials are valid for the duration that\n you specified when calling AssumeRoleWithWebIdentity, which can be from 900\n seconds (15 minutes) to 3600 seconds (1 hour). By default, the temporary security credentials\n are valid for 1 hour.

\n\n

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass\n a policy, the temporary security credentials that are returned by the operation have the\n permissions that are defined in the access policy of the role that is being assumed. If you\n pass a policy to this operation, the temporary security credentials that are returned by the\n operation have the permissions that are allowed by both the access policy of the role that is\n being assumed, and the policy that you pass. This gives you a way to further\n restrict the permissions for the resulting temporary security credentials. You cannot use the\n passed policy to grant permissions that are in excess of those allowed by the access policy of\n the role that is being assumed. For more information, see Permissions for\n AssumeRoleWithWebIdentity in Using Temporary Security Credentials.

\n\n

Before your application can call AssumeRoleWithWebIdentity, you must have an\n identity token from a supported identity provider and create a role that the application can\n assume. The role that your application assumes must trust the identity provider that is\n associated with the identity token. In other words, the identity provider must be specified in\n the role's trust policy.

\n\n

For more information about how to use web identity federation and the\n AssumeRoleWithWebIdentity, see the following resources:

\n\n \n\n \n \n \n \n \n \n\n \n\n https://sts.amazonaws.com/\n?Action=AssumeRoleWithWebIdentity\n&DurationSeconds=3600\n&ProviderId=www.amazon.com\n&RoleSessionName=app1\n&Version=2011-06-15\n&RoleArn=arn%3Aaws%3Aiam%3A%3A000240903217%3Arole%2FFederatedWebIdentityRole\n&WebIdentityToken=Atza%7CIQEBLjAsAhRFiXuWpUXuRvQ9PZL3GMFcYevydwIUFAHZwXZXX\nXXXXXXJnrulxKDHwy87oGKPznh0D6bEQZTSCzyoCtL_8S07pLpr0zMbn6w1lfVZKNTBdDansFB\nmtGnIsIapjI6xKR02Yc_2bQ8LZbUXSGm6Ry6_BG7PrtLZtj_dfCTj92xNGed-CrKqjG7nPBjNI\nL016GGvuS5gSvPRUxWES3VYfm1wl7WTI7jn-Pcb6M-buCgHhFOzTQxod27L9CqnOLio7N3gZAG\npsp6n1-AJBOCJckcyXe2c6uD0srOJeZlKUm2eTDVMf8IehDVI0r1QOnTV6KzzAI3OY87Vd_cVMQ\n \n\n \n \n \n amzn1.account.AF6RHO7KZU5XRVQJGXK6HB56KR2A\n \n \n \n arn:aws:sts::000240903217:assumed-role/FederatedWebIdentityRole/app1\n \n \n AROACLKWSDQRAOFQC3IDI:app1\n \n \n \n \n AQoDYXdzEE0a8ANXXXXXXXXNO1ewxE5TijQyp+IPfnyowF\n \n \n wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY\n \n \n 2013-05-14T23:00:23Z\n \n \n AKIAIOSFODNN7EXAMPLE\n \n \n apps.example.com\n \n \n client.5498841531868486423.1548@apps.example.com\n \n \n \n \n ad4156e9-bce1-11e2-82e6-6b6ef249e618\n \n\n \n " + "documentation":"

Returns a set of temporary security credentials for users who have been authenticated in a mobile or web application with a web identity provider, such as Login with Amazon, Facebook, or Google.

Calling AssumeRoleWithWebIdentity does not require the use of AWS security credentials. Therefore, you can distribute an application (for example, on mobile devices) that requests temporary security credentials without including long-term AWS credentials in the application, and without deploying server-based proxy services that use long-term AWS credentials. Instead, the identity of the caller is validated by using a token from the web identity provider.

The temporary security credentials returned by this API consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS service APIs. The credentials are valid for the duration that you specified when calling AssumeRoleWithWebIdentity, which can be from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the temporary security credentials are valid for 1 hour.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithWebIdentity in Using Temporary Security Credentials.

Before your application can call AssumeRoleWithWebIdentity, you must have an identity token from a supported identity provider and create a role that the application can assume. The role that your application assumes must trust the identity provider that is associated with the identity token. In other words, the identity provider must be specified in the role's trust policy.

For more information about how to use web identity federation and the AssumeRoleWithWebIdentity, see the following resources:

" }, "DecodeAuthorizationMessage":{ "name":"DecodeAuthorizationMessage", @@ -198,7 +198,7 @@ "input":{"shape":"DecodeAuthorizationMessageRequest"}, "output":{ "shape":"DecodeAuthorizationMessageResponse", - "documentation":"

A document that contains additional information about the authorization status of a request\n from an encoded message that is returned in response to an AWS request.

", + "documentation":"

A document that contains additional information about the authorization status of a request from an encoded message that is returned in response to an AWS request.

", "resultWrapper":"DecodeAuthorizationMessageResult" }, "errors":[ @@ -210,10 +210,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The error returned if the message passed to DecodeAuthorizationMessage was\n invalid. This can happen if the token contains invalid characters, such as linebreaks.

" + "documentation":"

The error returned if the message passed to DecodeAuthorizationMessage was invalid. This can happen if the token contains invalid characters, such as linebreaks.

" } ], - "documentation":"

Decodes additional information about the authorization status of a request from an encoded\n message returned in response to an AWS request.

\n\n

For example, if a user is not authorized to perform an action that he or she has requested,\n the request returns a Client.UnauthorizedOperation response (an HTTP 403\n response). Some AWS actions additionally return an encoded message that can provide details\n about this authorization failure.

\n\n Only certain AWS actions return an encoded authorization message. The documentation for\n an individual action indicates whether that action returns an encoded message in addition to\n returning an HTTP code. \n\n

The message is encoded because the details of the authorization status can constitute\n privileged information that the user who requested the action should not see. To decode an\n authorization status message, a user must be granted permissions via an IAM policy to\n request the DecodeAuthorizationMessage\n (sts:DecodeAuthorizationMessage) action.

\n\n

The decoded message includes the following type of information:

\n\n
    \n
  • Whether the request was denied due to an explicit deny or due to the absence of an\n explicit allow. For more information, see Determining Whether a Request is Allowed or Denied in Using IAM.
  • \n
  • The principal who made the request.
  • \n
  • The requested action.
  • \n
  • The requested resource.
  • \n
  • The values of condition keys in the context of the user's request.
  • \n
\n\n \n POST https://sts.amazonaws.com / HTTP/1.1\nContent-Type: application/x-www-form-urlencoded; charset=utf-8\nHost: sts.amazonaws.com\nContent-Length: 1148\nExpect: 100-continue\nConnection: Keep-Alive\nAction=DecodeAuthorizationMessage\n&EncodedMessage=\n&Version=2011-06-15\n&AUTHPARAMS\n\n \n \n 6624a9ca-cd25-4f50-b2a5-7ba65bf07453\n \n {\n \"allowed\": \"false\",\n \"explicitDeny\": \"false\",\n \"matchedStatements\": \"\",\n \"failures\": \"\",\n \"context\": {\n \"principal\": {\n \"id\": \"AIDACKCEVSQ6C2EXAMPLE\",\n \"name\": \"Bob\",\n \"arn\": \"arn:aws:iam::123456789012:user/Bob\"\n },\n \"action\": \"ec2:StopInstances\",\n \"resource\": \"arn:aws:ec2:us-east-1:123456789012:instance/i-dd01c9bd\",\n \"conditions\": [\n {\n \"item\": {\n \"key\": \"ec2:Tenancy\",\n \"values\": [\"default\"]\n },\n {\n \"item\": {\n \"key\": \"ec2:ResourceTag/elasticbeanstalk:environment-name\",\n \"values\": [\"Default-Environment\"]\n }\n },\n (Additional items ...)\n ]\n }\n }\n \n\n " + "documentation":"

Decodes additional information about the authorization status of a request from an encoded message returned in response to an AWS request.

For example, if a user is not authorized to perform an action that he or she has requested, the request returns a Client.UnauthorizedOperation response (an HTTP 403 response). Some AWS actions additionally return an encoded message that can provide details about this authorization failure.

The message is encoded because the details of the authorization status can constitute privileged information that the user who requested the action should not see. To decode an authorization status message, a user must be granted permissions via an IAM policy to request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage) action.

The decoded message includes the following type of information:

  • Whether the request was denied due to an explicit deny or due to the absence of an explicit allow. For more information, see Determining Whether a Request is Allowed or Denied in Using IAM.
  • The principal who made the request.
  • The requested action.
  • The requested resource.
  • The values of condition keys in the context of the user's request.
" }, "GetFederationToken":{ "name":"GetFederationToken", @@ -224,7 +224,7 @@ "input":{"shape":"GetFederationTokenRequest"}, "output":{ "shape":"GetFederationTokenResponse", - "documentation":"

Contains the result of a successful call to the GetFederationToken action, including\n temporary AWS credentials that can be used to make AWS requests.

", + "documentation":"

Contains the result of a successful call to the GetFederationToken action, including temporary AWS credentials that can be used to make AWS requests.

", "resultWrapper":"GetFederationTokenResult" }, "errors":[ @@ -236,7 +236,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message\n describes the specific error.

" + "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" }, { "shape":"PackedPolicyTooLargeException", @@ -246,10 +246,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message\n describes how big the policy document is, in packed form, as a percentage of what the API\n allows.

" + "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" } ], - "documentation":"

Returns a set of temporary security credentials (consisting of an access key ID, a secret\n access key, and a security token) for a federated user. A typical use is in a proxy\n application that gets temporary security credentials on behalf of distributed applications\n inside a corporate network. Because you must call the GetFederationToken action\n using the long-term security credentials of an IAM user, this call is appropriate in\n contexts where those credentials can be safely stored, usually in a server-based\n application.

\n\n

\n Note: Do not use this call in mobile applications or client-based web applications that\n directly get temporary security credentials. For those types of applications, use\n AssumeRoleWithWebIdentity.

\n\n

The GetFederationToken action must be called by using the long-term AWS security\n credentials of an IAM user. You can also call GetFederationToken using the\n security credentials of an AWS account (root), but this is not recommended. Instead, we\n recommend that you create an IAM user for the purpose of the proxy application and then\n attach a policy to the IAM user that limits federated users to only the actions and\n resources they need access to. For more information, see IAM Best Practices in\n Using IAM.

\n\n

The temporary security credentials that are obtained by using the long-term credentials of an\n IAM user are valid for the specified duration, between 900 seconds (15 minutes) and 129600\n seconds (36 hours). Temporary credentials that are obtained by using AWS account (root)\n credentials have a maximum duration of 3600 seconds (1 hour)

\n\n

\n Permissions\n

\n \n

The permissions for the temporary security credentials returned by\n GetFederationToken are determined by a combination of the following:

\n \n
    \n
  • The policy or policies that are attached to the IAM user whose credentials are used to\n call GetFederationToken.
  • \n
  • The policy that is passed as a parameter in the call.
  • \n
\n

The passed policy is attached to the temporary security credentials that result from the\n GetFederationToken API call--that is, to the federated user. When the\n federated user makes an AWS request, AWS evaluates the policy attached to the federated user\n in combination with the policy or policies attached to the IAM user whose credentials were\n used to call GetFederationToken. AWS allows the federated user's request only\n when both the federated user and the IAM user are explicitly allowed to\n perform the requested action. The passed policy cannot grant more permissions than those that\n are defined in the IAM user policy.

\n\n

A typical use case is that the permissions of the IAM user whose credentials are used to\n call GetFederationToken are designed to allow access to all the actions and\n resources that any federated user will need. Then, for individual users, you pass a policy to\n the operation that scopes down the permissions to a level that's appropriate to that\n individual user, using a policy that allows only a subset of permissions that are granted to\n the IAM user.

\n\n

If you do not pass a policy, the resulting temporary security credentials have no effective\n permissions. The only exception is when the temporary security credentials are used to access\n a resource that has a resource-based policy that specifically allows the federated user to\n access the resource.

\n\n

For more information about how permissions work, see Permissions for GetFederationToken in Using Temporary Security Credentials. For information\n about using GetFederationToken to create temporary security credentials, see Creating Temporary Credentials\n to Enable Access for Federated Users in Using Temporary Security Credentials.

\n \n https://sts.amazonaws.com/\n?Version=2011-06-15\n&Action=GetFederationToken\n&Name=Bob\n&Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%22Stmt1%22%2C%22Effect%22%\n 3A%22Allow%22%2C%22Action%22%3A%22s3%3A*%22%2C%22Resource%22%3A%22*%22%7D\n %5D%7D\n&DurationSeconds=3600\n&AUTHPARAMS\n \n\n \n \n \n \n AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW\n LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd\n QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU\n 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz\n +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==\n \n \n wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY\n \n 2011-07-15T23:28:33.359Z\n AKIAIOSFODNN7EXAMPLE\n \n \n arn:aws:sts::123456789012:federated-user/Bob\n 123456789012:Bob\n \n 6\n \n \n c6104cbe-af31-11e0-8154-cbc7ccf896c7\n \n\n \n\n " + "documentation":"

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) for a federated user. A typical use is in a proxy application that gets temporary security credentials on behalf of distributed applications inside a corporate network. Because you must call the GetFederationToken action using the long-term security credentials of an IAM user, this call is appropriate in contexts where those credentials can be safely stored, usually in a server-based application.

Note: Do not use this call in mobile applications or client-based web applications that directly get temporary security credentials. For those types of applications, use AssumeRoleWithWebIdentity.

The GetFederationToken action must be called by using the long-term AWS security credentials of an IAM user. You can also call GetFederationToken using the security credentials of an AWS account (root), but this is not recommended. Instead, we recommend that you create an IAM user for the purpose of the proxy application and then attach a policy to the IAM user that limits federated users to only the actions and resources they need access to. For more information, see IAM Best Practices in Using IAM.

The temporary security credentials that are obtained by using the long-term credentials of an IAM user are valid for the specified duration, between 900 seconds (15 minutes) and 129600 seconds (36 hours). Temporary credentials that are obtained by using AWS account (root) credentials have a maximum duration of 3600 seconds (1 hour)

Permissions

The permissions for the temporary security credentials returned by GetFederationToken are determined by a combination of the following:

  • The policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken.
  • The policy that is passed as a parameter in the call.

The passed policy is attached to the temporary security credentials that result from the GetFederationToken API call--that is, to the federated user. When the federated user makes an AWS request, AWS evaluates the policy attached to the federated user in combination with the policy or policies attached to the IAM user whose credentials were used to call GetFederationToken. AWS allows the federated user's request only when both the federated user and the IAM user are explicitly allowed to perform the requested action. The passed policy cannot grant more permissions than those that are defined in the IAM user policy.

A typical use case is that the permissions of the IAM user whose credentials are used to call GetFederationToken are designed to allow access to all the actions and resources that any federated user will need. Then, for individual users, you pass a policy to the operation that scopes down the permissions to a level that's appropriate to that individual user, using a policy that allows only a subset of permissions that are granted to the IAM user.

If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource.

For more information about how permissions work, see Permissions for GetFederationToken in Using Temporary Security Credentials. For information about using GetFederationToken to create temporary security credentials, see Creating Temporary Credentials to Enable Access for Federated Users in Using Temporary Security Credentials.

" }, "GetSessionToken":{ "name":"GetSessionToken", @@ -260,10 +260,10 @@ "input":{"shape":"GetSessionTokenRequest"}, "output":{ "shape":"GetSessionTokenResponse", - "documentation":"

Contains the result of a successful call to the GetSessionToken action, including\n temporary AWS credentials that can be used to make AWS requests.

", + "documentation":"

Contains the result of a successful call to the GetSessionToken action, including temporary AWS credentials that can be used to make AWS requests.

", "resultWrapper":"GetSessionTokenResult" }, - "documentation":"

Returns a set of temporary credentials for an AWS account or IAM user. The credentials\n consist of an access key ID, a secret access key, and a security token. Typically, you use\n GetSessionToken if you want to use MFA to protect programmatic calls to\n specific AWS APIs like Amazon EC2 StopInstances. MFA-enabled IAM users would\n need to call GetSessionToken and submit an MFA code that is associated with their\n MFA device. Using the temporary security credentials that are returned from the call, IAM\n users can then make programmatic calls to APIs that require MFA authentication.

\n\n

The GetSessionToken action must be called by using the long-term AWS security\n credentials of the AWS account or an IAM user. Credentials that are created by IAM users\n are valid for the duration that you specify, between 900 seconds (15 minutes) and 129600\n seconds (36 hours); credentials that are created by using account credentials have a maximum\n duration of 3600 seconds (1 hour).

\n \n \n

We recommend that you do not call GetSessionToken with root account credentials. Instead, follow our best practices by creating one or more IAM users, giving them the necessary permissions, and using IAM users for everyday interaction with AWS.

\n
\n \n

The permissions associated with the temporary security credentials returned by\n GetSessionToken are based on the permissions associated with account or IAM\n user whose credentials are used to call the action. If GetSessionToken is called\n using root account credentials, the temporary credentials have root account permissions.\n Similarly, if GetSessionToken is called using the credentials of an IAM user,\n the temporary credentials have the same permissions as the IAM user.

\n\n

For more information about using GetSessionToken to create temporary\n credentials, go to Creating Temporary Credentials to Enable Access for IAM Users in\n Using Temporary Security Credentials.

\n\n \n https://sts.amazonaws.com/\n?Version=2011-06-15\n&Action=GetSessionToken\n&DurationSeconds=3600\n&SerialNumber=YourMFADeviceSerialNumber\n&TokenCode=123456\n&AUTHPARAMS\n \n\n \n \n \n \n AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L\n To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z\n rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp\n Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE\n \n \n wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY\n \n 2011-07-11T19:55:29.611Z\n AKIAIOSFODNN7EXAMPLE\n \n \n \n 58c5dbae-abef-11e0-8cfe-09039844ac7d\n \n\n \n " + "documentation":"

Returns a set of temporary credentials for an AWS account or IAM user. The credentials consist of an access key ID, a secret access key, and a security token. Typically, you use GetSessionToken if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances. MFA-enabled IAM users would need to call GetSessionToken and submit an MFA code that is associated with their MFA device. Using the temporary security credentials that are returned from the call, IAM users can then make programmatic calls to APIs that require MFA authentication.

The GetSessionToken action must be called by using the long-term AWS security credentials of the AWS account or an IAM user. Credentials that are created by IAM users are valid for the duration that you specify, between 900 seconds (15 minutes) and 129600 seconds (36 hours); credentials that are created by using account credentials have a maximum duration of 3600 seconds (1 hour).

The permissions associated with the temporary security credentials returned by GetSessionToken are based on the permissions associated with account or IAM user whose credentials are used to call the action. If GetSessionToken is called using root account credentials, the temporary credentials have root account permissions. Similarly, if GetSessionToken is called using the credentials of an IAM user, the temporary credentials have the same permissions as the IAM user.

For more information about using GetSessionToken to create temporary credentials, go to Creating Temporary Credentials to Enable Access for IAM Users in Using Temporary Security Credentials.

" } }, "shapes":{ @@ -280,27 +280,27 @@ }, "RoleSessionName":{ "shape":"userNameType", - "documentation":"

An identifier for the assumed role session. The session name is included as part of the\n AssumedRoleUser.

" + "documentation":"

An identifier for the assumed role session. The session name is included as part of the AssumedRoleUser.

" }, "Policy":{ "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format.

\n\n

The policy parameter is optional. If you pass a policy, the temporary security credentials\n that are returned by the operation have the permissions that are allowed by both the access\n policy of the role that is being assumed, and the policy that you pass. This\n gives you a way to further restrict the permissions for the resulting temporary security\n credentials. You cannot use the passed policy to grant permissions that are in excess of those\n allowed by the access policy of the role that is being assumed. For more information, see Permissions for\n AssumeRole in Using Temporary Security Credentials.

" + "documentation":"

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole in Using Temporary Security Credentials.

" }, "DurationSeconds":{ "shape":"roleDurationSecondsType", - "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15\n minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds.

" + "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds.

" }, "ExternalId":{ "shape":"externalIdType", - "documentation":"

A unique identifier that is used by third parties to assume a role in their customers'\n accounts. For each role that the third party can assume, they should instruct their customers\n to create a role with the external ID that the third party generated. Each time the third\n party assumes the role, they must pass the customer's external ID. The external ID is useful\n in order to help third parties bind a role to the customer who created it. For more\n information about the external ID, see About the External ID in Using Temporary Security Credentials.

" + "documentation":"

A unique identifier that is used by third parties to assume a role in their customers' accounts. For each role that the third party can assume, they should instruct their customers to create a role with the external ID that the third party generated. Each time the third party assumes the role, they must pass the customer's external ID. The external ID is useful in order to help third parties bind a role to the customer who created it. For more information about the external ID, see About the External ID in Using Temporary Security Credentials.

" }, "SerialNumber":{ "shape":"serialNumberType", - "documentation":"

The identification number of the MFA device that is associated with the user who is making\n the AssumeRole call. Specify this value if the trust policy of the role being\n assumed includes a condition that requires MFA authentication. The value is either the serial\n number for a hardware device (such as GAHT12345678) or an Amazon Resource Name\n (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user).

" + "documentation":"

The identification number of the MFA device that is associated with the user who is making the AssumeRole call. Specify this value if the trust policy of the role being assumed includes a condition that requires MFA authentication. The value is either the serial number for a hardware device (such as GAHT12345678) or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user).

" }, "TokenCode":{ "shape":"tokenCodeType", - "documentation":"

The value provided by the MFA device, if the trust policy of the role being assumed requires\n MFA (that is, if the policy includes a condition that tests for MFA). If the role being\n assumed requires MFA and if the TokenCode value is missing or expired, the\n AssumeRole call returns an \"access denied\" error.

" + "documentation":"

The value provided by the MFA device, if the trust policy of the role being assumed requires MFA (that is, if the policy includes a condition that tests for MFA). If the role being assumed requires MFA and if the TokenCode value is missing or expired, the AssumeRole call returns an \"access denied\" error.

" } } }, @@ -309,18 +309,18 @@ "members":{ "Credentials":{ "shape":"Credentials", - "documentation":"

The temporary security credentials, which include an access key ID, a secret access key, and\n a security (or session) token.

" + "documentation":"

The temporary security credentials, which include an access key ID, a secret access key, and a security (or session) token.

" }, "AssumedRoleUser":{ "shape":"AssumedRoleUser", - "documentation":"

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can\n use to refer to the resulting temporary security credentials. For example, you can reference\n these credentials as a principal in a resource-based policy by using the ARN or assumed role\n ID. The ARN and ID include the RoleSessionName that you specified when you called\n AssumeRole.

" + "documentation":"

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can use to refer to the resulting temporary security credentials. For example, you can reference these credentials as a principal in a resource-based policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName that you specified when you called AssumeRole.

" }, "PackedPolicySize":{ "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects\n any policy with a packed size greater than 100 percent, which means the policy exceeded the\n allowed space.

" + "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space.

" } }, - "documentation":"

Contains the result of a successful call to the AssumeRole action, including\n temporary AWS credentials that can be used to make AWS requests.

" + "documentation":"

Contains the result of a successful call to the AssumeRole action, including temporary AWS credentials that can be used to make AWS requests.

" }, "AssumeRoleWithSAMLRequest":{ "type":"structure", @@ -340,15 +340,15 @@ }, "SAMLAssertion":{ "shape":"SAMLAssertionType", - "documentation":"

The base-64 encoded SAML authentication response provided by the IdP.

\n

For more information, see Configuring\n a Relying Party and Adding Claims in the Using IAM guide.

" + "documentation":"

The base-64 encoded SAML authentication response provided by the IdP.

For more information, see Configuring a Relying Party and Adding Claims in the Using IAM guide.

" }, "Policy":{ "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format.

\n\n

The policy parameter is optional. If you pass a policy, the temporary security credentials\n that are returned by the operation have the permissions that are allowed by both the access\n policy of the role that is being assumed, and the policy that you pass. This\n gives you a way to further restrict the permissions for the resulting temporary security\n credentials. You cannot use the passed policy to grant permissions that are in excess of those\n allowed by the access policy of the role that is being assumed. For more information, see Permissions for\n AssumeRoleWithSAML in Using Temporary Security Credentials.

\n\n The policy must be 2048 bytes or shorter, and its packed size must be less than 450\n bytes." + "documentation":"

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

" }, "DurationSeconds":{ "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15\n minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration\n can also be specified in the SAML authentication response's NotOnOrAfter value.\n The actual expiration time is whichever value is shorter.

\n\n The maximum duration for a session is 1 hour, and the minimum duration is 15 minutes, even\n if values outside this range are specified. " + "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the SAML authentication response's NotOnOrAfter value. The actual expiration time is whichever value is shorter.

" } } }, @@ -359,7 +359,7 @@ "AssumedRoleUser":{"shape":"AssumedRoleUser"}, "PackedPolicySize":{ "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects\n any policy with a packed size greater than 100 percent, which means the policy exceeded the\n allowed space.

" + "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space.

" }, "Subject":{"shape":"Subject"}, "SubjectType":{"shape":"SubjectType"}, @@ -367,7 +367,7 @@ "Audience":{"shape":"Audience"}, "NameQualifier":{"shape":"NameQualifier"} }, - "documentation":"

Contains the result of a successful call to the AssumeRoleWithSAML action, including\n temporary AWS credentials that can be used to make AWS requests.

" + "documentation":"

Contains the result of a successful call to the AssumeRoleWithSAML action, including temporary AWS credentials that can be used to make AWS requests.

" }, "AssumeRoleWithWebIdentityRequest":{ "type":"structure", @@ -383,23 +383,23 @@ }, "RoleSessionName":{ "shape":"userNameType", - "documentation":"

An identifier for the assumed role session. Typically, you pass the name or identifier that\n is associated with the user who is using your application. That way, the temporary security\n credentials that your application will use are associated with that user. This session name is\n included as part of the ARN and assumed role ID in the AssumedRoleUser response\n element.

" + "documentation":"

An identifier for the assumed role session. Typically, you pass the name or identifier that is associated with the user who is using your application. That way, the temporary security credentials that your application will use are associated with that user. This session name is included as part of the ARN and assumed role ID in the AssumedRoleUser response element.

" }, "WebIdentityToken":{ "shape":"clientTokenType", - "documentation":"

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity\n provider. Your application must get this token by authenticating the user who is using your\n application with a web identity provider before the application makes an\n AssumeRoleWithWebIdentity call.

" + "documentation":"

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity provider. Your application must get this token by authenticating the user who is using your application with a web identity provider before the application makes an AssumeRoleWithWebIdentity call.

" }, "ProviderId":{ "shape":"urlType", - "documentation":"

The fully-qualified host component of the domain name of the identity provider. Specify this\n value only for OAuth access tokens. Do not specify this value for OpenID Connect ID tokens,\n such as accounts.google.com. Do not include URL schemes and port numbers.\n Currently, www.amazon.com and graph.facebook.com are supported.

" + "documentation":"

The fully-qualified host component of the domain name of the identity provider. Specify this value only for OAuth access tokens. Do not specify this value for OpenID Connect ID tokens, such as accounts.google.com. Do not include URL schemes and port numbers. Currently, www.amazon.com and graph.facebook.com are supported.

" }, "Policy":{ "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format.

\n\n

The policy parameter is optional. If you pass a policy, the temporary security credentials\n that are returned by the operation have the permissions that are allowed by both the access\n policy of the role that is being assumed, and the policy that you pass. This\n gives you a way to further restrict the permissions for the resulting temporary security\n credentials. You cannot use the passed policy to grant permissions that are in excess of those\n allowed by the access policy of the role that is being assumed. For more information, see Permissions for\n AssumeRoleWithWebIdentity in Using Temporary Security Credentials.

" + "documentation":"

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithWebIdentity in Using Temporary Security Credentials.

" }, "DurationSeconds":{ "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15\n minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds.

" + "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds.

" } } }, @@ -408,30 +408,30 @@ "members":{ "Credentials":{ "shape":"Credentials", - "documentation":"

The temporary security credentials, which include an access key ID, a secret access key, and\n a security token.

" + "documentation":"

The temporary security credentials, which include an access key ID, a secret access key, and a security token.

" }, "SubjectFromWebIdentityToken":{ "shape":"webIdentitySubjectType", - "documentation":"

The unique user identifier that is returned by the identity provider. This identifier is\n associated with the WebIdentityToken that was submitted with the\n AssumeRoleWithWebIdentity call. The identifier is typically unique to the user\n and the application that acquired the WebIdentityToken (pairwise identifier). If\n an OpenID Connect ID token was submitted in the WebIdentityToken, this value is\n returned by the identity provider as the token's sub (Subject) claim.

" + "documentation":"

The unique user identifier that is returned by the identity provider. This identifier is associated with the WebIdentityToken that was submitted with the AssumeRoleWithWebIdentity call. The identifier is typically unique to the user and the application that acquired the WebIdentityToken (pairwise identifier). If an OpenID Connect ID token was submitted in the WebIdentityToken, this value is returned by the identity provider as the token's sub (Subject) claim.

" }, "AssumedRoleUser":{ "shape":"AssumedRoleUser", - "documentation":"

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can\n use to refer to the resulting temporary security credentials. For example, you can reference\n these credentials as a principal in a resource-based policy by using the ARN or assumed role\n ID. The ARN and ID include the RoleSessionName that you specified when you called\n AssumeRole.

" + "documentation":"

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can use to refer to the resulting temporary security credentials. For example, you can reference these credentials as a principal in a resource-based policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName that you specified when you called AssumeRole.

" }, "PackedPolicySize":{ "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects\n any policy with a packed size greater than 100 percent, which means the policy exceeded the\n allowed space.

" + "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space.

" }, "Provider":{ "shape":"Issuer", - "documentation":"

The issuing authority of the web identity token presented. For OpenID Connect ID Tokens this contains\n the value of the iss field. For OAuth 2.0 Access Tokens, this contains the value of the\n ProviderId parameter that was passed in the AssumeRoleWithWebIdentity request.

" + "documentation":"

The issuing authority of the web identity token presented. For OpenID Connect ID Tokens this contains the value of the iss field. For OAuth 2.0 Access Tokens, this contains the value of the ProviderId parameter that was passed in the AssumeRoleWithWebIdentity request.

" }, "Audience":{ "shape":"Audience", - "documentation":"

The intended audience of the web identity token. This is traditionally the\n client identifier issued to the application that requested the web identity token.

" + "documentation":"

The intended audience of the web identity token. This is traditionally the client identifier issued to the application that requested the web identity token.

" } }, - "documentation":"

Contains the result of a successful call to the AssumeRoleWithWebIdentity action,\n including temporary AWS credentials that can be used to make AWS requests.

" + "documentation":"

Contains the result of a successful call to the AssumeRoleWithWebIdentity action, including temporary AWS credentials that can be used to make AWS requests.

" }, "AssumedRoleUser":{ "type":"structure", @@ -442,11 +442,11 @@ "members":{ "AssumedRoleId":{ "shape":"assumedRoleIdType", - "documentation":"

A unique identifier that contains the role ID and the role session name of the role that is\n being assumed. The role ID is generated by AWS when the role is created.

" + "documentation":"

A unique identifier that contains the role ID and the role session name of the role that is being assumed. The role ID is generated by AWS when the role is created.

" }, "Arn":{ "shape":"arnType", - "documentation":"

The ARN of the temporary security credentials that are returned from the AssumeRole\n action. For more information about ARNs and how to use them in policies, see Identifiers for IAM Entities in Using IAM.

" + "documentation":"

The ARN of the temporary security credentials that are returned from the AssumeRole action. For more information about ARNs and how to use them in policies, see Identifiers for IAM Entities in Using IAM.

" } }, "documentation":"

The identifiers for the temporary security credentials that the operation returns.

" @@ -495,10 +495,10 @@ "members":{ "DecodedMessage":{ "shape":"decodedMessageType", - "documentation":"

An XML document that contains the decoded message. For more information, see\n DecodeAuthorizationMessage.

" + "documentation":"

An XML document that contains the decoded message. For more information, see DecodeAuthorizationMessage.

" } }, - "documentation":"

A document that contains additional information about the authorization status of a request\n from an encoded message that is returned in response to an AWS request.

" + "documentation":"

A document that contains additional information about the authorization status of a request from an encoded message that is returned in response to an AWS request.

" }, "ExpiredTokenException":{ "type":"structure", @@ -511,7 +511,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token\n from the identity provider and then retry the request.

" + "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token from the identity provider and then retry the request.

" }, "FederatedUser":{ "type":"structure", @@ -522,11 +522,11 @@ "members":{ "FederatedUserId":{ "shape":"federatedIdType", - "documentation":"

The string that identifies the federated user associated with the credentials, similar to the\n unique ID of an IAM user.

" + "documentation":"

The string that identifies the federated user associated with the credentials, similar to the unique ID of an IAM user.

" }, "Arn":{ "shape":"arnType", - "documentation":"

The ARN that specifies the federated user that is associated with the credentials. For more\n information about ARNs and how to use them in policies, see Identifiers for IAM Entities in Using IAM.

" + "documentation":"

The ARN that specifies the federated user that is associated with the credentials. For more information about ARNs and how to use them in policies, see Identifiers for IAM Entities in Using IAM.

" } }, "documentation":"

Identifiers for the federated user that is associated with the credentials.

" @@ -537,15 +537,15 @@ "members":{ "Name":{ "shape":"userNameType", - "documentation":"

The name of the federated user. The name is used as an identifier for the temporary security\n credentials (such as Bob). For example, you can reference the federated user name\n in a resource-based policy, such as in an Amazon S3 bucket policy.

" + "documentation":"

The name of the federated user. The name is used as an identifier for the temporary security credentials (such as Bob). For example, you can reference the federated user name in a resource-based policy, such as in an Amazon S3 bucket policy.

" }, "Policy":{ "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format that is passed with the GetFederationToken call\n and evaluated along with the policy or policies that are attached to the IAM user whose\n credentials are used to call GetFederationToken. The passed policy is used to\n scope down the permissions that are available to the IAM user, by allowing only a subset of\n the permissions that are granted to the IAM user. The passed policy cannot grant more\n permissions than those granted to the IAM user. The final permissions for the federated user\n are the most restrictive set based on the intersection of the passed policy and the IAM user\n policy.

\n\n

If you do not pass a policy, the resulting temporary security credentials have no effective\n permissions. The only exception is when the temporary security credentials are used to access\n a resource that has a resource-based policy that specifically allows the federated user to\n access the resource.

\n

For more information about how permissions work, see Permissions for\n GetFederationToken in Using Temporary Security Credentials.

" + "documentation":"

An IAM policy in JSON format that is passed with the GetFederationToken call and evaluated along with the policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken. The passed policy is used to scope down the permissions that are available to the IAM user, by allowing only a subset of the permissions that are granted to the IAM user. The passed policy cannot grant more permissions than those granted to the IAM user. The final permissions for the federated user are the most restrictive set based on the intersection of the passed policy and the IAM user policy.

If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource.

For more information about how permissions work, see Permissions for GetFederationToken in Using Temporary Security Credentials.

" }, "DurationSeconds":{ "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, that the session should last. Acceptable durations for federation\n sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200 seconds\n (12 hours) as the default. Sessions obtained using AWS account (root) credentials are\n restricted to a maximum of 3600 seconds (one hour). If the specified duration is longer than\n one hour, the session obtained by using AWS account (root) credentials defaults to one hour.\n

" + "documentation":"

The duration, in seconds, that the session should last. Acceptable durations for federation sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the default. Sessions obtained using AWS account (root) credentials are restricted to a maximum of 3600 seconds (one hour). If the specified duration is longer than one hour, the session obtained by using AWS account (root) credentials defaults to one hour.

" } } }, @@ -558,29 +558,29 @@ }, "FederatedUser":{ "shape":"FederatedUser", - "documentation":"

Identifiers for the federated user associated with the credentials (such as\n arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob).\n You can use the federated user's ARN in your resource-based policies, such as an Amazon S3\n bucket policy.

" + "documentation":"

Identifiers for the federated user associated with the credentials (such as arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob). You can use the federated user's ARN in your resource-based policies, such as an Amazon S3 bucket policy.

" }, "PackedPolicySize":{ "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value indicating the size of the policy in packed form. The service rejects\n policies for which the packed size is greater than 100 percent of the allowed value.

" + "documentation":"

A percentage value indicating the size of the policy in packed form. The service rejects policies for which the packed size is greater than 100 percent of the allowed value.

" } }, - "documentation":"

Contains the result of a successful call to the GetFederationToken action, including\n temporary AWS credentials that can be used to make AWS requests.

" + "documentation":"

Contains the result of a successful call to the GetFederationToken action, including temporary AWS credentials that can be used to make AWS requests.

" }, "GetSessionTokenRequest":{ "type":"structure", "members":{ "DurationSeconds":{ "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, that the credentials should remain valid. Acceptable durations for\n IAM user sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200\n seconds (12 hours) as the default. Sessions for AWS account owners are restricted to a maximum\n of 3600 seconds (one hour). If the duration is longer than one hour, the session for AWS\n account owners defaults to one hour.

" + "documentation":"

The duration, in seconds, that the credentials should remain valid. Acceptable durations for IAM user sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the default. Sessions for AWS account owners are restricted to a maximum of 3600 seconds (one hour). If the duration is longer than one hour, the session for AWS account owners defaults to one hour.

" }, "SerialNumber":{ "shape":"serialNumberType", - "documentation":"

The identification number of the MFA device that is associated with the IAM user who is\n making the GetSessionToken call. Specify this value if the IAM user has a policy\n that requires MFA authentication. The value is either the serial number for a hardware device\n (such as GAHT12345678) or an Amazon Resource Name (ARN) for a virtual device\n (such as arn:aws:iam::123456789012:mfa/user). You can find the device for an IAM\n user by going to the AWS Management Console and viewing the user's security credentials.

" + "documentation":"

The identification number of the MFA device that is associated with the IAM user who is making the GetSessionToken call. Specify this value if the IAM user has a policy that requires MFA authentication. The value is either the serial number for a hardware device (such as GAHT12345678) or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user). You can find the device for an IAM user by going to the AWS Management Console and viewing the user's security credentials.

" }, "TokenCode":{ "shape":"tokenCodeType", - "documentation":"

The value provided by the MFA device, if MFA is required. If any policy requires the IAM user\n to submit an MFA code, specify this value. If MFA authentication is required, and the user\n does not provide a code when requesting a set of temporary security credentials, the user will\n receive an \"access denied\" response when requesting resources that require MFA\n authentication.

" + "documentation":"

The value provided by the MFA device, if MFA is required. If any policy requires the IAM user to submit an MFA code, specify this value. If MFA authentication is required, and the user does not provide a code when requesting a set of temporary security credentials, the user will receive an \"access denied\" response when requesting resources that require MFA authentication.

" } } }, @@ -592,7 +592,7 @@ "documentation":"

The session credentials for API authentication.

" } }, - "documentation":"

Contains the result of a successful call to the GetSessionToken action, including\n temporary AWS credentials that can be used to make AWS requests.

" + "documentation":"

Contains the result of a successful call to the GetSessionToken action, including temporary AWS credentials that can be used to make AWS requests.

" }, "IDPCommunicationErrorException":{ "type":"structure", @@ -605,7 +605,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request could not be fulfilled because the non-AWS identity provider (IDP) that was asked\n to verify the incoming identity token could not be reached. This is often a transient error\n caused by network conditions. Retry the request a limited number of times so that you don't\n exceed the request rate. If the error persists, the non-AWS identity provider might be down or\n not responding.

" + "documentation":"

The request could not be fulfilled because the non-AWS identity provider (IDP) that was asked to verify the incoming identity token could not be reached. This is often a transient error caused by network conditions. Retry the request a limited number of times so that you don't exceed the request rate. If the error persists, the non-AWS identity provider might be down or not responding.

" }, "IDPRejectedClaimException":{ "type":"structure", @@ -618,7 +618,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the\n claim is invalid.

\n

If this error is returned for the AssumeRoleWithWebIdentity operation, it can\n also mean that the claim has expired or has been explicitly revoked.

" + "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the claim is invalid.

If this error is returned for the AssumeRoleWithWebIdentity operation, it can also mean that the claim has expired or has been explicitly revoked.

" }, "InvalidAuthorizationMessageException":{ "type":"structure", @@ -634,7 +634,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The error returned if the message passed to DecodeAuthorizationMessage was\n invalid. This can happen if the token contains invalid characters, such as linebreaks.

" + "documentation":"

The error returned if the message passed to DecodeAuthorizationMessage was invalid. This can happen if the token contains invalid characters, such as linebreaks.

" }, "InvalidIdentityTokenException":{ "type":"structure", @@ -647,7 +647,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity\n token from the identity provider and then retry the request.

" + "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity token from the identity provider and then retry the request.

" }, "Issuer":{"type":"string"}, "MalformedPolicyDocumentException":{ @@ -661,7 +661,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message\n describes the specific error.

" + "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" }, "NameQualifier":{"type":"string"}, "PackedPolicyTooLargeException":{ @@ -675,7 +675,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message\n describes how big the policy document is, in packed form, as a percentage of what the API\n allows.

" + "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" }, "SAMLAssertionType":{ "type":"string", diff --git a/AWSCore/Serialization/AWSSerialization.h b/AWSCore/Serialization/AWSSerialization.h index 0bd7f522ddf..f82620cb297 100644 --- a/AWSCore/Serialization/AWSSerialization.h +++ b/AWSCore/Serialization/AWSSerialization.h @@ -56,6 +56,43 @@ typedef NS_ENUM(NSInteger, AWSQueryParamBuilderErrorType) { AWSQueryParamBuilderDefinitionFileIsEmpty, AWSQueryParamBuilderUndefinedActionRule, AWSQueryParamBuilderInternalError, + AWSQueryParamBuilderInvalidParameter, +}; + +//defined domain for errors from AWSRuntime. +FOUNDATION_EXPORT NSString *const AWSEC2ParamBuilderErrorDomain; + +/* NSError codes in AWSErrorDomain. */ +typedef NS_ENUM(NSInteger, AWSEC2ParamBuilderErrorType) { + AWSEC2ParamBuilderUnknownError, + AWSEC2ParamBuilderDefinitionFileIsEmpty, + AWSEC2ParamBuilderUndefinedActionRule, + AWSEC2ParamBuilderInternalError, + AWSEC2ParamBuilderInvalidParameter, +}; + +//defined domain for errors from AWSRuntime. +FOUNDATION_EXPORT NSString *const AWSJSONBuilderErrorDomain; + +/* NSError codes in AWSErrorDomain. */ +typedef NS_ENUM(NSInteger, AWSJSONBuilderErrorType) { + AWSJSONBuilderUnknownError, + AWSJSONBuilderDefinitionFileIsEmpty, + AWSJSONBuilderUndefinedActionRule, + AWSJSONBuilderInternalError, + AWSJSONBuilderInvalidParameter, +}; + +//defined domain for errors from AWSRuntime. +FOUNDATION_EXPORT NSString *const AWSJSONParserErrorDomain; + +/* NSError codes in AWSErrorDomain. */ +typedef NS_ENUM(NSInteger, AWSJSONParserErrorType) { + AWSJSONParserUnknownError, + AWSJSONParserDefinitionFileIsEmpty, + AWSJSONParserUndefinedActionRule, + AWSJSONParserInternalError, + AWSJSONParserInvalidParameter, }; @interface AWSJSONDictionary : NSDictionary @@ -100,3 +137,34 @@ typedef NS_ENUM(NSInteger, AWSQueryParamBuilderErrorType) { error:(NSError *__autoreleasing *)error; @end + +@interface AWSEC2ParamBuilder : NSObject + ++ (NSDictionary *)buildFormattedParams:(NSDictionary *)params + actionName:(NSString *)actionName + serviceDefinitionRule:(NSDictionary *)serviceDefinitionRule + error:(NSError *__autoreleasing *)error; + +@end + +@interface AWSJSONBuilder : NSObject + ++ (NSData *)jsonDataForDictionary:(NSDictionary *)params + actionName:(NSString *)actionName + serviceDefinitionRule:(NSDictionary *)serviceDefinitionRule + error:(NSError *__autoreleasing *)error; + +@end + +@interface AWSJSONParser : NSObject + ++ (NSDictionary *)dictionaryForJsonData:(NSData *)data + actionName:(NSString *)actionName + serviceDefinitionRule:(NSDictionary *)serviceDefinitionRule + error:(NSError *__autoreleasing *)error; + +@end + + + + diff --git a/AWSCore/Serialization/AWSSerialization.m b/AWSCore/Serialization/AWSSerialization.m index df43a38edcd..348b8d1d884 100644 --- a/AWSCore/Serialization/AWSSerialization.m +++ b/AWSCore/Serialization/AWSSerialization.m @@ -15,13 +15,16 @@ #import "AWSSerialization.h" #import "AWSXMLWriter.h" -#import "AZCategory.h" -#import "AZLogging.h" +#import "AWSCategory.h" +#import "AWSLogging.h" #import "XMLDictionary.h" NSString *const AWSXMLBuilderErrorDomain = @"com.amazonaws.AWSXMLBuilderErrorDomain"; NSString *const AWSXMLParserErrorDomain = @"com.amazonaws.AWSXMLParserErrorDomain"; NSString *const AWSQueryParamBuilderErrorDomain = @"com.amazonaws.AWSQueryParamBuilderErrorDomain"; +NSString *const AWSEC2ParamBuilderErrorDomain = @"com.amazonaws.AWSEC2ParamBuilderErrorDomain"; +NSString *const AWSJSONBuilderErrorDomain = @"com.amazonaws.AWSJSONBuilderErrorDomain"; +NSString *const AWSJSONParserErrorDomain = @"com.amazonaws.AWSJSONParserErrorDomain"; @interface AWSJSONDictionary() @property (nonatomic, strong) NSDictionary *embeddedDictionary; @@ -134,9 +137,20 @@ + (AWSXMLWriter *)xmlBuildForDictionary:(NSDictionary *)params actionName:(NSStr AWSXMLWriter* xmlWriter = [[AWSXMLWriter alloc]init]; - AWSJSONDictionary *rules = [[AWSJSONDictionary alloc] initWithDictionary:actionRule JSONDefinitionRule:definitionRules]; + + NSString *xmlElementName = rules[@"locationName"]; + if (xmlElementName) { + [xmlWriter writeStartElement:xmlElementName]; + [self applyNamespacesAndAttributesByRules:rules params:params xmlWriter:xmlWriter]; + } + [self serializeStructure:params rules:rules xmlWriter:xmlWriter error:error isRootRule:YES]; + + if (xmlElementName) { + [xmlWriter writeEndElement:xmlElementName]; + } + return xmlWriter; } @@ -151,11 +165,14 @@ + (BOOL)serializeStructure:(NSDictionary *)params rules:(AWSJSONDictionary *)rul id value = params[payloadMemberName]; if (value) { AWSJSONDictionary *payloadMemberRules = structureMembersRule[payloadMemberName]; - return [self serializeMember:value name:payloadMemberName rules:payloadMemberRules xmlWriter:xmlWriter error:error]; + return [self serializeMember:value name:payloadMemberName rules:payloadMemberRules isPayloadType:YES xmlWriter:xmlWriter error:error]; + } else { + //no payload exists, should return + return YES; } } - return YES; + //if no payload trait, continue to process } __block BOOL isValid = YES; @@ -170,8 +187,13 @@ + (BOOL)serializeStructure:(NSDictionary *)params rules:(AWSJSONDictionary *)rul return; } + if (memberRules[@"location"]) { + //It should be another location rather than body, will be process at different place + return; + } + - if (![self serializeMember:value name:memberName rules:memberRules xmlWriter:xmlWriter error:&blockErr]) { + if (![self serializeMember:value name:memberName rules:memberRules isPayloadType:NO xmlWriter:xmlWriter error:&blockErr]) { *stop = YES; isValid = NO; return; @@ -192,7 +214,7 @@ + (BOOL)serializeList:(NSArray *)list name:(NSString *)name rules:(AWSJSONDictio if ([rules[@"flattened"] boolValue]) { [list enumerateObjectsUsingBlock:^(id value, NSUInteger idx, BOOL *stop) { - if (![self serializeMember:value name:xmlListName rules:memberRules xmlWriter:xmlWriter error:&blockErr]) { + if (![self serializeMember:value name:xmlListName rules:memberRules isPayloadType:NO xmlWriter:xmlWriter error:&blockErr]) { *stop = YES; isValid = NO; return ; @@ -204,8 +226,8 @@ + (BOOL)serializeList:(NSArray *)list name:(NSString *)name rules:(AWSJSONDictio [xmlWriter writeStartElement:xmlListName]; [list enumerateObjectsUsingBlock:^(id value, NSUInteger idx, BOOL *stop) { - - if (![self serializeMember:value name:name rules:memberRules xmlWriter:xmlWriter error:&blockErr]) { + //non-flattened list without locationName should use 'member' as default name + if (![self serializeMember:value name:@"member" rules:memberRules isPayloadType:NO xmlWriter:xmlWriter error:&blockErr]) { *stop = YES; isValid = NO; @@ -220,7 +242,7 @@ + (BOOL)serializeList:(NSArray *)list name:(NSString *)name rules:(AWSJSONDictio return isValid; } -+ (BOOL)serializeMember:(id)params name:(NSString *)memberName rules:(AWSJSONDictionary *)rules xmlWriter:(AWSXMLWriter *)xmlWriter error:(NSError *__autoreleasing *)error { ++ (BOOL)serializeMember:(id)params name:(NSString *)memberName rules:(AWSJSONDictionary *)rules isPayloadType:(Boolean)isPayloadType xmlWriter:(AWSXMLWriter *)xmlWriter error:(NSError *__autoreleasing *)error { NSString *xmlElementName = rules[@"locationName"]?rules[@"locationName"]:memberName; NSString *rulesType = rules[@"type"]; if ([rulesType isEqualToString:@"structure"]) { @@ -236,13 +258,11 @@ + (BOOL)serializeMember:(id)params name:(NSString *)memberName rules:(AWSJSONDic NSDate *timeStampDate; //maybe a NSDate type or NSNumber type or NSString type if ([params isKindOfClass:[NSString class]]) { - if ([params doubleValue] == 0.0) { - //not a float type, just pass the string - [xmlWriter writeStartElement:xmlElementName]; - [xmlWriter writeCharacters:params]; - [xmlWriter writeEndElement:xmlElementName]; - } else { - //need to convert to NSDate type + //try parse the string to NSDate first + timeStampDate = [NSDate aws_dateFromString:params]; + + //if failed, then parse it as double value + if (!timeStampDate) { timeStampDate = [NSDate dateWithTimeIntervalSince1970:[params doubleValue]]; } } else if ([params isKindOfClass:[NSNumber class]]) { @@ -254,27 +274,59 @@ + (BOOL)serializeMember:(id)params name:(NSString *)memberName rules:(AWSJSONDic } //generate string presentation of timestamp - NSString *timestampStr = [timeStampDate az_stringValue:AZDateISO8601DateFormat2]; + NSString *timestampStr = @""; + if ([rules[@"timestampFormat"] isEqualToString:@"iso8601"]) { + timestampStr = [timeStampDate aws_stringValue:AWSDateISO8601DateFormat1]; + } else if ([rules[@"timestampFormat"] isEqualToString:@"unixTimestamp"]) { + timestampStr = [NSString stringWithFormat:@"%.lf",[timeStampDate timeIntervalSince1970]]; + } else { + timestampStr = [timeStampDate aws_stringValue:AWSDateRFC822DateFormat1]; + } - [xmlWriter writeStartElement:xmlElementName]; + + if (isPayloadType == NO) [xmlWriter writeStartElement:xmlElementName]; [xmlWriter writeCharacters:timestampStr]; - [xmlWriter writeEndElement:xmlElementName]; + if (isPayloadType == NO) [xmlWriter writeEndElement:xmlElementName]; } else if ([rulesType isEqualToString:@"integer"] || [rulesType isEqualToString:@"long"] || [rulesType isEqualToString:@"float"] || [rulesType isEqualToString:@"double"]) { NSNumber *numberValue = params; - [xmlWriter writeStartElement:xmlElementName]; + if (isPayloadType == NO) [xmlWriter writeStartElement:xmlElementName]; [xmlWriter writeCharacters:[numberValue stringValue]]; - [xmlWriter writeEndElement:xmlElementName]; + if (isPayloadType == NO) [xmlWriter writeEndElement:xmlElementName]; } else if ([rulesType isEqualToString:@"blob"]) { - //TODO: validate if base64 format - //just skip, will be handled as special case. may be streaming type + //just handle the non-streaming body, streaming body will be handled in 'constructURIandHeadersAndBody' method + if ([rules[@"streaming"] boolValue] == NO) { + + //encode NSData to Base64String + if ([params isKindOfClass:[NSString class]]) { + params = [params dataUsingEncoding:NSUTF8StringEncoding]; + } + if ([params isKindOfClass:[NSData class]]) { + if (isPayloadType == NO) { + NSString *base64encodedStr = [params base64EncodedStringWithOptions:0]; + [xmlWriter writeStartElement:xmlElementName]; + [xmlWriter writeCharacters:base64encodedStr]; + [xmlWriter writeEndElement:xmlElementName]; + } else { + //Do not base64 encoding if it is payload type + NSString* utf8String = [[NSString alloc] initWithData:params encoding:NSUTF8StringEncoding]; + [xmlWriter writeCharacters:utf8String?utf8String:@""]; + } + + } else { + [self failWithCode:AWSXMLBuilderInvalidXMLValue description:@"'blob' value should be a NSData type." error:error]; + return NO; + } + + } + } else if ([rulesType isEqualToString:@"boolean"]) { - [xmlWriter writeStartElement:xmlElementName]; + if (isPayloadType == NO) [xmlWriter writeStartElement:xmlElementName]; [xmlWriter writeCharacters:[params boolValue]?@"true":@"false"]; - [xmlWriter writeEndElement:xmlElementName]; + if (isPayloadType == NO) [xmlWriter writeEndElement:xmlElementName]; } else if ([rulesType isEqualToString:@"string"]) { - [xmlWriter writeStartElement:xmlElementName]; + if (isPayloadType == NO) [xmlWriter writeStartElement:xmlElementName]; [xmlWriter writeCharacters:params]; - [xmlWriter writeEndElement:xmlElementName]; + if (isPayloadType == NO) [xmlWriter writeEndElement:xmlElementName]; } else { [self failWithCode:AWSXMLBuilderUnCatchedRuleTypeInDifinitionFile description:[NSString stringWithFormat:@"uncatched ruletype:%@ for value:%@",rulesType,[params description]] error:error]; return NO; @@ -407,7 +459,11 @@ - (NSMutableDictionary *)dictionaryForXMLData:(NSData *)data return nil; } - NSMutableDictionary *rootXmlDictionary = [[self.xmlDictionaryParser dictionaryWithData:data] mutableCopy]; //TODO: need error parameters for parsing + NSMutableDictionary *rootXmlDictionary = nil; + if ([data isKindOfClass:[NSData class]]) { + rootXmlDictionary = [[self.xmlDictionaryParser dictionaryWithData:data] mutableCopy]; //TODO: need error parameters for parsing + } + NSString *rootNodeName = [[rootXmlDictionary allKeys] firstObject]; NSMutableDictionary *xmlDictionary = ([rootXmlDictionary[rootNodeName] isKindOfClass:[NSDictionary class]] && [rootXmlDictionary[rootNodeName] count] > 0)?rootXmlDictionary[rootNodeName]:rootXmlDictionary; @@ -431,12 +487,25 @@ - (NSMutableDictionary *)dictionaryForXMLData:(NSData *)data }else { AWSJSONDictionary *rules = [[AWSJSONDictionary alloc] initWithDictionary:actionRule JSONDefinitionRule:definitionRules]; - xmlDictionary = [AWSXMLParser preprocessDictionary:xmlDictionary operationName:actionName actionRule:actionRule serviceDefinitionRule:serviceDefinitionRule]; - + xmlDictionary = [AWSXMLParser preprocessDictionary:xmlDictionary operationName:actionName actionRule:rules serviceDefinitionRule:serviceDefinitionRule]; + NSString *isPayloadData = rules[@"payload"]; rules = rules[@"members"]?rules[@"members"]:@{}; + NSMutableDictionary *parsedData = [NSMutableDictionary new]; + + if (isPayloadData) { + //check if it is streaming type + if (rules[isPayloadData][@"streaming"]) { + parsedData[isPayloadData] = data; + return parsedData; + } + + rules = rules[isPayloadData][@"members"]; + parsedData[isPayloadData] = [AWSXMLParser parseStructure:xmlDictionary rules:rules error:error]; + } else { + parsedData = [AWSXMLParser parseStructure:xmlDictionary rules:rules error:error]; + } - NSMutableDictionary *parsedData = [AWSXMLParser parseStructure:xmlDictionary rules:rules error:error]; if ([parsedData count] == 0) { //try again with rootDictionary if it is S3 response @@ -542,7 +611,7 @@ + (NSMutableDictionary *)parseStructure:(NSDictionary *)structure rules:(AWSJSON NSString *keyName = [self findKeyNameByXMLName:xmlName rules:rules]; if (!keyName) { if (![xmlName isEqualToString:@"_xmlns"] && ![xmlName isEqualToString:@"requestId"]) { - AZLogWarn(@"Can not find the xmlName:%@ in definition to serialize xml data: %@", xmlName, [value description]); + AWSLogWarn(@"Can not find the xmlName:%@ in definition to serialize xml data: %@", xmlName, [value description]); } /*[self failWithCode:AWSXMLParserXMLNameNotFoundInDefinition @@ -570,29 +639,49 @@ + (NSMutableDictionary *)parseStructure:(NSDictionary *)structure rules:(AWSJSON return data; } -+ (NSMutableDictionary *)parseMap:(NSArray *)map rules:(AWSJSONDictionary *)rules error:(NSError *__autoreleasing *)error { ++ (NSMutableDictionary *)parseMap:(id)map rules:(AWSJSONDictionary *)rules error:(NSError *__autoreleasing *)error { AWSJSONDictionary *keyRules = rules[@"key"]?rules[@"key"]:@{}; AWSJSONDictionary *valueRules = rules[@"value"]?rules[@"value"]:@{}; - NSString *keyName = keyRules[@"name"]?keyRules[@"name"]:@"key"; - NSString *valueName = valueRules[@"name"]?valueRules[@"name"]:@"value"; + NSString *keyName = keyRules[@"locationName"]?keyRules[@"locationName"]:@"key"; + NSString *valueName = valueRules[@"locationName"]?valueRules[@"locationName"]:@"value"; __block NSMutableDictionary *data = [NSMutableDictionary dictionary]; if (![self validateConstraint:map rules:rules error:error]) return data; - if ([map isKindOfClass:[NSDictionary class]]) { - // if 'map' isn't an array but a dictionary, we create a new array containing our object - map = @[map]; + NSArray *mapList = nil; + if ([rules[@"flattened"] boolValue] == NO) { + //If it is non-flatened map,retrive the array with key 'entry' if it has one + if ([map isKindOfClass:[NSDictionary class]] && [map objectForKey:@"entry"]) { + mapList = [map objectForKey:@"entry"]; + } else { + mapList = map; + } + } else { + mapList = map; + } + + + //if no content, return empty dictionary + if (!mapList) { + return data; + } + // if 'map' array has only one entry, it will be treat as dictionary, we need to add a array wrapper for that. + if ([mapList isKindOfClass:[NSDictionary class]]) { + mapList = @[mapList]; } - if (![map isKindOfClass:[NSArray class]]) { - [self failWithCode:AWSXMLParserUnExpectedType description:[NSString stringWithFormat:@"xml(map type) should be an array but got:%@",NSStringFromClass([map class])] error:error]; + if (![mapList isKindOfClass:[NSArray class]]) { + [self failWithCode:AWSXMLParserUnExpectedType description:[NSString stringWithFormat:@"xml(mapList type) should be an array but got:%@",NSStringFromClass([mapList class])] error:error]; return [NSMutableDictionary new]; } else { __block NSError *blockErr = nil; - [map enumerateObjectsUsingBlock:^(id entry, NSUInteger idx, BOOL *stop) { - data[entry[keyName]] = [self parseMember:entry[valueName] rules:valueRules error:&blockErr]; - if (blockErr) *stop = YES; + [mapList enumerateObjectsUsingBlock:^(id entry, NSUInteger idx, BOOL *stop) { + NSString *dataKeyName = entry[keyName]; + if (dataKeyName) { + data[dataKeyName] = [self parseMember:entry[valueName] rules:valueRules error:&blockErr]; + if (blockErr) *stop = YES; + } }]; if (error) *error = blockErr; return data; @@ -662,7 +751,7 @@ + (id)parseMember:(id)values rules:(AWSJSONDictionary *)rules error:(NSError *__ //validate the value if (![self validateConstraint:values rules:rules error:error]) return @"XMLPARSER:ERROR"; - if ([rulesType isEqualToString:@"string"]) { + if ([rulesType isEqualToString:@"string"] || [rulesType isEqualToString:@"character"]) { if ([values isKindOfClass:[NSString class]]) { return values; } else if ([values isKindOfClass:[NSDictionary class]] && [values count] == 0) { @@ -697,10 +786,46 @@ + (id)parseMember:(id)values rules:(AWSJSONDictionary *)rules error:(NSError *__ } } else if ([rulesType isEqualToString:@"timestamp"]) { //a value with NSNumber type should be a good timestamp. - return values; + NSDate *timeStampDate; + //maybe a NSDate type or NSNumber type or NSString type + if ([values isKindOfClass:[NSString class]]) { + //try parse the string to NSDate first + timeStampDate = [NSDate aws_dateFromString:values]; + + //if failed, then parse it as double value + if (!timeStampDate) { + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[values doubleValue]]; + } + } else if ([values isKindOfClass:[NSNumber class]]) { + //need to convert to NSDate type + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[values doubleValue]]; + + } else if ([values isKindOfClass:[NSDate class]]) { + timeStampDate = values; + } + + //generate string presentation of timestamp + NSString *timestampStr = @""; + if ([rules[@"timestampFormat"] isEqualToString:@"iso8601"]) { + timestampStr = [timeStampDate aws_stringValue:AWSDateISO8601DateFormat1]; + } else if ([rules[@"timestampFormat"] isEqualToString:@"unixTimestamp"]) { + timestampStr = [NSString stringWithFormat:@"%.lf",[timeStampDate timeIntervalSince1970]]; + } else { + timestampStr = [timeStampDate aws_stringValue:AWSDateISO8601DateFormat1]; + } + + return timestampStr; + } else if ([rulesType isEqualToString:@"blob"]) { + + //decode Base64Str to NSData if ([values isKindOfClass:[NSString class]]) { - return values; + NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:values options:0]; + //return origin string value if can not be encoded. + return decodedData?decodedData:values; + } else { + [self failWithCode:AWSXMLParserInvalidXMLValue description:@"blob value should be NSString type" error:error]; + return [NSData new]; } } @@ -731,9 +856,9 @@ + (NSDictionary *)buildFormattedParams:(NSDictionary *)params //add ActionName - NSString *urlEncodedActionName = [actionName az_stringWithURLEncoding]; + NSString *urlEncodedActionName = [actionName aws_stringWithURLEncoding]; if (!urlEncodedActionName) { - AZLogError(@"actionName is nil!"); + AWSLogError(@"actionName is nil!"); [self failWithCode:AWSQueryParamBuilderInternalError description:@"actionName is nil" error:error]; return nil; } @@ -743,15 +868,15 @@ + (NSDictionary *)buildFormattedParams:(NSDictionary *)params //add Version Number if (serviceDefinitionRule[@"metadata"] && serviceDefinitionRule[@"metadata"][@"apiVersion"] && [serviceDefinitionRule[@"metadata"][@"apiVersion"] isKindOfClass:[NSString class]]) { - NSString *urlEncodedAPIVersion = [serviceDefinitionRule[@"metadata"][@"apiVersion"] az_stringWithURLEncoding]; + NSString *urlEncodedAPIVersion = [serviceDefinitionRule[@"metadata"][@"apiVersion"] aws_stringWithURLEncoding]; if (urlEncodedAPIVersion) { [formattedParams setObject:urlEncodedAPIVersion forKey:@"Version"]; } else { - AZLogError(@"can not encode APIVersion String:%@",urlEncodedAPIVersion); + AWSLogError(@"can not encode APIVersion String:%@",urlEncodedAPIVersion); } } else { - AZLogError(@"can not find apiVersion keyword in definition file!"); + AWSLogError(@"can not find apiVersion keyword in definition file!"); } if ([params count] == 0) { @@ -840,8 +965,9 @@ + (BOOL)serializeMap:(NSDictionary *)values rules:(AWSJSONDictionary *)mapRules prefix = [prefix stringByAppendingString:@".entry"]; } + NSArray *allKeysArray = [[values allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; int index = 0; - for (NSString *key in values) { + for (NSString *key in allKeysArray) { id value = values[key]; [self serializeMember:key rules:mapRules[@"key"] prefix:[NSString stringWithFormat:@"%@.%d.%@",prefix,index+1,[self queryName:mapRules[@"key"] withDefaultName:@"key"]] formattedParams:formattedParams error:error]; @@ -873,12 +999,11 @@ + (BOOL)serializeMember:(id)value rules:(AWSJSONDictionary *)shape prefix:(NSStr NSDate *timeStampDate; //maybe a NSDate type or NSNumber type or NSString type if ([value isKindOfClass:[NSString class]]) { - if ([value doubleValue] == 0.0) { - //not a float type, just pass the string - formattedParams[prefix] = value; - return YES; - } else { - //need to convert to NSDate type + //try parse the string to NSDate first + timeStampDate = [NSDate aws_dateFromString:value]; + + //if failed, then parse it as double value + if (!timeStampDate) { timeStampDate = [NSDate dateWithTimeIntervalSince1970:[value doubleValue]]; } } else if ([value isKindOfClass:[NSNumber class]]) { @@ -890,31 +1015,626 @@ + (BOOL)serializeMember:(id)value rules:(AWSJSONDictionary *)shape prefix:(NSStr } //generate string presentation of timestamp - NSString *timestampStr = [timeStampDate az_stringValue:AZDateISO8601DateFormat2]; + //generate string presentation of timestamp + NSString *timestampStr = @""; + if ([shape[@"timestampFormat"] isEqualToString:@"iso8601"]) { + timestampStr = [timeStampDate aws_stringValue:AWSDateISO8601DateFormat1]; + } else if ([shape[@"timestampFormat"] isEqualToString:@"unixTimestamp"]) { + timestampStr = [NSString stringWithFormat:@"%.lf",[timeStampDate timeIntervalSince1970]]; + } else { + //default timeStamp format + timestampStr = [timeStampDate aws_stringValue:AWSDateISO8601DateFormat1]; + } + + if (!timestampStr) { + timestampStr = @""; + } formattedParams[prefix] = timestampStr; } else if ([rulesType isEqualToString:@"blob"]) { - //TODO: validate if base64 format + + //encode NSData to Base64String + if ([value isKindOfClass:[NSString class]]) { + value = [value dataUsingEncoding:NSUTF8StringEncoding]; + } if ([value isKindOfClass:[NSData class]]) { - formattedParams[prefix] = [value base64EncodedDataWithOptions:0]; - } else if ([value isKindOfClass:[NSString class]]) { - formattedParams[prefix] = [value az_base64EncodedString]; + NSString *base64encodedStr = [value base64EncodedStringWithOptions:0]; + formattedParams[prefix] = base64encodedStr?base64encodedStr:@""; } else { + [self failWithCode:AWSQueryParamBuilderInvalidParameter description:@"'blob' value should be a NSData type." error:error]; return NO; } - + } else if ([rulesType isEqualToString:@"boolean"]) { formattedParams[prefix] = [value boolValue]?@"true":@"false"; } else { formattedParams[prefix] = value; } - + return YES; } + (NSString *)queryName:(NSDictionary *)shape withDefaultName:(NSString *)defaultName { - + return shape[@"locationName"]?shape[@"locationName"]:defaultName; } @end + +@implementation AWSEC2ParamBuilder + ++ (BOOL)failWithCode:(NSInteger)code description:(NSString *)description error:(NSError *__autoreleasing *)error { + if (error) { + *error = [NSError errorWithDomain:AWSEC2ParamBuilderErrorDomain + code:code + userInfo:@{NSLocalizedDescriptionKey : description}]; + } + return NO; +} + ++ (NSDictionary *)buildFormattedParams:(NSDictionary *)params + actionName:(NSString *)actionName + serviceDefinitionRule:(NSDictionary *)serviceDefinitionRule + error:(NSError *__autoreleasing *)error { + NSMutableDictionary *formattedParams = [NSMutableDictionary new]; + + + //add ActionName + NSString *urlEncodedActionName = [actionName aws_stringWithURLEncoding]; + if (!urlEncodedActionName) { + AWSLogError(@"actionName is nil!"); + [self failWithCode:AWSEC2ParamBuilderInternalError description:@"actionName is nil" error:error]; + return nil; + } + + [formattedParams setObject:urlEncodedActionName forKey:@"Action"]; + + + //add Version Number + if (serviceDefinitionRule[@"metadata"] && serviceDefinitionRule[@"metadata"][@"apiVersion"] && [serviceDefinitionRule[@"metadata"][@"apiVersion"] isKindOfClass:[NSString class]]) { + NSString *urlEncodedAPIVersion = [serviceDefinitionRule[@"metadata"][@"apiVersion"] aws_stringWithURLEncoding]; + if (urlEncodedAPIVersion) { + [formattedParams setObject:urlEncodedAPIVersion forKey:@"Version"]; + } else { + AWSLogError(@"can not encode APIVersion String:%@",urlEncodedAPIVersion); + } + + } else { + AWSLogError(@"can not find apiVersion keyword in definition file!"); + } + + if ([params count] == 0) { + return formattedParams; + } + + //add params + NSDictionary *actionRule = [[[serviceDefinitionRule objectForKey:@"operations"] objectForKey:actionName] objectForKey:@"input"]; + NSDictionary *definitionRules = [serviceDefinitionRule objectForKey:@"shapes"]; + + if (definitionRules == (id)[NSNull null] || [definitionRules count] == 0) { + [self failWithCode:AWSEC2ParamBuilderDefinitionFileIsEmpty description:@"JSON definition File is empty or can not be found" error:error]; + return nil; + } + + + + if ([actionRule count] == 0) { + [self failWithCode:AWSEC2ParamBuilderUndefinedActionRule description:@"Invalid argument: actionRule is Empty" error:error]; + return nil; + } + + AWSJSONDictionary *rules = [[AWSJSONDictionary alloc] initWithDictionary:actionRule JSONDefinitionRule:definitionRules]; + + + [AWSEC2ParamBuilder serializeStructure:params rules:rules prefix:@"" formattedParams:formattedParams error:error]; + + + return formattedParams; + +} + ++ (BOOL)serializeStructure:(NSDictionary *)values rules:(AWSJSONDictionary *)structureRules prefix:(NSString *)prefix formattedParams:(NSMutableDictionary *)formattedParams error:(NSError *__autoreleasing *)error { + + for (NSString *name in values) { + id value = values[name]; + + AWSJSONDictionary *memberShape = structureRules[@"members"][name]; + if (memberShape && value) { + [self serializeMember:value rules:memberShape prefix:[NSString stringWithFormat:@"%@%@",prefix,[self queryName:memberShape withDefaultName:name]] formattedParams:formattedParams error:error]; + if (error && *error != nil) { + return NO; + } + } + } + return YES; +} + ++ (BOOL)serializeList:(NSArray *)values rules:(AWSJSONDictionary *)listRules prefix:(NSString *)prefix formattedParams:(NSMutableDictionary *)formattedParams error:(NSError *__autoreleasing *)error { + if (values == nil) { + if (prefix) { + [formattedParams setObject:prefix forKey:@""]; + } + return YES; + } + + for (int i = 0; i < [values count] ; i++) { + id value = values[i]; + [self serializeMember:value rules:listRules[@"member"] prefix:[NSString stringWithFormat:@"%@.%d",prefix,i+1] formattedParams:formattedParams error:error]; + if (error && *error != nil) { + return NO; + } + } + + return YES; +} + ++ (BOOL)serializeMember:(id)value rules:(AWSJSONDictionary *)shape prefix:(NSString *)prefix formattedParams:(NSMutableDictionary *)formattedParams error:(NSError *__autoreleasing *)error { + + if (prefix == nil) { + prefix = @""; + } + + NSString *rulesType = shape[@"type"]; + if ([rulesType isEqualToString:@"structure"]) { + [self serializeStructure:value rules:shape prefix:[NSString stringWithFormat:@"%@.",prefix] formattedParams:formattedParams error:error]; + } else if ([rulesType isEqualToString:@"list"]) { + [self serializeList:value rules:shape prefix:prefix formattedParams:formattedParams error:error]; + } else if ([rulesType isEqualToString:@"map"]) { + // EC2 does not have any map type yet + [self failWithCode:AWSEC2ParamBuilderInternalError description:@"serialize map type value has not been implemented yet" error:error]; + return NO; + + } else if ([rulesType isEqualToString:@"timestamp"]) { + NSDate *timeStampDate; + //maybe a NSDate type or NSNumber type or NSString type + if ([value isKindOfClass:[NSString class]]) { + //try parse the string to NSDate first + timeStampDate = [NSDate aws_dateFromString:value]; + + //if failed, then parse it as double value + if (!timeStampDate) { + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[value doubleValue]]; + } + } else if ([value isKindOfClass:[NSNumber class]]) { + //need to convert to NSDate type + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[value doubleValue]]; + + } else if ([value isKindOfClass:[NSDate class]]) { + timeStampDate = value; + } + + //generate string presentation of timestamp + NSString *timestampStr = @""; + if ([shape[@"timestampFormat"] isEqualToString:@"iso8601"]) { + timestampStr = [timeStampDate aws_stringValue:AWSDateISO8601DateFormat1]; + } else if ([shape[@"timestampFormat"] isEqualToString:@"unixTimestamp"]) { + timestampStr = [NSString stringWithFormat:@"%.lf",[timeStampDate timeIntervalSince1970]]; + } else { + //default timeStamp format + timestampStr = [timeStampDate aws_stringValue:AWSDateISO8601DateFormat1]; + } + + if (!timestampStr) { + timestampStr = @""; + } + + formattedParams[prefix] = timestampStr; + + } else if ([rulesType isEqualToString:@"blob"]) { + + //encode NSData to Base64String + if ([value isKindOfClass:[NSString class]]) { + value = [value dataUsingEncoding:NSUTF8StringEncoding]; + } + if ([value isKindOfClass:[NSData class]]) { + NSString *base64encodedStr = [value base64EncodedStringWithOptions:0]; + formattedParams[prefix] = base64encodedStr?base64encodedStr:@""; + } else { + [self failWithCode:AWSEC2ParamBuilderInvalidParameter description:@"'blob' value should be a NSData type." error:error]; + return NO; + } + + } else if ([rulesType isEqualToString:@"boolean"]) { + formattedParams[prefix] = [value boolValue]?@"true":@"false"; + } else { + formattedParams[prefix] = value; + } + + return YES; +} + ++ (NSString *)queryName:(NSDictionary *)shape withDefaultName:(NSString *)defaultName { + + NSString *resultStr = shape[@"queryName"]?shape[@"queryName"]:[self upperCaseFirstChar:shape[@"locationName"]]; + + return resultStr?resultStr:defaultName; +} + ++ (NSString *)upperCaseFirstChar:(NSString *) inputString { + if ([inputString length] < 1) { + return nil; + } + return [[[inputString substringToIndex:1] uppercaseString] stringByAppendingString: [inputString length]>1 ? [inputString substringFromIndex:1] : @"" ]; +} + +@end + +@implementation AWSJSONBuilder + ++ (BOOL)failWithCode:(NSInteger)code description:(NSString *)description error:(NSError *__autoreleasing *)error { + if (error) { + *error = [NSError errorWithDomain:AWSJSONBuilderErrorDomain + code:code + userInfo:@{NSLocalizedDescriptionKey : description}]; + } + return NO; +} + ++ (NSData *)jsonDataForDictionary:(NSDictionary *)params + actionName:(NSString *)actionName + serviceDefinitionRule:(NSDictionary *)serviceDefinitionRule + error:(NSError *__autoreleasing *)error { + + id serializedJsonObject = [self buildJSONDictionary:params actionName:actionName serviceDefinitionRule:serviceDefinitionRule error:error]; + + if (!serializedJsonObject) { + serializedJsonObject = @{}; + } + + if ([NSJSONSerialization isValidJSONObject:serializedJsonObject] == NO) { + [self failWithCode:AWSJSONBuilderInvalidParameter description:[NSString stringWithFormat:@"serialized object is not a valid json Object: %@",serializedJsonObject] error:error]; + return nil; + } + + NSData *bodyData = [NSJSONSerialization dataWithJSONObject:serializedJsonObject + options:0 + error:error]; + + return bodyData; + +} + ++ (NSDictionary *)buildJSONDictionary:(NSDictionary *)params + actionName:(NSString *)actionName + serviceDefinitionRule:(NSDictionary *)serviceDefinitionRule + error:(NSError *__autoreleasing *)error { + + if ([params count] == 0) { + return nil; + } + + NSDictionary *actionRule = [[[serviceDefinitionRule objectForKey:@"operations"] objectForKey:actionName] objectForKey:@"input"]; + NSDictionary *definitionRules = [serviceDefinitionRule objectForKey:@"shapes"]; + + if (definitionRules == (id)[NSNull null] || [definitionRules count] == 0) { + AWSLogError(@"JSON definition File is empty or can not be found, will return un-serialized dictionary"); + return params; + } + + + + if ([actionRule count] == 0) { + [self failWithCode:AWSJSONBuilderUndefinedActionRule description:@"Invalid argument: actionRule is Empty" error:error]; + return nil; + } + + AWSJSONDictionary *rules = [[AWSJSONDictionary alloc] initWithDictionary:actionRule JSONDefinitionRule:definitionRules]; + + NSDictionary *resultParams = [self serializeMember:rules value:params error:error]; + + return resultParams; + + +} + ++ (NSDictionary *)serializeStructure:(NSDictionary *)structureRules values:(NSDictionary *)values error:(NSError *__autoreleasing *)error { + + NSMutableDictionary *data = [NSMutableDictionary new]; + + for (NSString *key in values) { + id value = values[key]; + + AWSJSONDictionary *memberShape = structureRules[@"members"][key]; + if (memberShape && value) { + NSString *name = memberShape[@"locationName"]?memberShape[@"locationName"]:key; + data[name] = [self serializeMember:memberShape value:value error:error]; + } + + } + + return data; +} + ++ (NSArray *)serializeList:(NSDictionary *)listRules values:(NSArray *)values error:(NSError *__autoreleasing *)error { + NSMutableArray *dataArray = [NSMutableArray new]; + + for (id value in values) { + + [dataArray addObject:[self serializeMember:listRules[@"member"] value:value error:error]]; + + } + + return dataArray; +} + ++ (NSDictionary *)serializeMap:(NSDictionary *)mapRules values:(NSDictionary *)values error:(NSError *__autoreleasing *)error { + + NSMutableDictionary *data = [NSMutableDictionary new]; + + for (NSString *key in values) { + id value = values[key]; + data[key] = [self serializeMember:mapRules[@"value"] value:value error:error]; + } + + return data; + +} + ++ (id)serializeMember:(NSDictionary *)shape value:(id)value error:(NSError *__autoreleasing *)error { + + NSString *rulesType = shape[@"type"]; + if ([rulesType isEqualToString:@"structure"]) { + + if (![value isKindOfClass:[NSDictionary class]]) { + [self failWithCode:AWSJSONBuilderInvalidParameter description:[NSString stringWithFormat:@"a structure input should be a dictionary but got:%@",value] error:error]; + return @{}; + } else { + + return [self serializeStructure:shape values:value error:error]; + } + + } else if ([rulesType isEqualToString:@"list"]) { + + if (![value isKindOfClass:[NSArray class]]) { + [self failWithCode:AWSJSONBuilderInvalidParameter description:[NSString stringWithFormat:@"a list input should be an array but got:%@",value] error:error]; + return @[]; + } else { + return [self serializeList:shape values:value error:error]; + } + + + } else if ([rulesType isEqualToString:@"map"]) { + + if (![value isKindOfClass:[NSDictionary class]]) { + [self failWithCode:AWSJSONBuilderInvalidParameter description:[NSString stringWithFormat:@"a map input should be a dictionary but got:%@",value] error:error]; + return @{}; + } else { + return [self serializeMap:shape values:value error:error]; + } + + } else if ([rulesType isEqualToString:@"timestamp"]) { + + NSDate *timeStampDate; + //maybe a NSDate type or NSNumber type or NSString type + if ([value isKindOfClass:[NSString class]]) { + //try parse the string to NSDate first + timeStampDate = [NSDate aws_dateFromString:value]; + + //if failed, then parse it as double value + if (!timeStampDate) { + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[value doubleValue]]; + } + } else if ([value isKindOfClass:[NSNumber class]]) { + //need to convert to NSDate type + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[value doubleValue]]; + + } else if ([value isKindOfClass:[NSDate class]]) { + timeStampDate = value; + } + + return [NSNumber numberWithDouble:[timeStampDate timeIntervalSince1970]]; + + + } else if ([rulesType isEqualToString:@"blob"]) { + + //encode NSData to Base64String + if ([value isKindOfClass:[NSString class]]) { + value = [value dataUsingEncoding:NSUTF8StringEncoding]; + } + if ([value isKindOfClass:[NSData class]]) { + NSString *base64encodedStr = [value base64EncodedStringWithOptions:0]; + return base64encodedStr?base64encodedStr:@""; + } else { + [self failWithCode:AWSJSONBuilderInvalidParameter description:@"'blob' value should be a NSData type." error:error]; + return @""; + } + + } else { + + return value; + + } +} + +@end + +@implementation AWSJSONParser + ++ (BOOL)failWithCode:(NSInteger)code description:(NSString *)description error:(NSError *__autoreleasing *)error { + if (error) { + *error = [NSError errorWithDomain:AWSJSONParserErrorDomain + code:code + userInfo:@{NSLocalizedDescriptionKey : description}]; + } + return NO; +} + ++ (NSDictionary *)dictionaryForJsonData:(NSData *)data + actionName:(NSString *)actionName + serviceDefinitionRule:(NSDictionary *)serviceDefinitionRule + error:(NSError *__autoreleasing *)error { + + if (!data) { + return [NSMutableDictionary new]; + } + + NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data + options:0 + error:error]; + + + NSDictionary *actionRule = [[[serviceDefinitionRule objectForKey:@"operations"] objectForKey:actionName] objectForKey:@"output"]; + if (actionRule == (id)[NSNull null]) { + actionRule = @{}; + } + + NSDictionary *definitionRules = [serviceDefinitionRule objectForKey:@"shapes"]; + if (definitionRules == (id)[NSNull null]) { + definitionRules = @{}; + } + if ([definitionRules count] == 0) { + AWSLogError(@"JSON definition File is empty or can not be found, will return un-serialized dictionary"); + return resultDic; + } + + //if the response is error message, just return + if ([resultDic objectForKey:@"__type"] || [resultDic aws_objectForCaseInsensitiveKey:@"message"]) { + return resultDic; + } + + AWSJSONDictionary *rules = [[AWSJSONDictionary alloc] initWithDictionary:actionRule JSONDefinitionRule:definitionRules]; + + NSDictionary *serializedDic = [self serializeMember:rules value:resultDic target:nil error:error]; + + return serializedDic; +} + ++ (NSString *)findMemberName:(NSString*)locationName structureRules:(NSDictionary *)structureRules { + + for (NSString *aMember in structureRules[@"members"]) { + NSDictionary *memberShape = structureRules[@"members"][aMember]; + + if ([memberShape[@"locationName"] isEqualToString:locationName]) { + return aMember; + } + } + + return locationName; +} + ++ (id)serializeStructure:(NSDictionary *)structureRules values:(NSDictionary *)values target:(id)target error:(NSError *__autoreleasing *)error{ + if (!target) { + target = [NSMutableDictionary new]; + } + + for (NSString *serialized_name in values) { + id value = values[serialized_name]; + + NSString *memberName = [self findMemberName:serialized_name structureRules:structureRules]; + + AWSJSONDictionary *memberShape = structureRules[@"members"][memberName]; + if (memberShape && value) { + // NSString *name = memberShape[@"locationName"]?memberShape[@"locationName"]:serialized_name; + target[memberName] = [self serializeMember:memberShape value:value target:nil error:(NSError *__autoreleasing *)error]; + } + + } + return target; + +} + ++ (NSMutableArray *)serializeList:(NSDictionary *)listRules values:(NSDictionary *)values target:(id)target error:(NSError *__autoreleasing *)error{ + if (!target) { + target = [NSMutableArray new]; + } + + for (NSString *value in values) { + [target addObject:[self serializeMember:listRules[@"member"] value:value target:nil error:(NSError *__autoreleasing *)error]]; + } + + return target; +} + ++ (NSMutableDictionary *) serializeMap:(NSDictionary *)mapRules values:(NSDictionary *)values target:(id)target error:(NSError *__autoreleasing *)error{ + if (!target) { + target = [NSMutableDictionary new]; + } + + for (NSString *key in values) { + id value = values[key]; + + target[key] = [self serializeMember:mapRules[@"value"] value:value target:nil error:(NSError *__autoreleasing *)error]; + } + + return target; +} + ++ (id)serializeMember:(NSDictionary *)shape value:(id)value target:(id)target error:(NSError *__autoreleasing *)error{ + if (!value) { + return nil; + } + + NSString *rulesType = shape[@"type"]; + if ([rulesType isEqualToString:@"structure"]) { + + if (![value isKindOfClass:[NSDictionary class]]) { + [self failWithCode:AWSJSONParserInvalidParameter description:[NSString stringWithFormat:@"a structure input should be a dictionary but got:%@",value] error:error]; + return @{}; + } else { + + return [self serializeStructure:shape values:value target:target error:error]; + } + + } else if ([rulesType isEqualToString:@"list"]) { + + if (![value isKindOfClass:[NSArray class]]) { + [self failWithCode:AWSJSONParserInvalidParameter description:[NSString stringWithFormat:@"a list input should be an array but got:%@",value] error:error]; + return @[]; + } else { + return [self serializeList:shape values:value target:target error:error]; + } + + + } else if ([rulesType isEqualToString:@"map"]) { + + if (![value isKindOfClass:[NSDictionary class]]) { + [self failWithCode:AWSJSONParserInvalidParameter description:[NSString stringWithFormat:@"a map input should be a dictionary but got:%@",value] error:error]; + return @{}; + } else { + return [self serializeMap:shape values:value target:target error:error]; + } + + } else if ([rulesType isEqualToString:@"timestamp"]) { + + NSDate *timeStampDate; + //maybe a NSDate type or NSNumber type or NSString type + if ([value isKindOfClass:[NSString class]]) { + //try parse the string to NSDate first + timeStampDate = [NSDate aws_dateFromString:value]; + + //if failed, then parse it as double value + if (!timeStampDate) { + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[value doubleValue]]; + } + } else if ([value isKindOfClass:[NSNumber class]]) { + //need to convert to NSDate type + timeStampDate = [NSDate dateWithTimeIntervalSince1970:[value doubleValue]]; + + } else if ([value isKindOfClass:[NSDate class]]) { + timeStampDate = value; + } + + return [NSNumber numberWithDouble:[timeStampDate timeIntervalSince1970]]; + + + } else if ([rulesType isEqualToString:@"blob"]) { + + //decode Base64Str to NSData + if ([value isKindOfClass:[NSString class]]) { + NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:value options:0]; + //return origin string value if can not be encoded. + return decodedData?decodedData:value; + } else { + [self failWithCode:AWSJSONParserInvalidParameter description:@"blob value should be NSString type." error:error]; + return [NSData new]; + } + + } else { + + return value; + + } + +} + +@end diff --git a/AWSCore/Serialization/AWSURLRequestRetryHandler.h b/AWSCore/Serialization/AWSURLRequestRetryHandler.h index b06c1e78f15..3f00f4f1cd5 100644 --- a/AWSCore/Serialization/AWSURLRequestRetryHandler.h +++ b/AWSCore/Serialization/AWSURLRequestRetryHandler.h @@ -15,9 +15,9 @@ #import -#import "AZNetworking.h" +#import "AWSNetworking.h" -@interface AWSURLRequestRetryHandler : NSObject +@interface AWSURLRequestRetryHandler : NSObject @property (nonatomic, assign) uint32_t maxRetryCount; diff --git a/AWSCore/Serialization/AWSURLRequestRetryHandler.m b/AWSCore/Serialization/AWSURLRequestRetryHandler.m index eaf5055cc41..a0f4187489a 100644 --- a/AWSCore/Serialization/AWSURLRequestRetryHandler.m +++ b/AWSCore/Serialization/AWSURLRequestRetryHandler.m @@ -44,40 +44,40 @@ - (BOOL)isClockSkewError:(NSError *)error { return NO; } -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { if (!self.isClockSkewRetried && [self isClockSkewError:error]) { self.isClockSkewRetried = YES; - return AZNetworkingRetryTypeShouldCorrectClockSkewAndRetry; + return AWSNetworkingRetryTypeShouldCorrectClockSkewAndRetry; } if (currentRetryCount >= self.maxRetryCount) { - return AZNetworkingRetryTypeShouldNotRetry; + return AWSNetworkingRetryTypeShouldNotRetry; } if ([error.domain isEqualToString:NSURLErrorDomain]) { switch (error.code) { case kCFURLErrorNotConnectedToInternet: - return AZNetworkingRetryTypeShouldNotRetry; + return AWSNetworkingRetryTypeShouldNotRetry; default: - return AZNetworkingRetryTypeShouldRetry; + return AWSNetworkingRetryTypeShouldRetry; } } switch (response.statusCode) { case 500: case 503: - return AZNetworkingRetryTypeShouldRetry; + return AWSNetworkingRetryTypeShouldRetry; break; default: break; } - return AZNetworkingRetryTypeShouldNotRetry; + return AWSNetworkingRetryTypeShouldNotRetry; } - (NSTimeInterval)timeIntervalForRetry:(uint32_t)currentRetryCount diff --git a/AWSCore/Serialization/AWSURLRequestSerialization.h b/AWSCore/Serialization/AWSURLRequestSerialization.h index 18af96c6dfb..1ff3f248a25 100644 --- a/AWSCore/Serialization/AWSURLRequestSerialization.h +++ b/AWSCore/Serialization/AWSURLRequestSerialization.h @@ -15,20 +15,28 @@ #import -#import "AZNetworking.h" +#import "AWSNetworking.h" +#import "AWSSerialization.h" -@interface AWSJSONRequestSerializer : NSObject +@interface AWSJSONRequestSerializer : NSObject + ++ (instancetype)serializerWithResource:(NSString *)resource + actionName:(NSString *)actionName; @end -@interface AWSXMLRequestSerializer : NSObject +@interface AWSXMLRequestSerializer : NSObject + (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString *)actionName; ++ (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request + rules:(AWSJSONDictionary *)rules parameters:(NSDictionary *)params + uriSchema:(NSString *)uriSchema + error:(NSError *__autoreleasing *)error; @end -@interface AWSQueryStringRequestSerializer : NSObject +@interface AWSQueryStringRequestSerializer : NSObject + (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString *)actionName; @@ -37,3 +45,7 @@ @property (nonatomic, strong) NSString *dateFormat; @end + +@interface AWSEC2RequestSerializer : AWSQueryStringRequestSerializer + +@end \ No newline at end of file diff --git a/AWSCore/Serialization/AWSURLRequestSerialization.m b/AWSCore/Serialization/AWSURLRequestSerialization.m index 497569e0d59..19fdc3c9f64 100644 --- a/AWSCore/Serialization/AWSURLRequestSerialization.m +++ b/AWSCore/Serialization/AWSURLRequestSerialization.m @@ -15,21 +15,44 @@ #import "AWSURLRequestSerialization.h" -#import "AZNetworking.h" +#import "AWSNetworking.h" #import "AWSValidation.h" #import "AWSSerialization.h" -#import "AZCategory.h" -#import "AZLogging.h" +#import "AWSCategory.h" +#import "AWSLogging.h" #import "GZIP.h" @interface AWSJSONRequestSerializer() @property (nonatomic, strong) NSDictionary *serviceDefinitionJSON; +@property (nonatomic, strong) NSString *actionName; @end @implementation AWSJSONRequestSerializer ++ (instancetype)serializerWithResource:(NSString *)resource + actionName:(NSString *)actionName { + AWSJSONRequestSerializer *serializer = [self new]; + NSError *error = nil; + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:resource ofType:@"json"]; + if (filePath == nil) { + AWSLogError(@"can not find %@.json file in the project",resource); + } else { + serializer.serviceDefinitionJSON = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:kNilOptions + error:&error]; + } + if (error) { + AWSLogError(@"Error: [%@]", error); + } + + serializer.actionName = actionName; + + return serializer; +} + + - (BFTask *)serializeRequest:(NSMutableURLRequest *)request headers:(NSDictionary *)headers parameters:(NSDictionary *)parameters { @@ -43,33 +66,46 @@ - (BFTask *)serializeRequest:(NSMutableURLRequest *)request parameters = mutableParameters; } + NSDictionary *actionRules = [[self.serviceDefinitionJSON objectForKey:@"operations"] objectForKey:self.actionName]; + NSString *inputName = [[actionRules objectForKey:@"input"] objectForKey:@"shape"]; + NSDictionary *inputRules = [[[self.serviceDefinitionJSON objectForKey:@"shapes"] objectForKey:inputName] objectForKey: @"members" ]; + + + NSMutableDictionary *mutableParameters = [parameters mutableCopy]; + for (NSString* memberName in inputRules) { + NSDictionary* membersRules = [inputRules objectForKey:memberName]; + if([parameters objectForKey:memberName] && [[membersRules objectForKey: @"location"] isEqualToString: @"header"]){ + + [request setValue: [parameters objectForKey:memberName] forHTTPHeaderField: [membersRules objectForKey:@"locationName"]]; + [mutableParameters removeObjectForKey:memberName]; + parameters = mutableParameters; + } + } + if (parameters) { if ([request.HTTPMethod isEqualToString:@"GET"]) { - request.URL = [request.URL az_URLByAppendingQuery:parameters]; + request.URL = [request.URL aws_URLByAppendingQuery:parameters]; } else { - NSData *bodyData = [NSJSONSerialization dataWithJSONObject:parameters - options:0 - error:&error]; + NSData *bodyData = [AWSJSONBuilder jsonDataForDictionary:parameters actionName:self.actionName serviceDefinitionRule:self.serviceDefinitionJSON error:&error]; - if (headers[@"Content-Encoding"] && [headers[@"Content-Encoding"] rangeOfString:@"gzip"].location != NSNotFound) { - //gzip the body - request.HTTPBody = [bodyData gzippedData]; - } else { - request.HTTPBody = bodyData; + if (!error) { + + if (headers[@"Content-Encoding"] && [headers[@"Content-Encoding"] rangeOfString:@"gzip"].location != NSNotFound) { + //gzip the body + request.HTTPBody = [bodyData gzippedData]; + } else { + request.HTTPBody = bodyData; + } + } } } - AZLogVerbose(@"Request body: [%@]", [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]); + AWSLogVerbose(@"Request body: [%@]", [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]); if (!error) { for (NSString *key in headers) { - if ([key isEqualToString:@"Content-Type"] - && ![request.HTTPMethod isEqualToString:@"PUT"] - && ![request.HTTPMethod isEqualToString:@"POST"]) { - continue; - } [request setValue:[headers objectForKey:key] forHTTPHeaderField:key]; } @@ -101,14 +137,14 @@ + (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString NSError *error = nil; NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:resource ofType:@"json"]; if (filePath == nil) { - AZLogError(@"can not find %@.json file in the project",actionName); + AWSLogError(@"can not find %@.json file in the project",resource); } else { serializer.serviceDefinitionJSON = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] options:kNilOptions error:&error]; } if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } serializer.actionName = actionName; @@ -135,11 +171,11 @@ - (BFTask *)serializeRequest:(NSMutableURLRequest *)request AWSJSONDictionary *inputRules = [[AWSJSONDictionary alloc] initWithDictionary:[anActionRules objectForKey:@"input"] JSONDefinitionRule:shapeRules]; NSError *error = nil; - [self constructURIandHeadersAndBody:request - rules:inputRules - parameters:parameters - uriSchema:ruleURIStr - error:&error]; + [AWSXMLRequestSerializer constructURIandHeadersAndBody:request + rules:inputRules + parameters:parameters + uriSchema:ruleURIStr + error:&error]; if (!error) { //construct HTTPBody only if HTTPBodyStream is nil @@ -149,7 +185,7 @@ - (BFTask *)serializeRequest:(NSMutableURLRequest *)request serviceDefinitionRule:self.serviceDefinitionJSON error:&error]; } - AZLogVerbose(@"Request body: [%@]", [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]); + AWSLogVerbose(@"Request body: [%@]", [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]); //contruct addtional headers if (!error) { @@ -173,7 +209,7 @@ - (BFTask *)validateRequest:(NSURLRequest *)request { return [BFTask taskWithResult:nil]; } -- (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request ++ (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request rules:(AWSJSONDictionary *)rules parameters:(NSDictionary *)params uriSchema:(NSString *)uriSchema error:(NSError *__autoreleasing *)error { @@ -222,11 +258,29 @@ - (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request [request addValue:valueStr forHTTPHeaderField:memberRules[@"locationName"]]; } + //if it is a map type with headers tag, add to headers + if ([value isKindOfClass:[NSDictionary class]] && [rulesType isEqualToString:@"map"] && [memberRules[@"location"] isEqualToString:@"headers"] ) { + for (NSString *key in value) { + NSString *keyName = [memberRules[@"locationName"] stringByAppendingString:key]; + [request addValue:value[key] forHTTPHeaderField:keyName]; + } + } + //If it is uri type, construct uri if ([memberRules[@"location"] isEqualToString:@"uri"]) { NSString *keyToFind = [NSString stringWithFormat:@"{%@}", xmlElementName]; - rawURI = [rawURI stringByReplacingOccurrencesOfString:keyToFind - withString:[valueStr az_stringWithURLEncoding]]; + NSString *greedyKeyToFind = [NSString stringWithFormat:@"{%@+}", xmlElementName]; + + if ([rawURI rangeOfString:keyToFind].location != NSNotFound) { + rawURI = [rawURI stringByReplacingOccurrencesOfString:keyToFind + withString:[valueStr aws_stringWithURLEncoding]]; + + } else if ([rawURI rangeOfString:greedyKeyToFind].location != NSNotFound) { + rawURI = [rawURI stringByReplacingOccurrencesOfString:greedyKeyToFind + withString:[valueStr aws_stringWithURLEncodingPath]]; + } + + } //if it is queryString type, construct queryString @@ -234,8 +288,8 @@ - (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request [queryStringDictionary setObject:valueStr forKey:memberRules[@"locationName"]]; } - //If it is "Body" Type, contructBody - if ([xmlElementName isEqualToString:@"Body"]) { + //If it is "Body" Type and streaming Type, contructBody + if ([xmlElementName isEqualToString:@"Body"] && [memberRules[@"streaming"] boolValue]) { if ([value isKindOfClass:[NSURL class]]) { if ([value checkResourceIsReachableAndReturnError:error]) { request.HTTPBodyStream = [NSInputStream inputStreamWithURL:value]; @@ -254,15 +308,21 @@ - (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request return NO; } + BOOL uriSchemaContainsQuestionMark = NO; + NSRange hasQuestionMark = [uriSchema rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"?"]]; + if (hasQuestionMark.location != NSNotFound) { + uriSchemaContainsQuestionMark = YES; + } + if ([queryStringDictionary count]) { NSArray *myKeys = [queryStringDictionary allKeys]; NSArray *sortedKeys = [myKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; - NSString *queryString = nil; + NSString *queryString = @""; for (NSString *key in sortedKeys) { - if (!queryString) { - queryString = [NSString stringWithFormat:@"?%@=%@",[key az_stringWithURLEncoding],[queryStringDictionary[key] az_stringWithURLEncoding]]; + if ([queryString length] == 0 && uriSchemaContainsQuestionMark == NO) { + queryString = [NSString stringWithFormat:@"?%@=%@",[key aws_stringWithURLEncoding],[queryStringDictionary[key] aws_stringWithURLEncoding]]; } else { - NSString *appendString = [NSString stringWithFormat:@"&%@=%@",[key az_stringWithURLEncoding],[queryStringDictionary[key] az_stringWithURLEncoding]]; + NSString *appendString = [NSString stringWithFormat:@"&%@=%@",[key aws_stringWithURLEncoding],[queryStringDictionary[key] aws_stringWithURLEncoding]]; queryString = [queryString stringByAppendingString:appendString]; } } @@ -291,7 +351,7 @@ - (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request if ( (hasQuestionMark.location != NSNotFound) && (hasEqualMark.location == NSNotFound) ) { rawURI = [rawURI stringByAppendingString:@"="]; } - + NSString *finalURL = [NSString stringWithFormat:@"%@%@", request.URL,rawURI]; request.URL = [NSURL URLWithString:finalURL]; if (!request.URL) { @@ -300,7 +360,7 @@ - (BOOL)constructURIandHeadersAndBody:(NSMutableURLRequest *)request } return NO; } - + return YES; } } @@ -319,56 +379,56 @@ @implementation AWSQueryStringRequestSerializer + (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString *)actionName { - + AWSQueryStringRequestSerializer *serializer = [self new]; NSError *error = nil; NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:resource ofType:@"json"]; if (filePath == nil) { - AZLogError(@"can not find %@.json file in the project",actionName); + AWSLogError(@"can not find %@.json file in the project",resource); } else { serializer.serviceDefinitionJSON = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] options:kNilOptions error:&error]; } if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } - + serializer.actionName = actionName; - + return serializer; - + } -- (void)processParameters:(NSDictionary *)parameters QueryString:(NSMutableString *)queryString { +- (void)processParameters:(NSDictionary *)parameters queryString:(NSMutableString *)queryString { for (NSString *key in parameters) { id obj = parameters[key]; - + if ([obj isKindOfClass:[NSDictionary class]]) { - [self processParameters:obj QueryString:queryString]; + [self processParameters:obj queryString:queryString]; } else { - + if ([queryString length] > 0) { [queryString appendString:@"&"]; } - + if ([obj isKindOfClass:[NSString class]]) { - [queryString appendString:[key az_stringWithURLEncoding]]; + [queryString appendString:[key aws_stringWithURLEncoding]]; [queryString appendString:@"="]; - NSString *urlEncodedString = [obj az_stringWithURLEncoding]; + NSString *urlEncodedString = [obj aws_stringWithURLEncoding]; [queryString appendString:urlEncodedString]; } else if ([obj isKindOfClass:[NSNumber class]]) { - [queryString appendString:[key az_stringWithURLEncoding]]; + [queryString appendString:[key aws_stringWithURLEncoding]]; [queryString appendString:@"="]; - [queryString appendString:[[obj stringValue] az_stringWithURLEncoding]]; + [queryString appendString:[[obj stringValue] aws_stringWithURLEncoding]]; } else if ([obj isKindOfClass:[NSDate class]]) { - [queryString appendString:[key az_stringWithURLEncoding]]; + [queryString appendString:[key aws_stringWithURLEncoding]]; [queryString appendString:@"="]; - [queryString appendString:[[obj az_stringValue:self.dateFormat] az_stringWithURLEncoding]]; + [queryString appendString:[[obj aws_stringValue:self.dateFormat] aws_stringWithURLEncoding]]; } else { - AZLogError(@"key[%@] is invalid.", key); - [queryString appendString:[key az_stringWithURLEncoding]]; + AWSLogError(@"key[%@] is invalid.", key); + [queryString appendString:[key aws_stringWithURLEncoding]]; [queryString appendString:@"="]; - [queryString appendString:[[obj description]az_stringWithURLEncoding]]; + [queryString appendString:[[obj description]aws_stringWithURLEncoding]]; } } } @@ -378,30 +438,28 @@ - (void)processParameters:(NSDictionary *)parameters QueryString:(NSMutableStrin - (BFTask *)serializeRequest:(NSMutableURLRequest *)request headers:(NSDictionary *)headers parameters:(NSDictionary *)parameters { - parameters = [parameters mutableCopy]; [self.additionalParameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { [parameters setValue:obj forKey:key]; }]; //Need to add version and actionName - NSError *error = nil; NSDictionary *formattedParams = [AWSQueryParamBuilder buildFormattedParams:parameters - actionName:self.actionName - serviceDefinitionRule:self.serviceDefinitionJSON error:&error]; + actionName:self.actionName + serviceDefinitionRule:self.serviceDefinitionJSON error:&error]; if (error) { return [BFTask taskWithError:error]; } - + NSMutableString *queryString = [NSMutableString new]; - [self processParameters:formattedParams QueryString:queryString]; + [self processParameters:formattedParams queryString:queryString]; if ([queryString length] > 0) { request.HTTPBody = [queryString dataUsingEncoding:NSUTF8StringEncoding]; } - AZLogVerbose(@"Request body: [%@]", [[NSString alloc] initWithData:request.HTTPBody - encoding:NSUTF8StringEncoding]); + AWSLogVerbose(@"Request body: [%@]", [[NSString alloc] initWithData:request.HTTPBody + encoding:NSUTF8StringEncoding]); //contruct addtional headers if (headers) { //generate HTTP header here @@ -410,9 +468,12 @@ - (BFTask *)serializeRequest:(NSMutableURLRequest *)request } } + if (!request.allHTTPHeaderFields[@"Content-Type"]) { + [request addValue:@"application/x-www-form-urlencoded; charset=utf-8" + forHTTPHeaderField:@"Content-Type"]; + } + return [BFTask taskWithResult:nil]; - - } - (BFTask *)validateRequest:(NSURLRequest *)request { @@ -420,3 +481,50 @@ - (BFTask *)validateRequest:(NSURLRequest *)request { } @end + +@implementation AWSEC2RequestSerializer + +//overwrite serializeRequest method for EC2 +- (BFTask *)serializeRequest:(NSMutableURLRequest *)request + headers:(NSDictionary *)headers + parameters:(NSDictionary *)parameters { + parameters = [parameters mutableCopy]; + [self.additionalParameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [parameters setValue:obj forKey:key]; + }]; + + //Need to add version and actionName + NSError *error = nil; + NSDictionary *formattedParams = [AWSEC2ParamBuilder buildFormattedParams:parameters + actionName:self.actionName + serviceDefinitionRule:self.serviceDefinitionJSON error:&error]; + if (error) { + return [BFTask taskWithError:error]; + } + + NSMutableString *queryString = [NSMutableString new]; + [self processParameters:formattedParams queryString:queryString]; + + if ([queryString length] > 0) { + request.HTTPBody = [queryString dataUsingEncoding:NSUTF8StringEncoding]; + } + AWSLogVerbose(@"Request body: [%@]", [[NSString alloc] initWithData:request.HTTPBody + encoding:NSUTF8StringEncoding]); + //contruct addtional headers + if (headers) { + //generate HTTP header here + for (NSString *key in headers.allKeys) { + [request setValue:[headers objectForKey:key] forHTTPHeaderField:key]; + } + } + + if (!request.allHTTPHeaderFields[@"Content-Type"]) { + [request addValue:@"application/x-www-form-urlencoded; charset=utf-8" + forHTTPHeaderField:@"Content-Type"]; + } + + return [BFTask taskWithResult:nil]; +} + + +@end \ No newline at end of file diff --git a/AWSCore/Serialization/AWSURLResponseSerialization.h b/AWSCore/Serialization/AWSURLResponseSerialization.h index 1bcb4693825..dbf082d32c3 100644 --- a/AWSCore/Serialization/AWSURLResponseSerialization.h +++ b/AWSCore/Serialization/AWSURLResponseSerialization.h @@ -15,7 +15,7 @@ #import -#import "AZNetworking.h" +#import "AWSNetworking.h" FOUNDATION_EXPORT NSString *const AWSGeneralErrorDomain; @@ -28,15 +28,17 @@ typedef NS_ENUM(NSInteger, AWSGeneralErrorType) { AWSGeneralErrorAuthFailure }; -@interface AWSJSONResponseSerializer : NSObject +@interface AWSJSONResponseSerializer : NSObject @property (nonatomic, assign) Class outputClass; - (instancetype)initWithOutputClass:(Class)outputClass; ++ (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString *)actionName; + @end -@interface AWSXMLResponseSerializer : NSObject +@interface AWSXMLResponseSerializer : NSObject + (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString *)actionName; diff --git a/AWSCore/Serialization/AWSURLResponseSerialization.m b/AWSCore/Serialization/AWSURLResponseSerialization.m index 6562a192d88..3b7d24ffd25 100644 --- a/AWSCore/Serialization/AWSURLResponseSerialization.m +++ b/AWSCore/Serialization/AWSURLResponseSerialization.m @@ -15,12 +15,11 @@ #import "AWSURLResponseSerialization.h" -#import "AZLogging.h" +#import "AWSLogging.h" #import "AWSService.h" #import "AWSValidation.h" #import "AWSSerialization.h" -#import "TMCache.h" NSString *const AWSGeneralErrorDomain = @"com.amazonaws.AWSGeneralErrorDomain"; @@ -28,6 +27,12 @@ static NSDictionary *errorCodeDictionary = nil; +@interface AWSJSONResponseSerializer() + +@property (nonatomic, strong) NSDictionary *serviceDefinitionJSON; +@property (nonatomic, strong) NSString *actionName; + +@end @implementation AWSJSONResponseSerializer @@ -49,17 +54,39 @@ - (instancetype)initWithOutputClass:(Class)outputClass { return self; } ++ (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString *)actionName { + AWSJSONResponseSerializer *serializer = [self new]; + + NSError *error = nil; + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:resource ofType:@"json"]; + if (filePath == nil) { + AWSLogError(@"can not find %@.json file in the project",resource); + } else { + serializer.serviceDefinitionJSON = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:kNilOptions + error:&error]; + } + if (error) { + AWSLogError(@"Error: [%@]", error); + } + + serializer.actionName = actionName; + + return serializer; +} + + - (id)responseObjectForResponse:(NSHTTPURLResponse *)response originalRequest:(NSURLRequest *)originalRequest currentRequest:(NSURLRequest *)currentRequest data:(id)data error:(NSError *__autoreleasing *)error { if ([response isKindOfClass:[NSHTTPURLResponse class]]) { - AZLogDebug(@"Response header: [%@]", response.allHeaderFields); + AWSLogDebug(@"Response header: [%@]", response.allHeaderFields); } if ([data isKindOfClass:[NSData class]]) { - AZLogVerbose(@"Response body: [%@]", [[NSString alloc] initWithData:data + AWSLogVerbose(@"Response body: [%@]", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); } @@ -92,9 +119,8 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response id result = nil; if (data) { - result = [NSJSONSerialization JSONObjectWithData:data - options:0 - error:error]; + //parse JSON data + result = [AWSJSONParser dictionaryForJsonData:data actionName:self.actionName serviceDefinitionRule:self.serviceDefinitionJSON error:error]; //Parse AWSGeneralError if ([result isKindOfClass:[NSDictionary class]]) { @@ -102,7 +128,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSGeneralErrorDomain code:[[errorCodeDictionary objectForKey:[[[result objectForKey:@"__type"] componentsSeparatedByString:@"#"] lastObject]] integerValue] - userInfo:@{NSLocalizedDescriptionKey : [result objectForKey:@"message"]?[result objectForKey:@"message"]:[NSNull null]}]; + userInfo:result]; } } } @@ -145,14 +171,14 @@ + (instancetype)serializerWithResource:(NSString *)resource actionName:(NSString NSError *error = nil; NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:resource ofType:@"json"]; if (filePath == nil) { - AZLogError(@"can not find %@.json file in the project",actionName); + AWSLogError(@"can not find %@.json file in the project",resource); } else { serializer.serviceDefinitionJSON = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] options:kNilOptions error:&error]; } if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } serializer.actionName = actionName; @@ -168,27 +194,6 @@ - (BOOL)validateResponse:(NSHTTPURLResponse *)response return YES; } -- (NSMutableDictionary *)parsePayloadData:(NSData *)bodyData rules:(AWSJSONDictionary *)rules { - NSMutableDictionary *resultDictionary = [NSMutableDictionary new]; - //If no rule or no data just return - if (rules == (id)[NSNull null] || [rules count] == 0 || !bodyData) { - return resultDictionary; - } - - NSString *payloadMemberName = rules[@"payload"]; - if (payloadMemberName) { - resultDictionary[payloadMemberName] = bodyData; - } - - // AWSJSONDictionary * allMemberRules = rules[@"members"] ? rules[@"members"] : @{}; - // [allMemberRules enumerateKeysAndObjectsUsingBlock:^(NSString *memberName, id memberRules, BOOL *stop) { - // if ([memberRules isKindOfClass:[NSDictionary class]] && [memberRules[@"payload"] boolValue]) { - // resultDictionary[memberName] = bodyData; - // } - // }]; - return resultDictionary; -} - - (NSMutableDictionary *)parseResponseHeader:(NSDictionary *)responseHeaders rules:(AWSJSONDictionary *)rules bodyDictionary:(NSMutableDictionary *)bodyDictionary @@ -202,7 +207,7 @@ - (NSMutableDictionary *)parseResponseHeader:(NSDictionary *)responseHeaders [rules enumerateKeysAndObjectsUsingBlock:^(NSString *memberName, id memberRules, BOOL *stop) { if ([memberRules isKindOfClass:[NSDictionary class]] && [memberRules[@"location"] isEqualToString:@"header"]) { - NSString *locationName = memberRules[@"locationName"]; + NSString *locationName = memberRules[@"locationName"]?memberRules[@"locationName"]:memberName; if (locationName && responseHeaders[locationName]) { NSString *rulesType = memberRules[@"type"]; if ([rulesType isEqualToString:@"integer"]) { @@ -231,11 +236,11 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response data:(id)data error:(NSError *__autoreleasing *)error { if ([response isKindOfClass:[NSHTTPURLResponse class]]) { - AZLogDebug(@"Response header: [%@]", response.allHeaderFields); + AWSLogDebug(@"Response header: [%@]", response.allHeaderFields); } if ([data isKindOfClass:[NSData class]]) { - AZLogVerbose(@"Response body: [%@]", [[NSString alloc] initWithData:data + AWSLogVerbose(@"Response body: [%@]", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); } @@ -262,11 +267,13 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response NSDictionary *shapeRules = [self.serviceDefinitionJSON objectForKey:@"shapes"]; AWSJSONDictionary *outputRules = [[AWSJSONDictionary alloc] initWithDictionary:[anActionRules objectForKey:@"output"] JSONDefinitionRule:shapeRules]; - //try to parse data if it is a blob type, do not process it if the response status code is not 2xx - NSMutableDictionary *resultDic = nil; + + NSMutableDictionary *resultDic = [NSMutableDictionary new]; + if (response.statusCode >= 200 && response.statusCode < 300 ) { - resultDic = [self parsePayloadData:data rules:outputRules]; + // status is good, we can keep NSURL as data } else { + //if status error indicates error, need to convert NSURL to NSData for error processing if ([data isKindOfClass:[NSURL class]]) { data = [NSData dataWithContentsOfFile:[(NSURL *)data path]]; } @@ -290,7 +297,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error && (*error == nil)) { *error = [NSError errorWithDomain:AWSGeneralErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; } } diff --git a/AWSCore/Serialization/AWSValidation.m b/AWSCore/Serialization/AWSValidation.m index dd6e180b1c1..ccae95186a6 100644 --- a/AWSCore/Serialization/AWSValidation.m +++ b/AWSCore/Serialization/AWSValidation.m @@ -14,7 +14,7 @@ */ #import "AWSValidation.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSValidationErrorDomain = @"com.amazonaws.AWSValidationErrorDomain"; @@ -282,7 +282,7 @@ + (BOOL)validateNumberWithContext:(NSString *)context number:(id)number accepted + (BOOL)validateBinaryWithContext:(NSString *)context data:(id)data error:(NSError *__autoreleasing *)error { //The Binary should be a base64 format if ([data isKindOfClass:[NSString class]]) { - if ([data az_isBase64Data]) return YES; + if ([data aws_isBase64Data]) return YES; } return [self failWithCode:AWSValidationInvalidBase64Data diff --git a/AWSCore/Service/AWSClientContext.m b/AWSCore/Service/AWSClientContext.m index f672556293f..a6100ae6fb4 100644 --- a/AWSCore/Service/AWSClientContext.m +++ b/AWSCore/Service/AWSClientContext.m @@ -17,7 +17,7 @@ #import #import #import -#import "AZLogging.h" +#import "AWSLogging.h" NSString *const AWSClientContextDeviceIdKey = @"com.amazonaws.AWSClientContext.DeviceID"; NSString *const AWSClientContextVersion = @"1.0"; @@ -118,7 +118,7 @@ - (NSString *)JSONStringRepresentation { options:kNilOptions error:&error]; if (error) { - AZLogError(@"Failed to generate a JSON string: [%@]", error); + AWSLogError(@"Failed to generate a JSON string: [%@]", error); return nil; } diff --git a/AWSCore/Service/AWSService.h b/AWSCore/Service/AWSService.h index c8212a68ab8..7211276c09e 100644 --- a/AWSCore/Service/AWSService.h +++ b/AWSCore/Service/AWSService.h @@ -14,10 +14,12 @@ */ #import -#import "AZNetworking.h" +#import "AWSNetworking.h" #import "AWSCredentialsProvider.h" #import "AWSServiceEnum.h" +@class AWSEndpoint; + #pragma mark - AWSService @interface AWSService : NSObject @@ -44,10 +46,11 @@ #pragma mark - AWSServiceConfiguration -@interface AWSServiceConfiguration : AZNetworkingConfiguration +@interface AWSServiceConfiguration : AWSNetworkingConfiguration -@property (nonatomic, readonly, assign) AWSRegionType regionType; -@property (nonatomic, readonly, strong) id credentialsProvider; +@property (nonatomic, assign, readonly) AWSRegionType regionType; +@property (nonatomic, strong, readonly) id credentialsProvider; +@property (nonatomic, strong) AWSEndpoint *endpoint; @property (nonatomic, assign) int32_t maxRetryCount; + (instancetype)configurationWithRegion:(AWSRegionType)regionType diff --git a/AWSCore/Service/AWSService.m b/AWSCore/Service/AWSService.m index 260c4e8a3d2..1fb52217410 100644 --- a/AWSCore/Service/AWSService.m +++ b/AWSCore/Service/AWSService.m @@ -15,12 +15,9 @@ #import "AWSService.h" -#import "AZSynchronizedMutableDictionary.h" +#import "AWSSynchronizedMutableDictionary.h" #import "AWSURLResponseSerialization.h" -#import "CSURITemplate.h" -#import "TMCache.h" - #pragma mark - AWSService @implementation AWSService @@ -32,7 +29,7 @@ @implementation AWSService @interface AWSServiceManager() @property (nonatomic, strong) AWSServiceConfiguration *defaultServiceConfiguration; -@property (nonatomic, strong) AZSynchronizedMutableDictionary *dictionary; +@property (nonatomic, strong) AWSSynchronizedMutableDictionary *dictionary; @end @@ -50,7 +47,7 @@ + (instancetype)defaultServiceManager { - (instancetype)init { if ( self = [super init]) { - _dictionary = [AZSynchronizedMutableDictionary new]; + _dictionary = [AWSSynchronizedMutableDictionary new]; } return self; } @@ -183,6 +180,8 @@ - (BOOL)isServiceAvailable:(AWSServiceType)serviceType { NSString *const AWSRegionNameAPNortheast1 = @"ap-northeast-1"; NSString *const AWSRegionNameSAEast1 = @"sa-east-1"; +NSString *const AWSRegionNameCNNorth1 = @"cn-north-1"; + NSString *const AWSServiceNameAppStream = @"appstream"; NSString *const AWSServiceNameAutoScaling = @"autoscaling"; NSString *const AWSServiceNameCloudWatch = @"monitoring"; @@ -257,6 +256,8 @@ - (instancetype)initWithRegion:(AWSRegionType)regionType case AWSRegionSAEast1: _regionName = AWSRegionNameSAEast1; break; + case AWSRegionCNNorth1: + _regionName = AWSRegionNameCNNorth1; default: break; } @@ -314,7 +315,7 @@ - (instancetype)initWithRegion:(AWSRegionType)regionType } NSString *separator = @"."; - if (_serviceType == AWSServiceS3) { + if (_serviceType == AWSServiceS3 && _regionType != AWSRegionCNNorth1) { separator = @"-"; } @@ -325,18 +326,24 @@ - (instancetype)initWithRegion:(AWSRegionType)regionType if (_serviceType == AWSServiceS3 && _regionType == AWSRegionUSEast1) { _URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://s3.amazonaws.com", HTTP_Type]]; - } else if (_serviceType == AWSServiceSTS && _regionType == AWSRegionUSEast1) { - _URL = [NSURL URLWithString:@"https://sts.amazonaws.com"]; + } else if (_serviceType == AWSServiceSTS) { + if (_regionType == AWSRegionCNNorth1) { + _URL = [NSURL URLWithString:@"https://sts.cn-north-1.amazonaws.com"]; + } else { + _URL = [NSURL URLWithString:@"https://sts.amazonaws.com"]; + } + } else if (_serviceType == AWSServiceSimpleDB && _regionType == AWSRegionUSEast1) { _URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://sdb.amazonaws.com", HTTP_Type]]; - } else if (_serviceType == AWSServiceCognitoIdentityBroker && _regionType == AWSRegionUSEast1) { - _URL = [NSURL URLWithString:@"https://cognito-identity.us-east-1.amazonaws.com"]; - } else if (_serviceType == AWSServiceCognitoService && _regionType == AWSRegionUSEast1) { - _URL = [NSURL URLWithString:@"https://cognito-sync.us-east-1.amazonaws.com"]; } else { _URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@%@%@.amazonaws.com", HTTP_Type, _serviceName, separator, _regionName]]; } - + + //need to add ".cn" at end of URL if it is in China Region + if ([_regionName hasPrefix:@"cn"]) { + NSString *urlString = [_URL absoluteString]; + _URL = [NSURL URLWithString:[urlString stringByAppendingString:@".cn"]]; + } _hostName = [_URL host]; } diff --git a/AWSCore/Service/AWSServiceEnum.h b/AWSCore/Service/AWSServiceEnum.h index 5c866cc35f6..aa158ae57bb 100644 --- a/AWSCore/Service/AWSServiceEnum.h +++ b/AWSCore/Service/AWSServiceEnum.h @@ -25,7 +25,8 @@ typedef NS_ENUM(NSInteger, AWSRegionType) { AWSRegionAPNortheast1, AWSRegionUSWest2, AWSRegionSAEast1, - AWSRegionAPSoutheast2 + AWSRegionAPSoutheast2, + AWSRegionCNNorth1, }; typedef NS_ENUM(NSInteger, AWSServiceType) { diff --git a/AWSCore/Utility/AWSCategory.h b/AWSCore/Utility/AWSCategory.h new file mode 100644 index 00000000000..861b1c2876f --- /dev/null +++ b/AWSCore/Utility/AWSCategory.h @@ -0,0 +1,89 @@ +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +#import + +FOUNDATION_EXPORT NSString *const AWSDateRFC822DateFormat1; +FOUNDATION_EXPORT NSString *const AWSDateISO8601DateFormat1; +FOUNDATION_EXPORT NSString *const AWSDateISO8601DateFormat2; +FOUNDATION_EXPORT NSString *const AWSDateISO8601DateFormat3; +FOUNDATION_EXPORT NSString *const AWSDateShortDateFormat1; + +@interface NSData (AWS) + +- (NSString *)aws_base64EncodedString; + +@end + +@interface NSDate (AWS) + ++ (NSDate *)aws_dateFromString:(NSString *)string; ++ (NSDate *)aws_dateFromString:(NSString *)string format:(NSString *)dateFormat; +- (NSString *)aws_stringValue:(NSString *)dateFormat; + +/** + * Set the clock skew for the current device. This clock skew will be used for calculating + * signatures to AWS signatures and for parsing/converting date values from responses. + * + * @param clockskew the skew (in seconds) for this device. If the clock on the device is fast, pass positive skew to correct. If the clock on the device is slow, pass negative skew to correct. + */ ++ (void)aws_setRuntimeClockSkew:(NSTimeInterval)clockskew; + +/** + * Get the clock skew for the current device. + * + * @return the skew (in seconds) currently set for this device. Positive clock skew implies the device is fast, negative implies the device is slow. + */ ++ (NSTimeInterval)aws_getRuntimeClockSkew; + ++ (NSDate *)aws_getDateFromMessageBody:(NSString *)messageBody; + +@end + +@interface NSDictionary (AWS) + +- (NSDictionary *)aws_removeNullValues; + +@end + +@interface NSObject (AWS) + +- (NSDictionary *)aws_properties; + +- (void)aws_copyPropertiesFromObject:(NSObject *)object; + +@end + +@interface NSString (AWS) + ++ (NSString *)aws_randomStringWithLength:(NSUInteger)length; +- (BOOL)aws_isBase64Data; +- (NSString *)aws_stringWithURLEncoding; +- (NSString *)aws_stringWithURLEncodingPath; + +@end + +@interface NSURL (AWS) + +- (NSURL *)aws_URLByAppendingQuery:(NSDictionary *)query; + +@end + +@interface NSDictionary (caseInsensitive) + +-(id) aws_objectForCaseInsensitiveKey:(id)aKey; + +@end + diff --git a/AmazonCore/Utility/AZCategory.m b/AWSCore/Utility/AWSCategory.m similarity index 79% rename from AmazonCore/Utility/AZCategory.m rename to AWSCore/Utility/AWSCategory.m index e194d5060ba..3d6f13ed88c 100644 --- a/AmazonCore/Utility/AZCategory.m +++ b/AWSCore/Utility/AWSCategory.m @@ -13,21 +13,21 @@ * permissions and limitations under the License. */ -#import "AZCategory.h" +#import "AWSCategory.h" #import -#import "AZLogging.h" +#import "AWSLogging.h" -NSString *const AZDateRFC822DateFormat1 = @"EEE, dd MMM yyyy HH:mm:ss z"; -NSString *const AZDateISO8601DateFormat1 = @"yyyy-MM-dd'T'HH:mm:ss'Z'"; -NSString *const AZDateISO8601DateFormat2 = @"yyyyMMdd'T'HHmmss'Z'"; -NSString *const AZDateISO8601DateFormat3 = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; -NSString *const AZDateShortDateFormat1 = @"yyyyMMdd"; +NSString *const AWSDateRFC822DateFormat1 = @"EEE, dd MMM yyyy HH:mm:ss z"; +NSString *const AWSDateISO8601DateFormat1 = @"yyyy-MM-dd'T'HH:mm:ss'Z'"; +NSString *const AWSDateISO8601DateFormat2 = @"yyyyMMdd'T'HHmmss'Z'"; +NSString *const AWSDateISO8601DateFormat3 = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; +NSString *const AWSDateShortDateFormat1 = @"yyyyMMdd"; -@implementation NSData (AZ) +@implementation NSData (AWS) static char base64EncodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -- (NSString *)az_base64EncodedString { +- (NSString *)aws_base64EncodedString { NSMutableString *result; unsigned char *raw; unsigned long length; @@ -83,17 +83,17 @@ - (NSString *)az_base64EncodedString { @end -@implementation NSDate (AZ) +@implementation NSDate (AWS) static NSTimeInterval _clockskew = 0.0; -+ (NSDate *)az_dateFromString:(NSString *)string { ++ (NSDate *)aws_dateFromString:(NSString *)string { NSDate *parsedDate = nil; - NSArray *arrayOfDateFormat = @[AZDateRFC822DateFormat1,AZDateISO8601DateFormat1,AZDateISO8601DateFormat2,AZDateISO8601DateFormat3]; + NSArray *arrayOfDateFormat = @[AWSDateRFC822DateFormat1,AWSDateISO8601DateFormat1,AWSDateISO8601DateFormat2,AWSDateISO8601DateFormat3]; for (NSString *dateFormat in arrayOfDateFormat) { if (!parsedDate) { - parsedDate = [NSDate az_dateFromString:string format:dateFormat]; + parsedDate = [NSDate aws_dateFromString:string format:dateFormat]; } else { break; } @@ -102,7 +102,7 @@ + (NSDate *)az_dateFromString:(NSString *)string { return parsedDate; } -+ (NSDate *)az_dateFromString:(NSString *)string format:(NSString *)dateFormat { ++ (NSDate *)aws_dateFromString:(NSString *)string format:(NSString *)dateFormat { NSDateFormatter *dateFormatter = [NSDateFormatter new]; dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"]; dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; @@ -115,7 +115,7 @@ + (NSDate *)az_dateFromString:(NSString *)string format:(NSString *)dateFormat { return localDate; } -- (NSString *)az_stringValue:(NSString *)dateFormat { +- (NSString *)aws_stringValue:(NSString *)dateFormat { NSDateFormatter *dateFormatter = [NSDateFormatter new]; dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"]; dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; @@ -128,21 +128,21 @@ - (NSString *)az_stringValue:(NSString *)dateFormat { return formatted; } -+ (void)az_setRuntimeClockSkew:(NSTimeInterval)clockskew ++ (void)aws_setRuntimeClockSkew:(NSTimeInterval)clockskew { @synchronized(self) { _clockskew = clockskew; } } -+ (NSTimeInterval)az_getRuntimeClockSkew ++ (NSTimeInterval)aws_getRuntimeClockSkew { @synchronized(self) { return _clockskew; } } -+ (NSDate *)az_getDateFromMessageBody:(NSString *)messageBody ++ (NSDate *)aws_getDateFromMessageBody:(NSString *)messageBody { if ([messageBody length] == 0) { return nil; @@ -156,7 +156,7 @@ + (NSDate *)az_getDateFromMessageBody:(NSString *)messageBody time = [self getTimeUsingBeginTag:@" (" andEndTag:@" + 15 min.)" fromResponseBody:messageBody]; } - return [self az_dateFromString:time]; + return [self aws_dateFromString:time]; } + (NSString *)getTimeUsingBeginTag:(NSString *)bTag andEndTag:(NSString *)eTag fromResponseBody:(NSString *)responseBody { @@ -176,9 +176,9 @@ + (NSString *)getTimeUsingBeginTag:(NSString *)bTag andEndTag:(NSString *)eTag f @end -@implementation NSDictionary (AZ) +@implementation NSDictionary (AWS) -- (NSDictionary *)az_removeNullValues { +- (NSDictionary *)aws_removeNullValues { NSMutableDictionary *mutableDictionary = [NSMutableDictionary new]; [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { if (obj != [NSNull null]) { @@ -191,12 +191,12 @@ - (NSDictionary *)az_removeNullValues { @end -@implementation NSObject (AZ) +@implementation NSObject (AWS) -- (NSDictionary *)az_properties { +- (NSDictionary *)aws_properties { NSMutableDictionary *propertyDictionary; if ([self superclass] != [NSObject class]) { - propertyDictionary = [NSMutableDictionary dictionaryWithDictionary:[[self superclass] az_properties]]; + propertyDictionary = [NSMutableDictionary dictionaryWithDictionary:[[self superclass] aws_properties]]; } else { propertyDictionary = [NSMutableDictionary dictionary]; } @@ -220,9 +220,9 @@ - (NSDictionary *)az_properties { return propertyDictionary; } -- (void)az_copyPropertiesFromObject:(NSObject *)object { - NSDictionary *propertiesToObject = [self az_properties]; - NSDictionary *propertiesFromObject = [object az_properties]; +- (void)aws_copyPropertiesFromObject:(NSObject *)object { + NSDictionary *propertiesToObject = [self aws_properties]; + NSDictionary *propertiesFromObject = [object aws_properties]; for (NSString *key in [propertiesFromObject allKeys]) { if ([propertiesToObject objectForKey:key]) { NSString *attributes = [propertiesFromObject valueForKey:key]; @@ -243,9 +243,9 @@ - (void)az_copyPropertiesFromObject:(NSObject *)object { @end -@implementation NSString (AZ) +@implementation NSString (AWS) -+ (NSString *)az_randomStringWithLength:(NSUInteger)length { ++ (NSString *)aws_randomStringWithLength:(NSUInteger)length { NSMutableString *randomString = [NSMutableString new]; for (int32_t i = 0; i < length; i++) { @autoreleasepool { @@ -255,7 +255,7 @@ + (NSString *)az_randomStringWithLength:(NSUInteger)length { return randomString; } -- (BOOL)az_isBase64Data { +- (BOOL)aws_isBase64Data { if ([self length] % 4 == 0) { static NSCharacterSet *invertedBase64CharacterSet = nil; if (invertedBase64CharacterSet == nil) { @@ -267,32 +267,32 @@ - (BOOL)az_isBase64Data { return NO; } -- (NSString *)az_stringWithURLEncoding { +- (NSString *)aws_stringWithURLEncoding { return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, - (__bridge CFStringRef)[self az_decodeURLEncoding], + (__bridge CFStringRef)[self aws_decodeURLEncoding], NULL, (CFStringRef)@"!*'\();:@&=+$,/?%#[] ", kCFStringEncodingUTF8)); } -- (NSString *)az_stringWithURLEncodingPath { +- (NSString *)aws_stringWithURLEncodingPath { return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, - (__bridge CFStringRef)[self az_decodeURLEncoding], + (__bridge CFStringRef)[self aws_decodeURLEncoding], NULL, (CFStringRef)@"!*'\();:@&=+$,?%#[] ", kCFStringEncodingUTF8)); } -- (NSString *)az_decodeURLEncoding { +- (NSString *)aws_decodeURLEncoding { NSString *result = [self stringByRemovingPercentEncoding]; return result?result:self; } @end -@implementation NSURL (AZ) +@implementation NSURL (AWS) -- (NSURL *)az_URLByAppendingQuery:(NSDictionary *)query { +- (NSURL *)aws_URLByAppendingQuery:(NSDictionary *)query { if ([query count] == 0) { return self; } @@ -315,11 +315,11 @@ - (NSURL *)az_URLByAppendingQuery:(NSDictionary *)query { value = [query[key] stringValue]; } else { value = [query[key] description]; - AZLogWarn(@"Query value is neither NSString nor NSNumber. This method should properly handle this datatype. [%@]", query[key]); + AWSLogWarn(@"Query value is neither NSString nor NSNumber. This method should properly handle this datatype. [%@]", query[key]); } [queryString appendString:[NSString stringWithFormat:@"%@=%@", - [correctedKey az_stringWithURLEncoding], - [value az_stringWithURLEncoding]]]; + [correctedKey aws_stringWithURLEncoding], + [value aws_stringWithURLEncoding]]]; } return [NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@", @@ -329,3 +329,15 @@ - (NSURL *)az_URLByAppendingQuery:(NSDictionary *)query { } @end + +@implementation NSDictionary (caseInsensitive) + +-(id) aws_objectForCaseInsensitiveKey:(id)aKey { + for (NSString *key in self.allKeys) { + if ([key compare:aKey options:NSCaseInsensitiveSearch] == NSOrderedSame) { + return [self objectForKey:key]; + } + } + return nil; +} +@end diff --git a/AWSCore/Utility/AWSLogging.h b/AWSCore/Utility/AWSLogging.h new file mode 100644 index 00000000000..ec812c7e82b --- /dev/null +++ b/AWSCore/Utility/AWSLogging.h @@ -0,0 +1,65 @@ +/* + * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +#import + + +#define AWSLogFormat @"%@ line:%d | %s | " + +#define AWSLogError(fmt, ...) [[AWSLogger defaultLogger] log:AWSLogLevelError format:(AWSLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] +#define AWSLogWarn(fmt, ...) [[AWSLogger defaultLogger] log:AWSLogLevelWarn format:(AWSLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] +#define AWSLogInfo(fmt, ...) [[AWSLogger defaultLogger] log:AWSLogLevelInfo format:(AWSLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] +#define AWSLogDebug(fmt, ...) [[AWSLogger defaultLogger] log:AWSLogLevelDebug format:(AWSLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] +#define AWSLogVerbose(fmt, ...) [[AWSLogger defaultLogger] log:AWSLogLevelVerbose format:(AWSLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] + + +typedef NS_ENUM(NSInteger, AWSLogLevel) { + AWSLogLevelUnknown = -1, + AWSLogLevelNone = 0, + AWSLogLevelError = 1, + AWSLogLevelWarn = 2, + AWSLogLevelInfo = 3, + AWSLogLevelDebug = 4, + AWSLogLevelVerbose = 5 +}; + +/** + * AWSLogger is an utility class that handles logging to the console. + * You can specify the log level to control how verbose the output will be. + */ +@interface AWSLogger : NSObject + +/** + * The log level setting. The default is AWSLogLevelNone. + */ +@property (atomic, assign) AWSLogLevel logLevel; + +/** + * Returns the shared logger object. + * + * @return The shared logger object. + */ ++ (instancetype)defaultLogger; + +/** + * Prints out the formatted logs to the console. + * + * @param logLevel The level of this log. + * @param fmt The formatted string to log. + */ +- (void)log:(AWSLogLevel)logLevel + format:(NSString *)fmt, ... NS_FORMAT_FUNCTION(2, 3); + +@end diff --git a/AmazonCore/Logging/AZLogging.m b/AWSCore/Utility/AWSLogging.m similarity index 67% rename from AmazonCore/Logging/AZLogging.m rename to AWSCore/Utility/AWSLogging.m index 72f55d26355..c2fb865a590 100644 --- a/AmazonCore/Logging/AZLogging.m +++ b/AWSCore/Utility/AWSLogging.m @@ -13,30 +13,30 @@ * permissions and limitations under the License. */ -#import "AZLogging.h" +#import "AWSLogging.h" -@implementation AZLogger +@implementation AWSLogger - (instancetype)init { if (self = [super init]) { - _logLevel = AZLogLevelNone; + _logLevel = AWSLogLevelNone; } return self; } + (instancetype)defaultLogger { - static AZLogger *_defaultLogger = nil; + static AWSLogger *_defaultLogger = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - _defaultLogger = [AZLogger new]; - _defaultLogger.logLevel = AZLogLevelError; //set default logLevel + _defaultLogger = [AWSLogger new]; + _defaultLogger.logLevel = AWSLogLevelError; //set default logLevel }); return _defaultLogger; } -- (void)log:(AZLogLevel)logLevel format:(NSString *)fmt, ... NS_FORMAT_FUNCTION(2, 3) { +- (void)log:(AWSLogLevel)logLevel format:(NSString *)fmt, ... NS_FORMAT_FUNCTION(2, 3) { if(self.logLevel >= logLevel) { va_list args; va_start(args, fmt); @@ -45,25 +45,25 @@ - (void)log:(AZLogLevel)logLevel format:(NSString *)fmt, ... NS_FORMAT_FUNCTION( } } -- (NSString *)logLevelLabel:(AZLogLevel)logLevel { +- (NSString *)logLevelLabel:(AWSLogLevel)logLevel { switch (logLevel) { - case AZLogLevelError: + case AWSLogLevelError: return @"Error"; - case AZLogLevelWarn: + case AWSLogLevelWarn: return @"Warn"; - case AZLogLevelInfo: + case AWSLogLevelInfo: return @"Info"; - case AZLogLevelDebug: + case AWSLogLevelDebug: return @"Debug"; - case AZLogLevelVerbose: + case AWSLogLevelVerbose: return @"Verbose"; - case AZLogLevelUnknown: - case AZLogLevelNone: + case AWSLogLevelUnknown: + case AWSLogLevelNone: default: return @"?"; } diff --git a/AmazonCore/Utility/AZModel.h b/AWSCore/Utility/AWSModel.h similarity index 94% rename from AmazonCore/Utility/AZModel.h rename to AWSCore/Utility/AWSModel.h index 5dd902b41da..4721c9c1c61 100644 --- a/AmazonCore/Utility/AZModel.h +++ b/AWSCore/Utility/AWSModel.h @@ -15,11 +15,11 @@ #import "Mantle.h" -@interface AZModel : MTLModel +@interface AWSModel : MTLModel @end -@interface AZModelUtility : NSObject +@interface AWSModelUtility : NSObject + (NSDictionary *)mapMTLDictionaryFromJSONArrayDictionary:(NSDictionary *)JSONArrayDictionary arrayElementType:(NSString *)arrayElementType diff --git a/AmazonCore/Utility/AZModel.m b/AWSCore/Utility/AWSModel.m similarity index 86% rename from AmazonCore/Utility/AZModel.m rename to AWSCore/Utility/AWSModel.m index c5493a97144..81ca12d9a9d 100644 --- a/AmazonCore/Utility/AZModel.m +++ b/AWSCore/Utility/AWSModel.m @@ -13,9 +13,9 @@ * permissions and limitations under the License. */ -#import "AZModel.h" +#import "AWSModel.h" -@implementation AZModel +@implementation AWSModel + (NSDictionary *)JSONKeyPathsByPropertyKey { return nil; @@ -36,14 +36,14 @@ - (NSDictionary *)dictionaryValue { @end -@implementation AZModelUtility +@implementation AWSModelUtility + (NSDictionary *)mapMTLDictionaryFromJSONArrayDictionary:(NSDictionary *)JSONArrayDictionary arrayElementType:(NSString *)arrayElementType withModelClass:(Class) modelClass { NSMutableDictionary *mutableDictionary = [NSMutableDictionary new]; for (NSString *key in [JSONArrayDictionary allKeys]) { if ([arrayElementType isEqualToString:@"map"]) { - [mutableDictionary setObject:[AZModelUtility mapMTLArrayFromJSONArray:JSONArrayDictionary[key] withModelClass:modelClass] forKey:key]; + [mutableDictionary setObject:[AWSModelUtility mapMTLArrayFromJSONArray:JSONArrayDictionary[key] withModelClass:modelClass] forKey:key]; } else if ([arrayElementType isEqualToString:@"structure"]) { NSValueTransformer *valueFransformer = [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[modelClass class]]; [mutableDictionary setObject:[valueFransformer transformedValue:JSONArrayDictionary[key]] forKey:key]; @@ -56,9 +56,9 @@ + (NSDictionary *)JSONArrayDictionaryFromMapMTLDictionary:(NSDictionary *)mapMTL NSMutableDictionary *mutableDictionary = [NSMutableDictionary new]; for (NSString *key in [mapMTLDictionary allKeys]) { if ([arrayElementType isEqualToString:@"map"]) { - [mutableDictionary setObject:[AZModelUtility JSONArrayFromMapMTLArray:mapMTLDictionary[key]] forKey:key]; + [mutableDictionary setObject:[AWSModelUtility JSONArrayFromMapMTLArray:mapMTLDictionary[key]] forKey:key]; } else if ([arrayElementType isEqualToString:@"structure"]) { - NSValueTransformer *valueFransformer = [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AZModel class]]; + NSValueTransformer *valueFransformer = [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSModel class]]; [mutableDictionary setObject:[valueFransformer reverseTransformedValue:mapMTLDictionary[key]] forKey:key]; } } @@ -69,7 +69,7 @@ + (NSDictionary *)JSONArrayDictionaryFromMapMTLDictionary:(NSDictionary *)mapMTL + (NSArray *)mapMTLArrayFromJSONArray:(NSArray *)JSONArray withModelClass:(Class)modelClass { NSMutableArray *mutableArray = [NSMutableArray new]; for (NSDictionary *aDic in JSONArray) { - NSDictionary *tmpDic = [AZModelUtility mapMTLDictionaryFromJSONDictionary:aDic withModelClass:[modelClass class]]; + NSDictionary *tmpDic = [AWSModelUtility mapMTLDictionaryFromJSONDictionary:aDic withModelClass:[modelClass class]]; [mutableArray addObject:tmpDic]; }; return mutableArray; @@ -79,7 +79,7 @@ + (NSArray *)mapMTLArrayFromJSONArray:(NSArray *)JSONArray withModelClass:(Class + (NSArray *)JSONArrayFromMapMTLArray:(NSArray *)mapMTLArray { NSMutableArray *mutableArray = [NSMutableArray new]; for (NSDictionary *aDic in mapMTLArray) { - NSDictionary *tmpDic = [AZModelUtility JSONDictionaryFromMapMTLDictionary:aDic]; + NSDictionary *tmpDic = [AWSModelUtility JSONDictionaryFromMapMTLDictionary:aDic]; [mutableArray addObject:tmpDic]; }; return mutableArray; diff --git a/AmazonCore/Utility/AZSynchronizedMutableDictionary.h b/AWSCore/Utility/AWSSynchronizedMutableDictionary.h similarity index 91% rename from AmazonCore/Utility/AZSynchronizedMutableDictionary.h rename to AWSCore/Utility/AWSSynchronizedMutableDictionary.h index bf56e09c0e6..6c83aefab50 100644 --- a/AmazonCore/Utility/AZSynchronizedMutableDictionary.h +++ b/AWSCore/Utility/AWSSynchronizedMutableDictionary.h @@ -15,7 +15,7 @@ #import -@interface AZSynchronizedMutableDictionary : NSObject +@interface AWSSynchronizedMutableDictionary : NSObject - (id)objectForKey:(id)aKey; - (void)removeObjectForKey:(id)aKey; @@ -23,4 +23,6 @@ - (void)conditionallySetObject:(id)anObject forKey:(id )aKey; +- (NSArray *)allKeys; + @end diff --git a/AmazonCore/Utility/AZSynchronizedMutableDictionary.m b/AWSCore/Utility/AWSSynchronizedMutableDictionary.m similarity index 78% rename from AmazonCore/Utility/AZSynchronizedMutableDictionary.m rename to AWSCore/Utility/AWSSynchronizedMutableDictionary.m index bd6db7fb67c..9f6cbb2363e 100644 --- a/AmazonCore/Utility/AZSynchronizedMutableDictionary.m +++ b/AWSCore/Utility/AWSSynchronizedMutableDictionary.m @@ -13,21 +13,21 @@ * permissions and limitations under the License. */ -#import "AZSynchronizedMutableDictionary.h" +#import "AWSSynchronizedMutableDictionary.h" -@interface AZSynchronizedMutableDictionary() +@interface AWSSynchronizedMutableDictionary() @property (nonatomic, strong) NSMutableDictionary *dictionary; @property (nonatomic, strong) dispatch_queue_t dispatchQueue; @end -@implementation AZSynchronizedMutableDictionary +@implementation AWSSynchronizedMutableDictionary - (instancetype)init { if (self = [super init]) { _dictionary = [NSMutableDictionary new]; - _dispatchQueue = dispatch_queue_create("com.amazonaws.AZSynchronizedMutableDictionary", DISPATCH_QUEUE_SERIAL); + _dispatchQueue = dispatch_queue_create("com.amazonaws.AWSSynchronizedMutableDictionary", DISPATCH_QUEUE_SERIAL); } return self; @@ -63,4 +63,12 @@ - (void)conditionallySetObject:(id)anObject forKey:(id )aKey { }); } +- (NSArray *)allKeys { + __block NSArray *allKeys = nil; + dispatch_sync(self.dispatchQueue, ^{ + allKeys = [self.dictionary allKeys]; + }); + return allKeys; +} + @end diff --git a/AWSiOSSDKAnalyticsTests/AIAmazonInsightsTests.m b/AWSiOSSDKAnalyticsTests/AIAmazonInsightsTests.m index 76709ed5718..87a35b3befa 100644 --- a/AWSiOSSDKAnalyticsTests/AIAmazonInsightsTests.m +++ b/AWSiOSSDKAnalyticsTests/AIAmazonInsightsTests.m @@ -32,29 +32,29 @@ - (void)setUp - (void)test_createInstanceUsingOnlyCredentials_allPropertiesNotNil { - AWSMobileAnalytics* instance = [AWSMobileAnalytics defaultMobileAnalyticsWithAppNamespace:APP_KEY]; - + AWSMobileAnalytics* instance = [AWSMobileAnalytics mobileAnalyticsForAppId:APP_KEY]; + assertThat([instance eventClient], is(notNilValue())); - + } - (void)test_createInstanceUsingCredentialsAndNilOptions_allPropertiesNotNil { - AWSMobileAnalytics* instance = [AWSMobileAnalytics defaultMobileAnalyticsWithAppNamespace:APP_KEY]; - + AWSMobileAnalytics* instance = [AWSMobileAnalytics mobileAnalyticsForAppId:APP_KEY]; + assertThat([instance eventClient], is(notNilValue())); - + } - (void)test_createInstanceUsingCredentialsAndNilOptionsAndCompletionBlock_allPropertiesNotNil { - AWSMobileAnalytics* instance = [AWSMobileAnalytics defaultMobileAnalyticsWithAppNamespace:APP_KEY]; - + AWSMobileAnalytics* instance = [AWSMobileAnalytics mobileAnalyticsForAppId:APP_KEY]; + assertThat([instance eventClient], is(notNilValue())); - + } @end diff --git a/AWSiOSSDKAnalyticsTests/AIConnectivityPolicyTests.m b/AWSiOSSDKAnalyticsTests/AIConnectivityPolicyTests.m index 9da72e70411..a08ac13276d 100644 --- a/AWSiOSSDKAnalyticsTests/AIConnectivityPolicyTests.m +++ b/AWSiOSSDKAnalyticsTests/AIConnectivityPolicyTests.m @@ -27,7 +27,7 @@ @implementation AIConnectivityPolicyTests -(void)setUp { - mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguration)]; + mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguring)]; [[[mockConfiguration stub] andReturnValue:@YES] boolForKey:@"allowWANEventDelivery" withOptValue:YES]; mockConnectivity = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConnectivity)]; @@ -83,7 +83,7 @@ -(void)test_isAllowed_hasOnlyWanAndWanNotAllowed_policyIsFalse -(void)test_isAllowed_hasOnlyWan_WanAllowedByUserButNotConfig_policyIsFalse { // recreate the context to have configuration return false for allowWan - mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguration)]; + mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguring)]; [[[mockConfiguration stub] andReturnValue:@NO] boolForKey:@"allowWANEventDelivery" withOptValue:YES]; AIInsightsContextBuilder* builder = [AIInsightsContextBuilder builder]; diff --git a/AWSiOSSDKAnalyticsTests/AIDefaultDeliveryClientTests.m b/AWSiOSSDKAnalyticsTests/AIDefaultDeliveryClientTests.m index 5468253437e..dc3490f6c49 100644 --- a/AWSiOSSDKAnalyticsTests/AIDefaultDeliveryClientTests.m +++ b/AWSiOSSDKAnalyticsTests/AIDefaultDeliveryClientTests.m @@ -40,7 +40,7 @@ @implementation AIDefaultDeliveryClientTests - (void)setUp { mockHttpClient = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsHttpClient)]; - mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguration)]; + mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguring)]; mockLifeCycleManager = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsLifeCycleManager)]; mockDeliveryPolicyFactory = [OCMockObject niceMockForClass:[AWSMobileAnalyticsDeliveryPolicyFactory class]]; mockERSRequestBuilder = [OCMockObject niceMockForClass:[AWSMobileAnalyticsERSRequestBuilder class]]; diff --git a/AWSiOSSDKAnalyticsTests/AIDeliveryIntegrationTests.m b/AWSiOSSDKAnalyticsTests/AIDeliveryIntegrationTests.m index 49c6157425c..b79bc663178 100644 --- a/AWSiOSSDKAnalyticsTests/AIDeliveryIntegrationTests.m +++ b/AWSiOSSDKAnalyticsTests/AIDeliveryIntegrationTests.m @@ -17,6 +17,8 @@ #import "AIDeliveryIntegrationTests.h" #import "GZIP.h" +#import "AWSCategory.h" +#import "AWSEventRecorderService.h" @interface DeliveryBlockingInterceptor : BlockingInterceptor @@ -373,7 +375,7 @@ - (void)test_submitEvents_successfulDelivery_eventsDeleted //add fake session.id [event addAttribute:@"ccesskey-11111111-20140606-231017274" forKey:SESSION_ID_ATTRIBUTE_KEY]; //add startTimeStamp - [event addAttribute:[[NSDate date] az_stringValue:AZDateISO8601DateFormat3] forKey:SESSION_START_TIME_ATTRIBUTE_KEY]; + [event addAttribute:[[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3] forKey:SESSION_START_TIME_ATTRIBUTE_KEY]; //set eventRecorderService object idhttpClient = [deliveryClient valueForKey:@"httpClient"]; AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. diff --git a/AWSiOSSDKAnalyticsTests/AIEventClientTests.m b/AWSiOSSDKAnalyticsTests/AIEventClientTests.m index b23c9682b8d..713836ae3dc 100644 --- a/AWSiOSSDKAnalyticsTests/AIEventClientTests.m +++ b/AWSiOSSDKAnalyticsTests/AIEventClientTests.m @@ -35,7 +35,7 @@ @implementation AIEventClientTests -(void)setUp { - mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguration)]; + mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguring)]; [[[mockConfiguration stub] andReturn:@"ver"] stringForKey:@"versionKey" withOptValue:@"ver"]; [[[mockConfiguration stub] andReturnValue:@YES] boolForKey:@"isAnalyticsEnabled" withOptValue:YES]; @@ -131,7 +131,7 @@ -(void) test_recordEvent_eventCollectionOff_doesNotRecord -(void) test_recordEvent_analyticsDisabled_doesNotRecord { - mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguration)]; + mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguring)]; [[[mockConfiguration stub] andReturn:@"ver"] stringForKey:@"versionKey" withOptValue:@"ver"]; [[[mockConfiguration stub] andReturnValue:@NO] boolForKey:@"isAnalyticsEnabled" withOptValue:YES]; diff --git a/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.h b/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.h index 21322fa664b..5fc140983ae 100644 --- a/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.h +++ b/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.h @@ -40,10 +40,10 @@ withLocale:(NSString*)locale; -(AIInsightsContextBuilder*)withApplicationVersion:(NSString*)appVersion withBuild:(NSString*)appBuild - withPackageName:(NSString*)appPackageName; + withPackageName:(NSString*)appPackageName; -(AIInsightsContextBuilder*)withUniqueId:(NSString*)uniqueId; --(AIInsightsContextBuilder*)withConfiguration:(id)configuration; +-(AIInsightsContextBuilder*)withConfiguration:(id)configuration; -(AIInsightsContextBuilder*)withHttpClient:(id)httpClient; -(AIInsightsContextBuilder*)withPreferences:(id)preferences; -(AIInsightsContextBuilder*)withLifeCycleManager:(id)lifeCycleManager; diff --git a/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.m b/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.m index 19de7c00d1a..978d1aa460b 100644 --- a/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.m +++ b/AWSiOSSDKAnalyticsTests/AIInsightsContextBuilder.m @@ -35,7 +35,7 @@ @interface AIInsightsContextBuilder() @property(nonatomic) NSString* appPackageName; @property(nonatomic) NSString* appName; -@property(nonatomic) id configuration; +@property(nonatomic) id configuration; @property(nonatomic) id httpClient; @property(nonatomic) id preferences; @property(nonatomic) id fileManager; @@ -73,7 +73,7 @@ -(id)init self.clientContext = nil; - self.configuration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguration)]; + self.configuration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguring)]; self.httpClient = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsHttpClient)]; self.preferences = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsPreferences)]; self.fileManager = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsFileManager)]; @@ -201,7 +201,7 @@ -(AIInsightsContextBuilder*)withUniqueId:(NSString*)uniqueId --(AIInsightsContextBuilder*)withConfiguration:(id)configuration +-(AIInsightsContextBuilder*)withConfiguration:(id)configuration { self.configuration = configuration; return self; diff --git a/AWSiOSSDKAnalyticsTests/AIInternalInterfaces.h b/AWSiOSSDKAnalyticsTests/AIInternalInterfaces.h index b748be73b9e..46bb87301c6 100644 --- a/AWSiOSSDKAnalyticsTests/AIInternalInterfaces.h +++ b/AWSiOSSDKAnalyticsTests/AIInternalInterfaces.h @@ -20,7 +20,7 @@ @property (nonatomic, readonly) id deliveryClient; +(AWSMobileAnalytics*) insightsWithContext:(id) theContext withOptions:(id) theOptions - withCompletionBlock:(AIInitializationCompletionBlock)completionBlock; + withCompletionBlock:(AWSInitializationCompletionBlock)completionBlock; +(void)removeCachedInstances; @end diff --git a/AWSiOSSDKAnalyticsTests/AISessionClientTests.m b/AWSiOSSDKAnalyticsTests/AISessionClientTests.m index 3ed75188c43..04c3cd3520c 100644 --- a/AWSiOSSDKAnalyticsTests/AISessionClientTests.m +++ b/AWSiOSSDKAnalyticsTests/AISessionClientTests.m @@ -23,6 +23,7 @@ #import "AIInsightsContextBuilder.h" #import "AWSMobileAnalyticsEvent.h" #import "TestEventObserver.h" +#import "AWSCategory.h" #define TEST_APP_KEY @"SessionClientTestApplicationKey" #define TEST_UNIQ_ID @"SessionClientTestUniqueID" @@ -33,7 +34,7 @@ static id mockResumeEvent = nil; @interface AWSMobileAnalytics() -+(void)removeCachedInstances; ++ (void)removeCachedInstances; @end @interface AWSMobileAnalytics() @@ -63,7 +64,7 @@ - (void)tearDown // + (id) buildMockSessionClientWithAppKey: (NSString*) appKey - withUniqId: (NSString*) uniqId + withUniqId: (NSString*) uniqId { return [self buildMockSessionClientWithAppKey:appKey withUniqId:uniqId @@ -71,8 +72,8 @@ - (void)tearDown } + (id) buildMockSessionClientWithAppKey: (NSString*) appKey - withUniqId: (NSString*) uniqId - withDeliveryClient: (id) deliveryClient + withUniqId: (NSString*) uniqId + withDeliveryClient: (id) deliveryClient { return [self buildMockSessionClientWithAppKey:appKey withUniqId:uniqId @@ -82,9 +83,9 @@ - (void)tearDown + (id) buildMockSessionClientWithAppKey: (NSString*) appKey - withUniqId: (NSString*) uniqId - withDeliveryClient: (id) deliveryClient - withEventClient: (id) eventClient + withUniqId: (NSString*) uniqId + withDeliveryClient: (id) deliveryClient + withEventClient: (id) eventClient { // Build Credentials //id mock_credentials = [OCMockObject niceMockForProtocol:@protocol(AIInsightsCredentials)]; @@ -93,7 +94,7 @@ - (void)tearDown id mock_context = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsContext)]; [[[mock_context stub] andReturn:uniqId] uniqueId]; //[[[mock_context stub] andReturn:mock_credentials] identifier]; - + return [AWSMobileAnalyticsDefaultSessionClient sessionClientWithEventClient:eventClient withDeliveryClient:deliveryClient withContext:mock_context]; } @@ -103,7 +104,7 @@ - (void)tearDown id mock_eventClient = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsInternalEventClient)]; [[[mock_eventClient stub] andReturn:mock_event] createEventWithEventType:SESSION_START_EVENT_TYPE]; [[[mock_eventClient stub] andReturn:mock_event] createEventWithEventType:SESSION_STOP_EVENT_TYPE]; - + return mock_eventClient; } @@ -111,10 +112,10 @@ - (void)test_initializesSessionClient { // init AWSMobileAnalyticsDefaultSessionClient* target = [AISessionClientTests buildMockSessionClientWithAppKey:TEST_APP_KEY withUniqId:TEST_UNIQ_ID]; - + // object has been allocated + initialized assertThat(target, is(notNilValue())); - + // verify initial conditions assertThat([target session], is(nilValue())); } @@ -123,13 +124,13 @@ - (void)test_startsSessionWhenSessionIsNil { // init AWSMobileAnalyticsDefaultSessionClient* target = [AISessionClientTests buildMockSessionClientWithAppKey:TEST_APP_KEY withUniqId:TEST_UNIQ_ID]; - + // session object destroyed after stopSession [target startSession]; assertThat([target session], is(notNilValue())); [target stopSession]; assertThat([target session], is(nilValue())); - + // make sure nothing breaks after repeated calls [target stopSession]; [target stopSession]; @@ -146,41 +147,41 @@ - (void) test_ConfigurationRestartValues { long restartDelay = 789; long resumeDelay = 456; - id mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguration)]; + id mockConfiguration = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsConfiguring)]; [[[mockConfiguration stub] andReturnValue:OCMOCK_VALUE(restartDelay)] longForKey:@"sessionRestartDelay" withOptValue:30000]; [[[mockConfiguration stub] andReturnValue:OCMOCK_VALUE(resumeDelay)] longForKey:@"sessionResumeDelay" withOptValue:5000]; - + AIInsightsContextBuilder *builder = [AIInsightsContextBuilder builder]; [builder withAppKey:TEST_APP_KEY]; [builder withUniqueId:TEST_UNIQ_ID]; [builder withConfiguration:mockConfiguration]; id mock_context = [builder build]; - + id mockEventClient = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsInternalEventClient)]; id mockDeliveryClient = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsDeliveryClient)]; - + AWSMobileAnalyticsDefaultSessionClient* target = [AWSMobileAnalyticsDefaultSessionClient sessionClientWithEventClient:mockEventClient withDeliveryClient:mockDeliveryClient withContext:mock_context]; assertThatLong(target.sessionResumeDelayMs, is(equalToLong(resumeDelay))); assertThatLong(target.sessionRestartDelayMs, is(equalToLong(restartDelay))); - - + + } - (void) test_SessionStop_SubmitsEvents { id mockDeliveryClient = [OCMockObject niceMockForProtocol:@protocol(AWSMobileAnalyticsDeliveryClient)]; - + // init AWSMobileAnalyticsDefaultSessionClient* target = [AISessionClientTests buildMockSessionClientWithAppKey:TEST_APP_KEY - withUniqId:TEST_UNIQ_ID - withDeliveryClient:mockDeliveryClient]; - + withUniqId:TEST_UNIQ_ID + withDeliveryClient:mockDeliveryClient]; + [[mockDeliveryClient expect] forceDeliveryAndWaitForCompletion:NO]; - + // session object destroyed after stopSession [target startSession]; [target stopSession]; - + [mockDeliveryClient verify]; } @@ -189,7 +190,7 @@ - (void) test_startAndStopSessionRandomly { // init AWSMobileAnalyticsDefaultSessionClient* target = [AISessionClientTests buildMockSessionClientWithAppKey:TEST_APP_KEY withUniqId:TEST_UNIQ_ID]; - + // make sure nothing breaks if we start randomly thrashing starts/stops [target startSession]; [target stopSession]; @@ -201,7 +202,7 @@ - (void) test_startAndStopSessionRandomly [target startSession]; [target startSession]; [target stopSession]; - + // health check assertThat([target session], is(nilValue())); [target startSession]; @@ -212,26 +213,23 @@ - (void) test_startAndStopSessionRandomly //Start Session -(void)test_StartSession_SessionIsActive_DoesNotReplaceGlobalAttribute_IfWithinTimeInterval{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); - + NSString* sesId = [target.session sessionId]; - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(sesId))); - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:1.111]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - + [target startSession]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; assertThat([interceptor lastEvent], is(notNilValue())); @@ -239,48 +237,40 @@ -(void)test_StartSession_SessionIsActive_DoesNotReplaceGlobalAttribute_IfWithinT } - (void) test_StartSession_SessionIsActive_DoesNotStartNewSession_IfWithinTimeInterval{ - // init - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); - + // assert session object not overwritten on spammed starts AWSMobileAnalyticsSession *origSess = [target session]; [target startSession]; assertThat([target session], isNot(equalTo(nil))); assertThat([target session], is(equalTo(origSess))); - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:(target.sessionRestartDelayMs / 1000.0) - 1.0]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - + [target startSession]; assertThat([target session], is(equalTo(origSess))); } - (void) test_StartSession_SessionIsActive_StartsNewSession_IfOutsideTimeInterval{ - // init - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); - + // assert session object not overwritten on spammed starts AWSMobileAnalyticsSession *origSess = [target session]; [target startSession]; assertThat([target session], isNot(equalTo(nil))); assertThat([target session], is(equalTo(origSess))); - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:(target.sessionRestartDelayMs / 1000.0) + 0.5]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - - + + [target startSession]; assertThat([[target session] sessionId], isNot(equalTo([origSess sessionId]))); } @@ -288,7 +278,7 @@ - (void) test_StartSession_SessionIsActive_StartsNewSession_IfOutsideTimeInterva - (void) test_StartSession_SessionIsInactive_StartsSessionWhenSessionIsNil{ // init AWSMobileAnalyticsDefaultSessionClient* target = [AISessionClientTests buildMockSessionClientWithAppKey:TEST_APP_KEY withUniqId:TEST_UNIQ_ID]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); // session object exists after startSession assertThat([target session], is(nilValue())); @@ -297,61 +287,51 @@ - (void) test_StartSession_SessionIsInactive_StartsSessionWhenSessionIsNil{ } -(void)test_StartSession_SessionIsInactive_AddsGlobalAttribute{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; [target stopSession]; - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(nilValue())); - + [target startSession]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(notNilValue())); } -(void)test_StartSession_SessionIsActive_StateChangedToActive{ - // init - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); [target startSession]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); } -(void)test_StartSession_SessionIsPaused_FiresStopEvent_FiresStartEvent{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + NSString* oldSessionID = [[target session] sessionId]; - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:5.0]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); - + [target startSession]; NSString* newSessionID = [[target session] sessionId]; - + assertThat([interceptor secondToLastEvent], is(notNilValue())); assertThat([[interceptor secondToLastEvent] eventType], is(equalTo(SESSION_STOP_EVENT_TYPE))); assertThat([[interceptor secondToLastEvent] attributeForKey:SESSION_END_TIME_ATTRIBUTE_KEY], is(notNilValue())); @@ -361,10 +341,10 @@ -(void)test_StartSession_SessionIsPaused_FiresStopEvent_FiresStartEvent{ assertThat([[interceptor secondToLastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(oldSessionID))); long long duration = [[[interceptor secondToLastEvent] metricForKey:SESSION_DURATION_METRIC_KEY] longLongValue]; NSLog(@"duration: %lld", duration); - + assertThatBool(duration >= 5000, is(equalToBool(YES))); assertThatBool(duration <= 7000, is(equalToBool(YES))); - + assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] eventType], is(equalTo(SESSION_START_EVENT_TYPE))); assertThat([[interceptor lastEvent] attributeForKey:SESSION_END_TIME_ATTRIBUTE_KEY], is(nilValue())); @@ -372,45 +352,38 @@ -(void)test_StartSession_SessionIsPaused_FiresStopEvent_FiresStartEvent{ assertThat([[interceptor lastEvent] metricForKey:SESSION_DURATION_METRIC_KEY], is(nilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(newSessionID))); - + assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], isNot(equalTo([[interceptor secondToLastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]))); } -(void)test_StartSession_SessionIsPaused_ReplacesGlobalAttribute{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); - + [target startSession]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck2"]]; NSString* newSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - - + + assertThat(oldSessionId, is(notNilValue())); assertThat(newSessionId, is(notNilValue())); assertThat(oldSessionId, isNot(equalTo(newSessionId))); } -(void)test_StartSession_SessionIsPaused_StateChangedToActive{ - // init - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); @@ -419,39 +392,39 @@ -(void)test_StartSession_SessionIsPaused_StateChangedToActive{ } -(void)test_StartSession_PreviousPersistedSession_FiresStopEvent_FiresStartEvent{ - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; - + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; + AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:5.0]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; - + NSDate* persistedStartDate = [target session].startTime; NSDate* persistedStopDate = [target session].stopTime; NSString* persistedStartTimeMillis = [[NSNumber numberWithUnsignedLongLong:((UTCTimeMillis) ([persistedStartDate timeIntervalSince1970] * 1000))] stringValue]; NSString* persistedStopTimeMillis = [[NSNumber numberWithUnsignedLongLong:((UTCTimeMillis) ([persistedStopDate timeIntervalSince1970] * 1000))] stringValue]; - + [AWSMobileAnalytics removeCachedInstances]; - insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:^(AWSMobileAnalytics *newInsights) { - id newEc = (id) [newInsights eventClient]; - [newEc addEventObserver:interceptor]; - }]; - + insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY + configuration:[AWSMobileAnalyticsConfiguration new] + completionBlock:^(AWSMobileAnalytics *newInsights) { + id newEc = (id) [newInsights eventClient]; + [newEc addEventObserver:interceptor]; + }]; + target = [insights sessionClient]; NSString* newSessionID = [[target session] sessionId]; - + assertThat([interceptor secondToLastEvent], is(notNilValue())); assertThat([[interceptor secondToLastEvent] eventType], is(equalTo(SESSION_STOP_EVENT_TYPE))); assertThat([[interceptor secondToLastEvent] attributeForKey:SESSION_END_TIME_ATTRIBUTE_KEY], is(notNilValue())); @@ -463,9 +436,9 @@ -(void)test_StartSession_PreviousPersistedSession_FiresStopEvent_FiresStartEvent NSLog(@"duration: %lld", duration); assertThatBool(duration >= 5000, is(equalToBool(YES))); assertThatBool(duration <= 7000, is(equalToBool(YES))); - assertThat([[interceptor secondToLastEvent] attributeForKey:SESSION_START_TIME_ATTRIBUTE_KEY], is(equalTo([[NSDate dateWithTimeIntervalSince1970:[persistedStartTimeMillis doubleValue]/1000] az_stringValue:AZDateISO8601DateFormat3]))); - assertThat([[interceptor secondToLastEvent] attributeForKey:SESSION_END_TIME_ATTRIBUTE_KEY], is(equalTo([[NSDate dateWithTimeIntervalSince1970:[persistedStopTimeMillis doubleValue]/1000] az_stringValue:AZDateISO8601DateFormat3]))); - + assertThat([[interceptor secondToLastEvent] attributeForKey:SESSION_START_TIME_ATTRIBUTE_KEY], is(equalTo([[NSDate dateWithTimeIntervalSince1970:[persistedStartTimeMillis doubleValue]/1000] aws_stringValue:AWSDateISO8601DateFormat3]))); + assertThat([[interceptor secondToLastEvent] attributeForKey:SESSION_END_TIME_ATTRIBUTE_KEY], is(equalTo([[NSDate dateWithTimeIntervalSince1970:[persistedStopTimeMillis doubleValue]/1000] aws_stringValue:AWSDateISO8601DateFormat3]))); + assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] eventType], is(equalTo(SESSION_START_EVENT_TYPE))); assertThat([[interceptor lastEvent] attributeForKey:SESSION_END_TIME_ATTRIBUTE_KEY], is(nilValue())); @@ -473,38 +446,37 @@ -(void)test_StartSession_PreviousPersistedSession_FiresStopEvent_FiresStartEvent assertThat([[interceptor lastEvent] metricForKey:SESSION_DURATION_METRIC_KEY], is(nilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(newSessionID))); - + assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], isNot(equalTo([[interceptor secondToLastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]))); - + assertThat([target.sessionStore retrievePersistedSessionDetails], is(nilValue())); } -(void)test_StartSession_PreviousPersistedSessionSubmitted_DoesNotFireStopEvent_FiresStartEvent{ - //AWSMobileAnalyticsDefaultOptions* options = [AWSMobileAnalyticsDefaultOptions optionsWithAllowEventCollection:YES withWANDelivery:YES]; - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; [NSThread sleepForTimeInterval:1.0]; [target.state pauseWithSessionClient:target]; - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:(target.sessionResumeDelayMs / 1000.0) + 2.0]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - + TestEventObserver2* newInterceptor = [[TestEventObserver2 alloc] initObserver]; [AWSMobileAnalytics removeCachedInstances]; - insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:^(AWSMobileAnalytics *newInsights) { - id newEc = (id) [newInsights eventClient]; - [newEc addEventObserver:newInterceptor]; - }]; - + insights = [AWSMobileAnalytics mobileAnalyticsForAppId:[NSStringFromSelector(_cmd) stringByAppendingString:@"-2"] + configuration:[AWSMobileAnalyticsConfiguration new] + completionBlock:^(AWSMobileAnalytics *newInsights) { + id newEc = (id) [newInsights eventClient]; + [newEc addEventObserver:newInterceptor]; + }]; + assertThat([newInterceptor secondToLastEvent], is(nilValue())); assertThat([newInterceptor lastEvent], is(notNilValue())); assertThat([[newInterceptor lastEvent] eventType], is(equalTo(SESSION_START_EVENT_TYPE))); @@ -513,15 +485,12 @@ -(void)test_StartSession_PreviousPersistedSessionSubmitted_DoesNotFireStopEvent_ //Stop Session -(void)test_StopSession_SessionIsInactive_DoesNotFireStopEvent{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [target stopSession]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); [ec addEventObserver:interceptor]; [target stopSession]; @@ -529,39 +498,33 @@ -(void)test_StopSession_SessionIsInactive_DoesNotFireStopEvent{ } -(void)test_StopSession_SessionIsInactive_DoesNotRemoveGlobalAttribute{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target stopSession]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + [target stopSession]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck2"]]; NSString* newSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + assertThat(oldSessionId, is(nilValue())); assertThat(newSessionId, is(nilValue())); assertThat(oldSessionId, is(equalTo(newSessionId))); } -(void)test_StopSession_SessionIsActive_FiresStopEvent{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); [target stopSession]; assertThat([interceptor lastEvent], is(notNilValue())); @@ -569,149 +532,122 @@ -(void)test_StopSession_SessionIsActive_FiresStopEvent{ } -(void)test_StopSession_SessionIsActive_PausesOldSession{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + AWSMobileAnalyticsSession* session = [target session]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); assertThatBool([session isPaused], is(equalToBool(NO))); - + [target stopSession]; - + assertThatBool([session isPaused], is(equalToBool(YES))); - + assertThat([target session], is(nilValue())); } -(void)test_StopSession_SessionIsActive_RemovesGlobalAttribute{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; [target stopSession]; - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck2"]]; NSString* newSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + assertThat(oldSessionId, is(notNilValue())); assertThat(newSessionId, is(nilValue())); assertThat(oldSessionId, isNot(equalTo(newSessionId))); } -(void)test_StopSession_SessionIsActive_StateChangedToInactive{ - // init - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); [target stopSession]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); } -(void)test_StopSession_SessionIsPaused_FiresStopEvent{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); - + [target stopSession]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] eventType], is(equalTo(SESSION_STOP_EVENT_TYPE))); } -(void)test_StopSession_SessionIsPaused_StateChangedToInactive{ - // init - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); - + [target stopSession]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); } //Pause Session -(void)test_PauseSession_SessionIsActive_FiresPauseEvent{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; - + assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] eventType], is(equalTo(SESSION_PAUSE_EVENT_TYPE))); } -(void)test_PauseSession_SessionIsActive_KeepsGlobalAttribute{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck2"]]; NSString* newSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + assertThat(oldSessionId, isNot(nilValue())); assertThat(newSessionId, isNot(nilValue())); assertThat(oldSessionId, is(equalTo(newSessionId))); } -(void)test_PauseSession_SessionIsActive_StateChangedToPause{ - // init - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; @@ -719,18 +655,16 @@ -(void)test_PauseSession_SessionIsActive_StateChangedToPause{ } -(void)test_PauseSession_SessionIsInactive_FiresBlankPauseEvent{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target stopSession]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThat([interceptor lastEvent], is(notNilValue())); @@ -738,36 +672,32 @@ -(void)test_PauseSession_SessionIsInactive_FiresBlankPauseEvent{ } -(void)test_PauseSession_SessionIsInactive_StateIsNotChanged{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target stopSession]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); } -(void)test_PauseSession_SessionIsPaused_DoesNotFirePauseEvent{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); - + [ec addEventObserver:interceptor]; [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; @@ -775,150 +705,129 @@ -(void)test_PauseSession_SessionIsPaused_DoesNotFirePauseEvent{ } - (void) test_PauseSession_WaitTimeNotCountedAsSessionTime{ - // - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [NSThread sleepForTimeInterval:2]; [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:(target.sessionResumeDelayMs / 1000.0) + 2.0]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - - + + long long duration = [[[interceptor lastEvent] metricForKey:SESSION_DURATION_METRIC_KEY] longLongValue]; NSLog(@"duration: %lld", duration); - + assertThatBool(duration >= 2000, is(equalToBool(YES))); assertThatBool(duration <= 4000, is(equalToBool(YES))); } - (void) test_PauseSession_StopEventFiresAfterResumeDelay{ - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [NSThread sleepForTimeInterval:2]; [target.state pauseWithSessionClient:target]; - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:(target.sessionResumeDelayMs / 1000.0) + 2.0]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - - + + assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] eventType], is(equalTo(SESSION_STOP_EVENT_TYPE))); } //Resume Session -(void)test_ResumeSession_SessionIsActive_DoesNotFireResumeEvent{ - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); - + [ec addEventObserver:interceptor]; [target.state resumeWithSessionClient:target]; assertThat([interceptor lastEvent], is(nilValue())); } -(void)test_ResumeSession_SessionIsActive_DoesNotAddGlobalAttribute{ - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); - + [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + [target.state resumeWithSessionClient:target]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck2"]]; NSString* newSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + assertThat(oldSessionId, isNot(nilValue())); assertThat(newSessionId, isNot(nilValue())); assertThat(oldSessionId, is(equalTo(newSessionId))); } -(void)test_ResumeSession_SessionIsInactive_FiresStartEvent{ - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target stopSession]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); - + [target startSession]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] eventType], is(equalTo(SESSION_START_EVENT_TYPE))); } -(void)test_ResumeSession_SessionIsInactive_StateChangedToActive{ - // init - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; [target stopSession]; - + assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_INACTIVE))); [target.state resumeWithSessionClient:target]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_ACTIVE))); } -(void)test_ResumeSession_SessionIsPaused_FiresResumeEvent_IfWithinTimeInterval{ - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target.state pauseWithSessionClient:target]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); - + [target.state resumeWithSessionClient:target]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] eventType], is(equalTo(SESSION_RESUME_EVENT_TYPE))); } -(void)test_ResumeSession_SessionIsPaused_StateIsChanged_IfWithinTimeInterval{ - // init - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; - + [target.state pauseWithSessionClient:target]; assertThatInteger([target getSessionState], is(equalToInteger(SESSION_STATE_PAUSED))); [target.state resumeWithSessionClient:target]; @@ -926,43 +835,37 @@ -(void)test_ResumeSession_SessionIsPaused_StateIsChanged_IfWithinTimeInterval{ } -(void)test_ResumeSession_SessionIsPaused_DoesNotStartNewSession_IfWithinTimeInterval{ - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target.state pauseWithSessionClient:target]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + [target.state resumeWithSessionClient:target]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck2"]]; NSString* newSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + assertThat(oldSessionId, isNot(nilValue())); assertThat(newSessionId, isNot(nilValue())); assertThat(oldSessionId, is(equalTo(newSessionId))); } -(void)test_ResumeSession_SessionIsPaused_StartsNewSession_IfOutsideTimeInterval{ - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:TEST_APP_KEY completionBlock:nil]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:TEST_APP_KEY]; AWSMobileAnalyticsDefaultSessionClient* target = [insights sessionClient]; TestEventObserver2* interceptor = [[TestEventObserver2 alloc] initObserver]; id ec = (id) [insights eventClient]; [ec addEventObserver:interceptor]; - + [target.state pauseWithSessionClient:target]; [target cancelDelayedBlock]; [ec recordEvent:[ec createEventWithEventType:@"sessIDCheck"]]; NSString* oldSessionId = [[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY]; - + // we can't sleep otherwise we block the timer NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:(target.sessionResumeDelayMs / 1000.0) + 2.0]; [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; diff --git a/AWSiOSSDKAnalyticsTests/AISessionIntegrationTests.m b/AWSiOSSDKAnalyticsTests/AISessionIntegrationTests.m index f10717b5695..f3ca3480861 100644 --- a/AWSiOSSDKAnalyticsTests/AISessionIntegrationTests.m +++ b/AWSiOSSDKAnalyticsTests/AISessionIntegrationTests.m @@ -14,33 +14,32 @@ */ #import "AISessionIntegrationTests.h" -#import "AZCategory.h" +#import "AWSCategory.h" AWSMobileAnalyticsDefaultSessionClient* target = nil; id eventClient = nil; TestEventObserver2* interceptor = nil; @interface AWSMobileAnalytics() -+(void)removeCachedInstances; -@property (nonatomic, readonly) id insightsContext; + +@property (nonatomic, readonly) id mobileAnalyticsContext; @property (nonatomic, readonly) id sessionClient; @property (nonatomic, readonly) id deliveryClient; ++ (void)removeCachedInstances; + @end @implementation AISessionIntegrationTests -- (void)setUp -{ - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager]. - defaultServiceConfiguration]; - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:APP_KEY completionBlock:^(AWSMobileAnalytics *instance) { - interceptor = [[TestEventObserver2 alloc] initObserver]; - eventClient = (id) [instance eventClient]; - [eventClient addEventObserver:interceptor]; - }]; +- (void)setUp { + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:APP_KEY + configuration:[AWSMobileAnalyticsConfiguration new] + completionBlock:^(AWSMobileAnalytics *instance) { + interceptor = [[TestEventObserver2 alloc] initObserver]; + eventClient = (id) [instance eventClient]; + [eventClient addEventObserver:interceptor]; + }]; target = [insights sessionClient]; - - } - (void)tearDown @@ -68,13 +67,13 @@ - (void) test_SessionIdTag_SessionEvents [target stopSession]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(sesId))); - + [NSThread sleepForTimeInterval:1.111]; - + [target startSession]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], isNot(equalTo(sesId))); - + sesId = [[target session] sessionId]; [target stopSession]; assertThat([interceptor lastEvent], is(notNilValue())); @@ -83,64 +82,64 @@ - (void) test_SessionIdTag_SessionEvents - (void) test_SessionIdTag_ScopedCustomEvents { - + NSString* sesId = [[target session] sessionId]; [eventClient recordEvent:[eventClient createEventWithEventType:@"in-scope_1"]]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(sesId))); - + [eventClient recordEvent:[eventClient createEventWithEventType:@"in-scope_2"]]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(sesId))); - + [target stopSession]; - + [eventClient recordEvent:[eventClient createEventWithEventType:@"out-scope_1"]]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], nilValue()); - + [eventClient recordEvent:[eventClient createEventWithEventType:@"out-scope_2"]]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], nilValue()); - + [target startSession]; - + sesId = [[target session] sessionId]; [eventClient recordEvent:[eventClient createEventWithEventType:@"in-scope_3"]]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(sesId))); - + [eventClient recordEvent:[eventClient createEventWithEventType:@"in-scope_4"]]; assertThat([interceptor lastEvent], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(equalTo(sesId))); } - (void) test_SessionEvents_haveCorrectAttributes -{ +{ assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(notNilValue())); - + // hold onto the session ref so it doesn't get removed AWSMobileAnalyticsSession* activeSession = target.session; - + [NSThread sleepForTimeInterval:.5]; - + [target stopSession]; assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(notNilValue())); assertThat([[interceptor lastEvent] attributeForKey:SESSION_ID_ATTRIBUTE_KEY], is(activeSession.sessionId)); - - + + // check the duration assertThat([[interceptor lastEvent] metricForKey:SESSION_DURATION_METRIC_KEY], is(notNilValue())); UTCTimeMillis startTimeMillis = [AWSMobileAnalyticsDateUtils utcTimeMillisFromDate:activeSession.startTime]; UTCTimeMillis stopTimeMillis = [AWSMobileAnalyticsDateUtils utcTimeMillisFromDate:activeSession.stopTime]; assertThatLongLong([[[interceptor lastEvent] metricForKey:SESSION_DURATION_METRIC_KEY] longLongValue], is(equalToLongLong(stopTimeMillis - startTimeMillis))); - + // check the start and stop attributes //NSString* startTime = [[NSNumber numberWithUnsignedLongLong:startTimeMillis] stringValue]; - NSString *startTimeString = [activeSession.startTime az_stringValue:AZDateISO8601DateFormat3]; + NSString *startTimeString = [activeSession.startTime aws_stringValue:AWSDateISO8601DateFormat3]; //NSString* stopTime = [[NSNumber numberWithUnsignedLongLong:stopTimeMillis] stringValue]; - NSString *stopTimeString = [activeSession.stopTime az_stringValue:AZDateISO8601DateFormat3]; - + NSString *stopTimeString = [activeSession.stopTime aws_stringValue:AWSDateISO8601DateFormat3]; + assertThat([[interceptor lastEvent] attributeForKey:SESSION_START_TIME_ATTRIBUTE_KEY], is(equalTo(startTimeString))); assertThat([[interceptor lastEvent] attributeForKey:SESSION_END_TIME_ATTRIBUTE_KEY], is(equalTo(stopTimeString))); } @@ -149,10 +148,10 @@ - (void) test_SessionEvents_durationMetric { [NSThread sleepForTimeInterval:5]; [target stopSession]; - + long long duration = [[[interceptor lastEvent] metricForKey:SESSION_DURATION_METRIC_KEY] longLongValue]; NSLog(@"duration: %lld", duration); - + assertThatBool(duration >= 5000, is(equalToBool(YES))); assertThatBool(duration <= 8000, is(equalToBool(YES))); } diff --git a/AWSiOSSDKAnalyticsTests/AITestConfiguration.h b/AWSiOSSDKAnalyticsTests/AITestConfiguration.h index d1ab66b0dfd..67216a38209 100644 --- a/AWSiOSSDKAnalyticsTests/AITestConfiguration.h +++ b/AWSiOSSDKAnalyticsTests/AITestConfiguration.h @@ -14,9 +14,9 @@ */ #import -#import "AWSMobileAnalyticsConfiguration.h" +#import "AWSMobileAnalyticsConfiguring.h" -@interface AITestConfiguration : NSObject +@interface AITestConfiguration : NSObject +(AITestConfiguration *) configurationWithDictionary:(NSDictionary *) theConfiguration; diff --git a/AWSiOSSDKAnalyticsTests/TestInsightsContext.h b/AWSiOSSDKAnalyticsTests/TestInsightsContext.h index 5cd013a7c02..089b2ae8373 100644 --- a/AWSiOSSDKAnalyticsTests/TestInsightsContext.h +++ b/AWSiOSSDKAnalyticsTests/TestInsightsContext.h @@ -38,7 +38,7 @@ @property (nonatomic, retain, readonly) id clientContext; -@property (nonatomic, retain, readonly) id configuration; +@property (nonatomic, retain, readonly) id configuration; @property (nonatomic, retain, readonly) NSString* uniqueId; diff --git a/AWSiOSSDKTests/AWSAnalyticsTests.m b/AWSiOSSDKTests/AWSAnalyticsTests.m index f38dd6309fc..038a077260c 100644 --- a/AWSiOSSDKTests/AWSAnalyticsTests.m +++ b/AWSiOSSDKTests/AWSAnalyticsTests.m @@ -14,7 +14,7 @@ */ // -#if AWS_TEST_ANALYTICS +#if AWS_TEST_ANALYTICS && !AWS_TEST_BJS_INSTEAD #import #import "AWSCore.h" @@ -39,40 +39,40 @@ - (void)tearDown { } - (void)test_createMobileAnalyticsInstance { - AWSMobileAnalytics* insights = [AWSMobileAnalytics defaultMobileAnalyticsWithAppNamespace:@"newuniqueid"]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:@"newuniqueid"]; XCTAssertNotNil([insights eventClient]); } - (void)test_createAndSubmitEvent{ - AWSMobileAnalytics* insights = [AWSMobileAnalytics defaultMobileAnalyticsWithAppNamespace:@"newuniqueid"]; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:@"newuniqueid"]; XCTAssertNotNil([insights eventClient]); - + // Record when the user completes level 1 // Get the event client from Insights instance. id eventClient = insights.eventClient; - + // Create a level completion event. id level1Event = [eventClient createEventWithEventType:@"level1Complete"]; - + // add an attribute to know what weapon the user completed the level with [level1Event addAttribute:@"sword" forKey:@"weaponUsed"]; // add a metric to know how many coins the user collected in the level [level1Event addMetric:@105 forKey:@"coinsCollected"]; - + // add a metric to know how long it took the user to complete the level [level1Event addMetric:@300 forKey:@"levelDuration"]; - + // Record the level completion event. [eventClient recordEvent:level1Event]; - + //ValueForceSubmissionWaitTime is 60 sec. need to wait before forceSubmitEvents take effect. [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:65]]; - + //submit the event [eventClient submitEvents]; - + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; - + id deliveryClient = [insights valueForKey:@"deliveryClient"]; NSArray *batchedEvents = [deliveryClient batchedEvents]; //batchedEvents should be empty if all events has been sent successfully. @@ -80,145 +80,140 @@ - (void)test_createAndSubmitEvent{ } - (void)test_createAndSubmitMonetizationEvent { - - AWSMobileAnalytics* insights = [AWSMobileAnalytics defaultMobileAnalyticsWithAppNamespace:@"newuniqueid"]; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:@"newuniqueid"]; XCTAssertNotNil([insights eventClient]); - + // get the event client for the builder id eventClient = insights.eventClient; - + // create a builder that can record purchase events from Apple AWSMobileAnalyticsAppleMonetizationEventBuilder* builder = [AWSMobileAnalyticsAppleMonetizationEventBuilder builderWithEventClient:eventClient]; - + // set the product id of the purchased item (obtained from the SKPurchaseTransaction object) [builder withProductId:@"sampleProductId1234567"]; - + // set the item price and price locale (obtained from the SKProduct object) [builder withItemPrice:0.99 andPriceLocale:[NSLocale currentLocale]]; - + // set the quantity of item(s) purchased (obtained from the SKPurchaseTransaction object) [builder withQuantity:10]; - + // set the transactionId of the transaction (obtained from the SKPurchaseTransaction object) [builder withTransactionId:@"transcationid1234567"]; - + // build the monetization event id purchaseEvent = [builder build]; - + // add any additional metrics/attributes and record [eventClient recordEvent:purchaseEvent]; - + //ValueForceSubmissionWaitTime is 60 sec. need to wait before forceSubmitEvents take effect. [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:65]]; - + //submit the event [eventClient submitEvents]; - + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; - + id deliveryClient = [insights valueForKey:@"deliveryClient"]; NSArray *batchedEvents = [deliveryClient batchedEvents]; //batchedEvents should be empty if all events has been sent successfully. XCTAssertEqual(0, [batchedEvents count], @"batchedEvents is not empty,events delivery may have failed!"); - + } - (void)test_createAndSubmitEventCustomClientContext{ - //=====Notice============================ // Custom ClientConfiguration muse be set before Init AWSMobileAnalytics // Modification of clientConfiguration has no effect after AWSMobileAnalytics has been initialized. - + //add custom attributes in clientContext - [AWSMobileAnalyticsClientConfiguration defaultClientConfiguration].attributes = @{@"legacy_id":@"1234567"}; + AWSMobileAnalyticsConfiguration *mobileAnalyticsConfiguration = [AWSMobileAnalyticsConfiguration new]; + mobileAnalyticsConfiguration.attributes = @{@"legacy_id":@"1234567"}; //overwrite app_title which will be originally read from value of @"CFBundleDisplayName" in app's plist. - [AWSMobileAnalyticsClientConfiguration defaultClientConfiguration].environment.appName = @"myappname"; - - - AWSMobileAnalytics* insights = [AWSMobileAnalytics defaultMobileAnalyticsWithAppNamespace:@"newuniqueid"]; + mobileAnalyticsConfiguration.environment.appName = @"myappname"; + + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:@"newuniqueid" + configuration:mobileAnalyticsConfiguration + completionBlock:nil]; XCTAssertNotNil([insights eventClient]); - - // Record when the user completes level 1 // Get the event client from Insights instance. id eventClient = insights.eventClient; - + // Create a level completion event. id level1Event = [eventClient createEventWithEventType:@"level1Complete"]; - + // add an attribute to know what weapon the user completed the level with [level1Event addAttribute:@"sword" forKey:@"weaponUsed"]; // add a metric to know how many coins the user collected in the level [level1Event addMetric:@105 forKey:@"coinsCollected"]; - + // add a metric to know how long it took the user to complete the level [level1Event addMetric:@300 forKey:@"levelDuration"]; - + // Record the level completion event. [eventClient recordEvent:level1Event]; - + //ValueForceSubmissionWaitTime is 60 sec. need to wait before forceSubmitEvents take effect. [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:65]]; - + //submit the event [eventClient submitEvents]; - + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; id deliveryClient = [insights valueForKey:@"deliveryClient"]; NSArray *batchedEvents = [deliveryClient batchedEvents]; //batchedEvents should be empty if all events has been sent successfully. XCTAssertEqual(0, [batchedEvents count], @"batchedEvents is not empty,events delivery may have failed!"); - + } -- (void)test_createAndSubmitEventCustomServiceConfiguration{ - +- (void)test_createAndSubmitEventCustomServiceConfiguration { AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithCredentialsFilename:@"credentials"]; AWSServiceConfiguration *customServiceConfig = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; - - - AWSEventRecorderService *ers = [[AWSEventRecorderService alloc] initWithConfiguration:customServiceConfig]; - - AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsWithEventRecorderService:ers appNamespace:@"someuniqueid2" completionBlock:nil]; - - + AWSMobileAnalyticsConfiguration *configuration = [AWSMobileAnalyticsConfiguration new]; + configuration.serviceConfiguration = customServiceConfig; + AWSMobileAnalytics* insights = [AWSMobileAnalytics mobileAnalyticsForAppId:@"someuniqueid2" + configuration:configuration + completionBlock:nil]; + // Record when the user completes level 1 // Get the event client from Insights instance. id eventClient = insights.eventClient; - + // Create a level completion event. id level1Event = [eventClient createEventWithEventType:@"level1Complete"]; - + // add an attribute to know what weapon the user completed the level with [level1Event addAttribute:@"sword" forKey:@"weaponUsed"]; // add a metric to know how many coins the user collected in the level [level1Event addMetric:@105 forKey:@"coinsCollected"]; - + // add a metric to know how long it took the user to complete the level [level1Event addMetric:@300 forKey:@"levelDuration"]; - + // Record the level completion event. [eventClient recordEvent:level1Event]; - + //ValueForceSubmissionWaitTime is 60 sec. need to wait before forceSubmitEvents take effect. [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:65]]; - + //submit the event [eventClient submitEvents]; - + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; id deliveryClient = [insights valueForKey:@"deliveryClient"]; NSArray *batchedEvents = [deliveryClient batchedEvents]; //batchedEvents should be empty if all events has been sent successfully. XCTAssertEqual(0, [batchedEvents count], @"batchedEvents is not empty,events delivery may have failed!"); - - } @end -#endif \ No newline at end of file +#endif diff --git a/AWSiOSSDKTests/AWSClockSkewTests.m b/AWSiOSSDKTests/AWSClockSkewTests.m index 466f9615b76..6a52af1eba9 100644 --- a/AWSiOSSDKTests/AWSClockSkewTests.m +++ b/AWSiOSSDKTests/AWSClockSkewTests.m @@ -30,6 +30,7 @@ #import "Kinesis.h" #import "AWSKinesis.h" #import "AWSTestUtility.h" +#import "AWSEventRecorderService.h" @import ObjectiveC.runtime; @@ -65,7 +66,7 @@ - (void)setUp { method_exchangeImplementations(_originalDateMethod, _mockDateMethod); //make sure current runTimeClockSkew is 0 - [NSDate az_setRuntimeClockSkew:0]; + [NSDate aws_setRuntimeClockSkew:0]; } @@ -78,7 +79,7 @@ - (void)tearDown // Revert the swizzle method_exchangeImplementations(_mockDateMethod, _originalDateMethod); //reset RunTimeClockSkew - [NSDate az_setRuntimeClockSkew:0]; + [NSDate aws_setRuntimeClockSkew:0]; } // Mock Method, replaces [NSDate date] @@ -92,9 +93,10 @@ -(void)setMockDate:(NSDate *)aMockDate { } // ERS Test +#if !AWS_TEST_BJS_INSTEAD -(void)testClockSkewERS { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSEventRecorderService *ers = [AWSEventRecorderService defaultEventRecorderService]; @@ -108,11 +110,11 @@ -(void)testClockSkewERS eventOne.attributes = @{}; eventOne.version = @"v2.0"; eventOne.eventType = @"_session.start"; - eventOne.timestamp = [[NSDate date] az_stringValue:AZDateISO8601DateFormat3]; + eventOne.timestamp = [[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3]; AWSEventRecorderServiceSession *serviceSession = [AWSEventRecorderServiceSession new]; serviceSession.id = @"SMZSP1G8-21c9ac01-20140604-171714026"; - serviceSession.startTimestamp = [[NSDate date] az_stringValue:AZDateISO8601DateFormat3]; + serviceSession.startTimestamp = [[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3]; eventOne.session = serviceSession; @@ -144,11 +146,11 @@ -(void)testClockSkewERS } - +#endif // S3 Test -(void)testClockSkewS3 { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSS3 *s3 = [AWSS3 defaultS3]; @@ -164,9 +166,10 @@ -(void)testClockSkewS3 } //SimpleDB Tests +#if !AWS_TEST_BJS_INSTEAD -(void)testClockSkewSimpleDB { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSSimpleDB *sdb = [AWSSimpleDB defaultSimpleDB]; @@ -186,11 +189,12 @@ -(void)testClockSkewSimpleDB return nil; }] waitUntilFinished]; } +#endif //DynamoDB Test -(void)testClockSkewDynamoDB { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSDynamoDB *dynamoDB = [AWSDynamoDB defaultDynamoDB]; @@ -214,7 +218,7 @@ -(void)testClockSkewDynamoDB //SQS Test -(void)testClockSkewSQS { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSSQS *sqs = [AWSSQS defaultSQS]; @@ -228,7 +232,7 @@ -(void)testClockSkewSQS if (task.result) { AWSSQSListQueuesResult *listQueuesResult = task.result; - AZLogDebug(@"[%@]", listQueuesResult); + AWSLogDebug(@"[%@]", listQueuesResult); XCTAssertNotNil(listQueuesResult.queueUrls); } @@ -240,7 +244,7 @@ -(void)testClockSkewSQS //SNS Test -(void)testClockSkewSNS { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSSNS *sns = [AWSSNS defaultSNS]; @@ -265,7 +269,7 @@ -(void)testClockSkewSNS //CloudWatch Test -(void)testClockSkewCW { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSCloudWatch *cloudWatch = [AWSCloudWatch defaultCloudWatch]; @@ -287,9 +291,10 @@ -(void)testClockSkewCW } //SES Test +#if !AWS_TEST_BJS_INSTEAD -(void)testClockSkewSES { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSSES *ses = [AWSSES defaultSES]; @@ -310,11 +315,12 @@ -(void)testClockSkewSES return nil; }] waitUntilFinished]; } +#endif //EC2 Test -(void)testClockSkewEC2 { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSEC2 *ec2 = [AWSEC2 defaultEC2]; @@ -339,7 +345,7 @@ -(void)testClockSkewEC2 //ELB Test -(void)testClockSkewELB { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSElasticLoadBalancing *elb = [AWSElasticLoadBalancing defaultElasticLoadBalancing]; XCTAssertNotNil(elb); @@ -363,7 +369,7 @@ -(void)testClockSkewELB //AutoScaling Test -(void)testClockSkewAS { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSAutoScaling *autoScaling = [AWSAutoScaling defaultAutoScaling]; @@ -387,7 +393,7 @@ -(void)testClockSkewAS //STS Test -(void)testClockSkewSTS { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSSTS *sts = (AWSSTS *)[[AWSServiceManager defaultServiceManager] serviceForKey:@"test-sts"]; @@ -415,9 +421,10 @@ -(void)testClockSkewSTS } //Kinesis Test +#if !AWS_TEST_BJS_INSTEAD -(void)testClockSkewKinesis { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSKinesis *kinesis = [AWSKinesis defaultKinesis]; @@ -438,18 +445,20 @@ -(void)testClockSkewKinesis return nil; }] waitUntilFinished]; } +#endif //Cognito Identity Service Test +#if !AWS_TEST_BJS_INSTEAD -(void)testClockSkewCognitoIdentityService { - XCTAssertFalse([NSDate az_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); + XCTAssertFalse([NSDate aws_getRuntimeClockSkew], @"current RunTimeClockSkew is not zero!"); [self setMockDate:[NSDate dateWithTimeIntervalSince1970:3600]]; AWSCognitoIdentityService *cib = [AWSCognitoIdentityService defaultCognitoIdentityService]; XCTAssertNotNil(cib); AWSCognitoIdentityServiceListIdentityPoolsInput *listPools = [AWSCognitoIdentityServiceListIdentityPoolsInput new]; - listPools.maxResults = [NSNumber numberWithInt:10]; + listPools.maxResults = @10; [[[cib listIdentityPools:listPools] continueWithBlock:^id(BFTask *task) { if (task.error) { XCTFail(@"Error: [%@]", task.error); @@ -463,6 +472,7 @@ -(void)testClockSkewCognitoIdentityService }] waitUntilFinished]; } +#endif //TODO: Add ClockSkew Test for AWSCognitoService diff --git a/AWSiOSSDKTests/AWSCognitoCredentialsProviderTests.m b/AWSiOSSDKTests/AWSCognitoCredentialsProviderTests.m index 33351c5b07b..17d2b6c2b5c 100644 --- a/AWSiOSSDKTests/AWSCognitoCredentialsProviderTests.m +++ b/AWSiOSSDKTests/AWSCognitoCredentialsProviderTests.m @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -#if AWS_TEST_COGNITO_CREDENTIALS_PROVIDER +#if AWS_TEST_COGNITO_CREDENTIALS_PROVIDER && !AWS_TEST_BJS_INSTEAD #import #import "AWSCore.h" @@ -163,13 +163,17 @@ - (void)testNotification { - (void)testProviderKeychain { AWSCognitoCredentialsProvider *provider1 = [AWSCognitoCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1 + identityId:nil accountId:AWSCognitoCredentialsProviderTestsAccountID identityPoolId:_identityPoolIdAuth unauthRoleArn:AWSCognitoCredentialsProviderTestsUnauthRoleArn - authRoleArn:AWSCognitoCredentialsProviderTestsAuthRoleArn]; + authRoleArn:AWSCognitoCredentialsProviderTestsAuthRoleArn + logins:nil]; + [provider1 clearKeychain]; + __block AWSCognitoCredentialsProvider *provider2 = nil; - [[[[provider1 getIdentityId] continueWithSuccessBlock:^id(BFTask *task) { + [[[[provider1 refresh] continueWithSuccessBlock:^id(BFTask *task) { XCTAssertNil(task.error); XCTAssertNotNil(provider1.identityId, @"Unable to get identityId"); @@ -182,9 +186,23 @@ - (void)testProviderKeychain { }] continueWithBlock:^id(BFTask *task) { XCTAssertNil(task.error); XCTAssertEqualObjects(provider1.identityId, provider2.identityId); + + XCTAssertNotNil(provider2.accessKey); + XCTAssertNotNil(provider2.secretKey); + XCTAssertNotNil(provider2.sessionKey); + XCTAssertNotNil(provider2.expiration); - return nil; + return [provider2 refresh]; }] waitUntilFinished]; + + provider2.logins = @{ + @(AWSCognitoLoginProviderKeyFacebook) : _facebookToken + }; + + XCTAssertNil(provider2.accessKey); + XCTAssertNil(provider2.secretKey); + XCTAssertNil(provider2.sessionKey); + XCTAssertNil(provider2.expiration); } - (void)testProviderFailure { @@ -291,8 +309,8 @@ - (void)identityIdDidChange:(NSNotification *)notification { NSString *oldId = dictionary[AWSCognitoNotificationNewId]; NSString *newId = dictionary[AWSCognitoNotificationPreviousId]; - AZLogDebug(@"OLD ID: %@", oldId); - AZLogDebug(@"NEW ID: %@", newId); + AWSLogDebug(@"OLD ID: %@", oldId); + AWSLogDebug(@"NEW ID: %@", newId); _identityChanged = YES; } diff --git a/AWSiOSSDKTests/AWSCognitoIdentityServiceTests.m b/AWSiOSSDKTests/AWSCognitoIdentityServiceTests.m index b05629d76bb..9dd934deecc 100644 --- a/AWSiOSSDKTests/AWSCognitoIdentityServiceTests.m +++ b/AWSiOSSDKTests/AWSCognitoIdentityServiceTests.m @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -#if AWS_TEST_COGNITO_IDENTITY_SERVICE +#if AWS_TEST_COGNITO_IDENTITY_SERVICE && !AWS_TEST_BJS_INSTEAD #import #import "CognitoIdentityService.h" diff --git a/AWSiOSSDKTests/AWSCoreTests.m b/AWSiOSSDKTests/AWSCoreTests.m index e126e9ebe54..ed34c024b32 100644 --- a/AWSiOSSDKTests/AWSCoreTests.m +++ b/AWSiOSSDKTests/AWSCoreTests.m @@ -17,6 +17,9 @@ #import #import "AWSCore.h" +#import "AWSSerialization.h" +#import "AWSURLRequestSerialization.h" +#import "XMLDictionary.h" @interface AWSCoreTests : XCTestCase @@ -26,7 +29,7 @@ @implementation AWSCoreTests - (void)setUp { [super setUp]; - + } - (void)tearDown { @@ -34,21 +37,70 @@ - (void)tearDown { [super tearDown]; } +-(void)testCaseInsentitiveDictionary { + NSDictionary *testDic = @{@"message": @"a value with lowercased key"}; + XCTAssertNotNil([testDic aws_objectForCaseInsensitiveKey:@"Message"]); + XCTAssertNotNil([testDic aws_objectForCaseInsensitiveKey:@"MeSSage"]); + XCTAssertNotNil([testDic aws_objectForCaseInsensitiveKey:@"messaGe"]); + + NSMutableDictionary *testMutableDic = [NSMutableDictionary new]; + [testMutableDic setObject:@"a value with uppercase key " forKey:@"Message"]; + + XCTAssertNotNil([testMutableDic aws_objectForCaseInsensitiveKey:@"message"]); + XCTAssertNotNil([testMutableDic aws_objectForCaseInsensitiveKey:@"meSsage"]); +} +- (void)testDateToString { + //660096000 is 12/02/1990 hour 0 min 0 sec 0 GMT + NSDate *testDateAWSDateDateStampFormat = [NSDate dateWithTimeIntervalSince1970:660096000]; + NSString *dateString = [testDateAWSDateDateStampFormat aws_stringValue:AWSDateShortDateFormat1]; + NSString *correctString = @"19901202"; + + XCTAssertEqualWithAccuracy([dateString doubleValue], [correctString doubleValue], 10); + + NSDate *testDateAWSDateAmzDateFormat = [NSDate dateWithTimeIntervalSince1970:660096000]; + NSString *dateStringAWSDateAmzDateFormat = [testDateAWSDateAmzDateFormat aws_stringValue:AWSDateISO8601DateFormat2]; + NSString *correctStringAWSDateAmzDateFormat = @"19901202T000000Z"; + + XCTAssertTrue([correctStringAWSDateAmzDateFormat isEqualToString:dateStringAWSDateAmzDateFormat], @"DateToString failed. Expecting: %@ , Actual: %@",correctStringAWSDateAmzDateFormat,dateStringAWSDateAmzDateFormat); +} + +- (void)testStringToDate { + NSString *testStringAWSDateDateStampFormat = @"19901202"; + NSDate *testDate = [NSDate aws_dateFromString:testStringAWSDateDateStampFormat format:AWSDateShortDateFormat1]; + double testTime = [testDate timeIntervalSince1970]; + double expectedTime = 660096000; + + XCTAssertEqualWithAccuracy(testTime, expectedTime, 10, "Failed to create a proper date from string usingAWSDateDateStampFormat"); + + NSString *testStringAWSDateAmzDateFormat = @"19901202T000000Z"; + NSDate *testDateAmz = [NSDate aws_dateFromString:testStringAWSDateAmzDateFormat format:AWSDateISO8601DateFormat2]; + double testTimeAmz = [testDateAmz timeIntervalSince1970]; + + XCTAssertEqualWithAccuracy(testTimeAmz, expectedTime, 10, "Failed to create a proper date from string usingAWSDateAmzDateFormat"); +} + +- (void)testUrlEncode { + NSString *inputOne = @"test %"; + NSString *inputTwo = [NSString stringWithFormat:@"test %%"]; + XCTAssertEqualObjects([inputOne aws_stringWithURLEncoding], @"test%20%25"); + XCTAssertEqualObjects([inputTwo aws_stringWithURLEncoding], @"test%20%25"); +} + - (void)testAWSJSONRequestSerializer { NSString *testURLString = @"http://aws.amazon.com"; NSURL *testURL = [NSURL URLWithString:testURLString]; NSMutableURLRequest *testRequest = [NSMutableURLRequest requestWithURL:testURL]; testRequest.HTTPMethod = @"POST"; - + NSMutableDictionary *testParams = [NSMutableDictionary new]; NSString *paramKey1 = @"Key1 oparameters"; NSString *paramKey2 = @"Key2 of parameters"; NSString *paramValue1 = @"Value of Key1"; NSString *paramValue2 = @"Value of Key2"; - + [testParams setObject:paramValue1 forKey:paramKey1]; [testParams setObject:paramValue2 forKey:paramKey2]; - + NSMutableDictionary *testHeaders = [NSMutableDictionary new]; NSString *contentLengthKey = @"Content-Length"; NSString *contentTypeKey = @"Content-Type"; @@ -56,29 +108,29 @@ - (void)testAWSJSONRequestSerializer { NSString *contentTypeValue = @"text/plain"; [testHeaders setObject:contentLengthValue forKey:contentLengthKey]; [testHeaders setObject:contentTypeValue forKey:contentTypeKey]; - + AWSJSONRequestSerializer *jsonSerializer = [AWSJSONRequestSerializer new]; - + [[[[jsonSerializer serializeRequest:testRequest headers:testHeaders parameters:testParams] continueWithSuccessBlock:^id(BFTask *task) { //Assert headers are properly set NSDictionary *serialziedHeaders = [testRequest allHTTPHeaderFields]; XCTAssertEqualObjects(testHeaders, serialziedHeaders, "JSONSerializer failed to properly attach headers"); - + //Assert body is properly in JSON NSData *jsonData = [testRequest HTTPBody]; - + NSError *error = nil; NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - + if (error){ XCTFail("Error while parsing JSON created with AWSJSONRequestSerializer %@", error); } XCTAssertEqualObjects(testParams, jsonDictionary, "Parameters could not be correctly parsed into JSON and re-interpreted"); - + return nil; }] continueWithBlock:^id(BFTask *task) { if (task.error) { @@ -88,6 +140,634 @@ - (void)testAWSJSONRequestSerializer { }] waitUntilFinished]; } +- (void)testXMLSerializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"rest-xml-input" ofType:@"json"]; + NSMutableArray *xmlTestPackages = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[xmlTestPackages count]; i++) { + + NSMutableDictionary *aTestPak = [xmlTestPackages objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockRequest + NSMutableURLRequest *mockRequest = [NSMutableURLRequest new]; + mockRequest.URL = [NSURL URLWithString:@""]; + + //create user input parameters + NSDictionary *testParameters = aTest[@"params"]; + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"given"]) { + [aTestPak[@"operations"] removeObjectForKey:@"given"]; + } + aTestPak[@"operations"][@"given"] = aTest[@"given"]; + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSXMLRequestSerializer *testXmlRequestSerializer = [AWSXMLRequestSerializer new]; + [testXmlRequestSerializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testXmlRequestSerializer setValue:@"given" forKey:@"actionName"]; + + + BFTask *resultTask = [testXmlRequestSerializer serializeRequest:mockRequest + headers:@{} + parameters:testParameters]; + if (resultTask.error) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,resultTask.error); + return; + } + + //---------- Validate Result ------------------------------- + + //validate result + NSDictionary *resultDic = aTest[@"serialized"]; + + //validate HTTP URL + XCTAssertEqualObjects(resultDic[@"uri"], [mockRequest.URL absoluteString], @"(TestPak %d TestCase %d) wrong HTTP URI, expect:%@, but got:%@",i,j,resultDic[@"uri"],[mockRequest.URL absoluteString]); + + //validate HTTP Method + if (resultDic[@"method"]) { + XCTAssertEqualObjects(resultDic[@"method"], mockRequest.HTTPMethod, @"(TestPak %d TestCase %d) wrong HTTP Method, expect:%@, but got:%@",i,j,resultDic[@"method"],mockRequest.HTTPMethod); + } + + //validate HTTP Body + NSString* resultBodyStr = [[NSString alloc] initWithData:mockRequest.HTTPBody encoding:NSUTF8StringEncoding]; + NSString* expectedBodyStr = resultDic[@"body"]; + + XMLDictionaryParser *xmlParser = [XMLDictionaryParser new]; + xmlParser.trimWhiteSpace = YES; + xmlParser.stripEmptyNodes = NO; + xmlParser.wrapRootNode = YES; //wrapRootNode for easy process + xmlParser.nodeNameMode = XMLDictionaryNodeNameModeNever; //do not need rootName anymore since rootNode is wrapped. + + NSDictionary *resultBodyDic = [xmlParser dictionaryWithString:resultBodyStr]; + NSDictionary *expectedBodyDic = [xmlParser dictionaryWithString:expectedBodyStr]; + if (!expectedBodyDic) { + XCTAssertEqualObjects(expectedBodyStr,resultBodyStr , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodyStr, resultBodyStr); + } else { + XCTAssertEqualObjects(expectedBodyDic,resultBodyDic , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodyDic, resultBodyDic); + } + + + //validate HTTP Headers + for (NSString *ekey in resultDic[@"headers"]) { + NSString *evalue = resultDic[@"headers"][ekey]; + + if ([[[mockRequest allHTTPHeaderFields] allKeys] containsObject:ekey] == NO) { + XCTFail(@"(TestPak %d TestCase %d) no %@ in the headers!",i,j,ekey); + } else { + XCTAssertEqualObjects(evalue, [[mockRequest allHTTPHeaderFields] objectForKey:ekey], @"(TestPak %d TestCase %d) wrong value in header. expect key pair %@:%@, but got: %@,%@",i,j,ekey,evalue,ekey,[[mockRequest allHTTPHeaderFields] objectForKey:ekey]); + } + } + + + } + + } + +} + +- (void)testXmlDeserializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"rest-xml-output" ofType:@"json"]; + NSMutableArray *jsonTestPackages = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[jsonTestPackages count]; i++) { + NSMutableDictionary *aTestPak = [jsonTestPackages objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockResponse + NSDictionary *responseHeaders = aTest[@"response"][@"headers"]; + NSInteger statusCode = [aTest[@"response"][@"status_code"] integerValue]; + NSHTTPURLResponse *mockResponse = [[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"/"] statusCode:statusCode HTTPVersion:@"HTTP/1.1" headerFields:responseHeaders]; + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"OperationName"]) { + [aTestPak[@"operations"] removeObjectForKey:@"OperationName"]; + } + aTestPak[@"operations"][@"OperationName"] = aTest[@"given"]; + + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSXMLResponseSerializer *testXmlResponseSerializer = [AWSXMLResponseSerializer new]; + [testXmlResponseSerializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testXmlResponseSerializer setValue:@"OperationName" forKey:@"actionName"]; + + + + NSString *responseBodyStr = aTest[@"response"][@"body"]; + NSData *responseBodyData = [responseBodyStr dataUsingEncoding:NSUTF8StringEncoding]; + NSError *parseError = nil; + id responseResult = [[testXmlResponseSerializer responseObjectForResponse:mockResponse originalRequest:nil currentRequest:nil data:responseBodyData error:&parseError] mutableCopy]; + if (parseError) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,parseError); + return; + } + + // ------------Validate Result------------------------------ + if ([responseResult isKindOfClass:[NSDictionary class]] && [responseResult objectForKey:@"Stream"] ) { + NSMutableDictionary *tempResult = [responseResult mutableCopy]; + [tempResult setObject:[[NSString alloc] initWithData:responseResult[@"Stream"] encoding:NSUTF8StringEncoding] forKey:@"Stream"]; + responseResult = tempResult; + } + //validate result + NSDictionary *expectedResult = aTest[@"result"]; + + [self replaceNSData2NSString:responseResult]; + + + XCTAssertEqualObjects(expectedResult,responseResult , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedResult, responseResult); + + } + + } +} + +- (void)testQueryStringSerializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"query-input" ofType:@"json"]; + NSMutableArray *queryTestPackages = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[queryTestPackages count]; i++) { + NSMutableDictionary *aTestPak = [queryTestPackages objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockRequest + NSMutableURLRequest *mockRequest = [NSMutableURLRequest new]; + mockRequest.URL = [NSURL URLWithString:@"/"]; + + //create user input parameters + NSDictionary *testParameters = aTest[@"params"]; + + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"OperationName"]) { + [aTestPak[@"operations"] removeObjectForKey:@"OperationName"]; + } + aTestPak[@"operations"][@"OperationName"] = aTest[@"given"]; + + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSQueryStringRequestSerializer *testQueryStringSerializer = [AWSQueryStringRequestSerializer new]; + [testQueryStringSerializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testQueryStringSerializer setValue:@"OperationName" forKey:@"actionName"]; + + + BFTask *resultTask = [testQueryStringSerializer serializeRequest:mockRequest + headers:@{} + parameters:testParameters]; + if (resultTask.error) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,resultTask.error); + return; + } + + // ------------Validate Result------------------------------ + + //validate result + NSDictionary *resultDic = aTest[@"serialized"]; + + //validate HTTP URL + XCTAssertEqualObjects(resultDic[@"uri"], [mockRequest.URL absoluteString], @"(TestPak %d TestCase %d) wrong HTTP URI, expect:%@, but got:%@",i,j,resultDic[@"uri"],[mockRequest.URL absoluteString]); + + //validate HTTP Body + NSString* resultBodyStr = [[NSString alloc] initWithData:mockRequest.HTTPBody encoding:NSUTF8StringEncoding]; + NSString* expectedBodyStr = resultDic[@"body"]; + + NSCountedSet *resultBodySet = [NSCountedSet setWithArray:[resultBodyStr componentsSeparatedByString:@"&"]]; + NSCountedSet *expectedBodySet = [NSCountedSet setWithArray:[expectedBodyStr componentsSeparatedByString:@"&"]]; + + if ([expectedBodySet count] == 0) { + XCTAssertEqualObjects(expectedBodyStr,resultBodyStr , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodyStr, resultBodyStr); + } else { + XCTAssertEqualObjects(expectedBodySet,resultBodySet , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodySet, resultBodySet); + } + } + + } +} + +- (void)testQueryStringDeserializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"query-output" ofType:@"json"]; + NSMutableArray *queryTestPackages = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[queryTestPackages count]; i++) { + NSMutableDictionary *aTestPak = [queryTestPackages objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockResponse + NSDictionary *responseHeaders = aTest[@"response"][@"headers"]; + NSInteger statusCode = [aTest[@"response"][@"status_code"] integerValue]; + NSHTTPURLResponse *mockResponse = [[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"/"] statusCode:statusCode HTTPVersion:@"HTTP/1.1" headerFields:responseHeaders]; + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"OperationName"]) { + [aTestPak[@"operations"] removeObjectForKey:@"OperationName"]; + } + aTestPak[@"operations"][@"OperationName"] = aTest[@"given"]; + + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSXMLResponseSerializer *testXmlResponseSerializer = [AWSXMLResponseSerializer new]; + [testXmlResponseSerializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testXmlResponseSerializer setValue:@"OperationName" forKey:@"actionName"]; + + + + NSString *responseBodyStr = aTest[@"response"][@"body"]; + NSData *responseBodyData = [responseBodyStr dataUsingEncoding:NSUTF8StringEncoding]; + NSError *parseError = nil; + id responseResult = [[testXmlResponseSerializer responseObjectForResponse:mockResponse originalRequest:nil currentRequest:nil data:responseBodyData error:&parseError] mutableCopy]; + if (parseError) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,parseError); + return; + } + + // ------------Validate Result------------------------------ + if ([responseResult isKindOfClass:[NSDictionary class]] && [responseResult objectForKey:@"Stream"] ) { + NSMutableDictionary *tempResult = [responseResult mutableCopy]; + [tempResult setObject:[[NSString alloc] initWithData:responseResult[@"Stream"] encoding:NSUTF8StringEncoding] forKey:@"Stream"]; + responseResult = tempResult; + } + //validate result + NSDictionary *expectedResult = aTest[@"result"]; + [self replaceNSData2NSString:responseResult]; + + XCTAssertEqualObjects(expectedResult,responseResult , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedResult, responseResult); + + } + + } +} + +- (void)testJsonSerializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"json-input" ofType:@"json"]; + NSMutableArray *jsonTestPackages = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[jsonTestPackages count]; i++) { + NSMutableDictionary *aTestPak = [jsonTestPackages objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockRequest + NSMutableURLRequest *mockRequest = [NSMutableURLRequest new]; + mockRequest.URL = [NSURL URLWithString:@"/"]; + [mockRequest setHTTPMethod:aTest[@"given"][@"http"][@"method"]]; + + //create user input parameters + NSDictionary *testParameters = aTest[@"params"]; + + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"OperationName"]) { + [aTestPak[@"operations"] removeObjectForKey:@"OperationName"]; + } + aTestPak[@"operations"][@"OperationName"] = aTest[@"given"]; + + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSJSONRequestSerializer *testJsonSerializer = [AWSJSONRequestSerializer new]; + [testJsonSerializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testJsonSerializer setValue:@"OperationName" forKey:@"actionName"]; + + NSString *amzTarget = [NSString stringWithFormat:@"%@.%@",aTestPak[@"metadata"][@"targetPrefix"],@"OperationName"]; + NSString *contentType = [NSString stringWithFormat:@"application/x-amz-json-%@",[aTestPak[@"metadata"][@"jsonVersion"] stringValue]]; + NSDictionary *headers = @{@"X-Amz-Target": amzTarget, + @"Content-Type": contentType}; + + BFTask *resultTask = [testJsonSerializer serializeRequest:mockRequest + headers:headers + parameters:testParameters]; + if (resultTask.error) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,resultTask.error); + return; + } + + // ------------Validate Result------------------------------ + + //validate result + NSDictionary *resultDic = aTest[@"serialized"]; + + //validate HTTP URL + XCTAssertEqualObjects(resultDic[@"uri"], [mockRequest.URL absoluteString], @"(TestPak %d TestCase %d) wrong HTTP URI, expect:%@, but got:%@",i,j,resultDic[@"uri"],[mockRequest.URL absoluteString]); + + //validate HTTP Body + NSString* resultBodyStr = [[NSString alloc] initWithData:mockRequest.HTTPBody encoding:NSUTF8StringEncoding]; + NSString* expectedBodyStr = resultDic[@"body"]; + + NSDictionary *resultBodyDic = [NSJSONSerialization JSONObjectWithData:mockRequest.HTTPBody options:0 error:nil]; + NSDictionary *expectedBodyDic = [NSJSONSerialization JSONObjectWithData:[expectedBodyStr dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; + + if ([expectedBodyDic count] == 0) { + XCTAssertEqualObjects(expectedBodyStr,resultBodyStr , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodyStr, resultBodyStr); + } else { + XCTAssertEqualObjects(expectedBodyDic,resultBodyDic , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodyDic, resultBodyDic); + } + + //validate HTTP Headers + for (NSString *ekey in resultDic[@"headers"]) { + NSString *evalue = resultDic[@"headers"][ekey]; + + if ([[[mockRequest allHTTPHeaderFields] allKeys] containsObject:ekey] == NO) { + XCTFail(@"(TestPak %d TestCase %d) no %@ in the headers!",i,j,ekey); + } else { + XCTAssertEqualObjects(evalue, [[mockRequest allHTTPHeaderFields] objectForKey:ekey], @"(TestPak %d TestCase %d) wrong value in header. expect key pair %@:%@, but got: %@:%@",i,j,ekey,evalue,ekey,[[mockRequest allHTTPHeaderFields] objectForKey:ekey]); + } + } + } + + } +} + + + +- (void)testJsonDeserializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"json-output" ofType:@"json"]; + NSMutableArray *jsonTestPackages = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[jsonTestPackages count]; i++) { + NSMutableDictionary *aTestPak = [jsonTestPackages objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockResponse + NSDictionary *responseHeaders = aTest[@"response"][@"headers"]; + NSInteger statusCode = [aTest[@"response"][@"status_code"] integerValue]; + NSHTTPURLResponse *mockResponse = [[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"/"] statusCode:statusCode HTTPVersion:@"HTTP/1.1" headerFields:responseHeaders]; + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"OperationName"]) { + [aTestPak[@"operations"] removeObjectForKey:@"OperationName"]; + } + aTestPak[@"operations"][@"OperationName"] = aTest[@"given"]; + + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSJSONResponseSerializer *testJsonResponseSerializer = [AWSJSONResponseSerializer new]; + [testJsonResponseSerializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testJsonResponseSerializer setValue:@"OperationName" forKey:@"actionName"]; + testJsonResponseSerializer.outputClass = nil; + + + NSString *responseBodyStr = aTest[@"response"][@"body"]; + NSData *responseBodyData = [responseBodyStr dataUsingEncoding:NSUTF8StringEncoding]; + NSError *parseError = nil; + id responseResult = [[testJsonResponseSerializer responseObjectForResponse:mockResponse originalRequest:nil currentRequest:nil data:responseBodyData error:&parseError] mutableCopy]; + if (parseError) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,parseError); + return; + } + + // ------------Validate Result------------------------------ + + //validate result + NSDictionary *expectedResult = aTest[@"result"]; + [self replaceNSData2NSString:responseResult]; + + XCTAssertEqualObjects(expectedResult,responseResult , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedResult, responseResult); + + } + + } +} + +- (void)testEC2Serializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"ec2-input" ofType:@"json"]; + NSMutableArray *ec2TestPackage = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[ec2TestPackage count]; i++) { + NSMutableDictionary *aTestPak = [ec2TestPackage objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockRequest + NSMutableURLRequest *mockRequest = [NSMutableURLRequest new]; + mockRequest.URL = [NSURL URLWithString:@"/"]; + + //create user input parameters + NSDictionary *testParameters = aTest[@"params"]; + + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"OperationName"]) { + [aTestPak[@"operations"] removeObjectForKey:@"OperationName"]; + } + aTestPak[@"operations"][@"OperationName"] = aTest[@"given"]; + + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSEC2RequestSerializer *testEC2Serializer = [AWSEC2RequestSerializer new]; + [testEC2Serializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testEC2Serializer setValue:@"OperationName" forKey:@"actionName"]; + + + BFTask *resultTask = [testEC2Serializer serializeRequest:mockRequest + headers:@{} + parameters:testParameters]; + if (resultTask.error) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,resultTask.error); + return; + } + + // ------------Validate Result------------------------------ + + //validate result + NSDictionary *resultDic = aTest[@"serialized"]; + + //validate HTTP URL + XCTAssertEqualObjects(resultDic[@"uri"], [mockRequest.URL absoluteString], @"(TestPak %d TestCase %d) wrong HTTP URI, expect:%@, but got:%@",i,j,resultDic[@"uri"],[mockRequest.URL absoluteString]); + + //validate HTTP Body + NSString* resultBodyStr = [[NSString alloc] initWithData:mockRequest.HTTPBody encoding:NSUTF8StringEncoding]; + NSString* expectedBodyStr = resultDic[@"body"]; + + NSCountedSet *resultBodySet = [NSCountedSet setWithArray:[resultBodyStr componentsSeparatedByString:@"&"]]; + NSCountedSet *expectedBodySet = [NSCountedSet setWithArray:[expectedBodyStr componentsSeparatedByString:@"&"]]; + + if ([expectedBodySet count] == 0) { + XCTAssertEqualObjects(expectedBodyStr,resultBodyStr , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodyStr, resultBodyStr); + } else { + XCTAssertEqualObjects(expectedBodySet,resultBodySet , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedBodySet, resultBodySet); + } + } + + } +} + +- (void)testEC2Deserializer { + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"ec2-output" ofType:@"json"]; + NSMutableArray *ec2TestPackge = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + + for (int i=0; i<[ec2TestPackge count]; i++) { + NSMutableDictionary *aTestPak = [ec2TestPackge objectAtIndex:i]; + NSArray *testCases = [aTestPak objectForKey:@"cases"]; + for(int j=0; j<[testCases count]; j++) { + NSDictionary *aTest = [testCases objectAtIndex:j]; + + //create mockResponse + NSDictionary *responseHeaders = aTest[@"response"][@"headers"]; + NSInteger statusCode = [aTest[@"response"][@"status_code"] integerValue]; + NSHTTPURLResponse *mockResponse = [[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"/"] statusCode:statusCode HTTPVersion:@"HTTP/1.1" headerFields:responseHeaders]; + + //construct serviceDefinition dictionary + if (aTestPak[@"operations"] == nil) { + aTestPak[@"operations"] = [NSMutableDictionary new]; + } + if (aTestPak[@"operations"][@"OperationName"]) { + [aTestPak[@"operations"] removeObjectForKey:@"OperationName"]; + } + aTestPak[@"operations"][@"OperationName"] = aTest[@"given"]; + + //create mock ServiceDefinitionJSON + NSDictionary *mockServiceDefinitionJSON = aTestPak; + + + // ------------ Perform Serialization --------------------- + // -------------------------------------------------------- + + AWSXMLResponseSerializer *testXmlResponseSerializer = [AWSXMLResponseSerializer new]; + [testXmlResponseSerializer setValue:mockServiceDefinitionJSON forKey:@"serviceDefinitionJSON"]; + [testXmlResponseSerializer setValue:@"OperationName" forKey:@"actionName"]; + + + + NSString *responseBodyStr = aTest[@"response"][@"body"]; + NSData *responseBodyData = [responseBodyStr dataUsingEncoding:NSUTF8StringEncoding]; + NSError *parseError = nil; + id responseResult = [[testXmlResponseSerializer responseObjectForResponse:mockResponse originalRequest:nil currentRequest:nil data:responseBodyData error:&parseError] mutableCopy]; + if (parseError) { + XCTFail(@"(TestPak %d TestCase %d) Serialization Error:%@",i,j,parseError); + return; + } + + // ------------Validate Result------------------------------ + if ([responseResult isKindOfClass:[NSDictionary class]] && [responseResult objectForKey:@"Stream"] ) { + NSMutableDictionary *tempResult = [responseResult mutableCopy]; + [tempResult setObject:[[NSString alloc] initWithData:responseResult[@"Stream"] encoding:NSUTF8StringEncoding] forKey:@"Stream"]; + responseResult = tempResult; + } + //validate result + NSDictionary *expectedResult = aTest[@"result"]; + [self replaceNSData2NSString:responseResult]; + + XCTAssertEqualObjects(expectedResult,responseResult , @"(TestPak %d TestCase %d) wrong HTTP Body, expect:\n%@, but got:\n%@",i,j,expectedResult, responseResult); + + } + + } +} + + +- (void) replaceNSData2NSString:(id)jsonObject +{ + if ([jsonObject isKindOfClass:[NSArray class]]) { + + for (int i = 0 ; i< [jsonObject count] ; i++ ) { + id object = jsonObject[i]; + + if ([object isKindOfClass:[NSArray class]] || [object isKindOfClass:[NSDictionary class]]) { + [self replaceNSData2NSString:object]; + } + + if ([object isKindOfClass:[NSData class]]) { + [jsonObject replaceObjectAtIndex:i withObject:[[NSString alloc] initWithData:object encoding:NSUTF8StringEncoding]]; + } + } + } + + if ([jsonObject isKindOfClass:[NSDictionary class]]) { + for (NSString *key in [jsonObject allKeys]) { + if ( [jsonObject[key] isKindOfClass:[NSDictionary class]] || [jsonObject[key] isKindOfClass:[NSArray class]]) { + [self replaceNSData2NSString:jsonObject[key]]; + } + + if ([jsonObject[key] isKindOfClass:[NSData class]]) { + jsonObject[key] = [[NSString alloc] initWithData:jsonObject[key] encoding:NSUTF8StringEncoding]; + } + } + } + + +} + @end #endif diff --git a/AWSiOSSDKTests/AWSDynamoDBTests.m b/AWSiOSSDKTests/AWSDynamoDBTests.m index 85f08313cd6..a8273c00bb9 100644 --- a/AWSiOSSDKTests/AWSDynamoDBTests.m +++ b/AWSiOSSDKTests/AWSDynamoDBTests.m @@ -243,11 +243,35 @@ - (void)testPutItem { putItemInput.tableName = table1Name; AWSDynamoDBAttributeValue *hashValue = [AWSDynamoDBAttributeValue new]; hashValue.S = @"testPutItem"; - AWSDynamoDBAttributeValue *otherValue = [AWSDynamoDBAttributeValue new]; - otherValue.S = @"otherValue"; + AWSDynamoDBAttributeValue *stringValue = [AWSDynamoDBAttributeValue new]; + stringValue.S = @"stringValue"; + AWSDynamoDBAttributeValue *stringSetValue = [AWSDynamoDBAttributeValue new]; + stringSetValue.SS = @[@"string1",@"string2",@"string3"]; + + AWSDynamoDBAttributeValue *numberValue = [AWSDynamoDBAttributeValue new]; + numberValue.N = @"12345"; + + AWSDynamoDBAttributeValue *numberSetValue = [AWSDynamoDBAttributeValue new]; + numberSetValue.NS = @[@"1",@"2",@"3",@"4",@"5"]; + + AWSDynamoDBAttributeValue *binaryValue = [AWSDynamoDBAttributeValue new]; + binaryValue.B = [@"base64string" dataUsingEncoding:NSUTF8StringEncoding]; + + AWSDynamoDBAttributeValue *binarySetValue = [AWSDynamoDBAttributeValue new]; + binarySetValue.BS = @[ + [@"Base64!@#$% 1" dataUsingEncoding:NSUTF8StringEncoding], + [@"base64string" dataUsingEncoding:NSUTF8StringEncoding], + [@"Base64!@#$% 3" dataUsingEncoding:NSUTF8StringEncoding] + ]; + putItemInput.item = @{ @"hashKey" : hashValue, - @"otherKey" : otherValue + @"stringKey" : stringValue, + @"stringSetKey" : stringSetValue, + @"numberKey" : numberValue, + @"numberSetKey" : numberSetValue, + @"binaryKey" : binaryValue, + @"binarySetKey" : binarySetValue, }; putItemInput.returnValues = AWSDynamoDBReturnValueAllOld; @@ -257,7 +281,7 @@ - (void)testPutItem { XCTFail(@"The request failed. error: [%@]", task.error); } else { AWSDynamoDBPutItemOutput *putItemOutput = task.result; - AZLogDebug(@"Result of putItemOutput is:%@",[putItemOutput description]); + AWSLogDebug(@"Result of putItemOutput is:%@",[putItemOutput description]); //XCTAssertNotNil(putItemOutput, @"putItemOutput should NOT be nil!"); } @@ -268,19 +292,45 @@ - (void)testPutItem { - (void) testGetItem { AWSDynamoDB *dynamoDB = [AWSDynamoDB defaultDynamoDB]; - NSString *myKey = @"testGetItem"; - NSString *myValue = @"otherValue"; + NSString *myKey = @"testPutItem"; + AWSDynamoDBPutItemInput *putItemInput = [AWSDynamoDBPutItemInput new]; putItemInput.tableName = table1Name; + AWSDynamoDBAttributeValue *hashValue = [AWSDynamoDBAttributeValue new]; hashValue.S = myKey; - AWSDynamoDBAttributeValue *otherValue = [AWSDynamoDBAttributeValue new]; - otherValue.S = myValue; + AWSDynamoDBAttributeValue *stringValue = [AWSDynamoDBAttributeValue new]; + stringValue.S = @"stringValue"; + AWSDynamoDBAttributeValue *stringSetValue = [AWSDynamoDBAttributeValue new]; + stringSetValue.SS = @[@"string1",@"string2",@"string3"]; + + AWSDynamoDBAttributeValue *numberValue = [AWSDynamoDBAttributeValue new]; + numberValue.N = @"12345"; + + AWSDynamoDBAttributeValue *numberSetValue = [AWSDynamoDBAttributeValue new]; + numberSetValue.NS = @[@"1",@"2",@"3",@"4",@"5"]; + + AWSDynamoDBAttributeValue *binaryValue = [AWSDynamoDBAttributeValue new]; + binaryValue.B = [@"base64string" dataUsingEncoding:NSUTF8StringEncoding]; + + AWSDynamoDBAttributeValue *binarySetValue = [AWSDynamoDBAttributeValue new]; + binarySetValue.BS = @[ + [@"Base64!@#$% 1" dataUsingEncoding:NSUTF8StringEncoding], + [@"base64string" dataUsingEncoding:NSUTF8StringEncoding], + [@"Base64!@#$% 3" dataUsingEncoding:NSUTF8StringEncoding] + ]; + putItemInput.item = @{ @"hashKey" : hashValue, - @"otherKey" : otherValue + @"stringKey" : stringValue, + @"stringSetKey" : stringSetValue, + @"numberKey" : numberValue, + @"numberSetKey" : numberSetValue, + @"binaryKey" : binaryValue, + @"binarySetKey" : binarySetValue, }; + putItemInput.returnValues = AWSDynamoDBReturnValueAllOld; [[[[dynamoDB putItem:putItemInput @@ -306,7 +356,15 @@ - (void) testGetItem { AWSDynamoDBGetItemOutput *getItemOutput = task.result; NSDictionary *items = getItemOutput.item; XCTAssertEqualObjects(hashValue, [items objectForKey:@"hashKey"] ); - XCTAssertEqualObjects(otherValue,[items objectForKey:@"otherKey"] ); + XCTAssertEqualObjects(stringValue,[items objectForKey:@"stringKey"] ); + XCTAssertEqualObjects(stringSetValue,[items objectForKey:@"stringSetKey"] ); + XCTAssertEqualObjects(numberValue,[items objectForKey:@"numberKey"] ); + AWSDynamoDBAttributeValue *responseNumberSetValue = [items objectForKey:@"numberSetKey"]; + XCTAssertEqualObjects([NSSet setWithArray:numberSetValue.NS],[NSSet setWithArray:responseNumberSetValue.NS] ); + XCTAssertEqualObjects(binaryValue,[items objectForKey:@"binaryKey"] ); + AWSDynamoDBAttributeValue *responseBinarySetValue = [items objectForKey:@"binarySetKey"]; + XCTAssertEqualObjects([NSSet setWithArray:binarySetValue.BS],[NSSet setWithArray:responseBinarySetValue.BS] ); + } return nil; diff --git a/AWSiOSSDKTests/AWSEC2Tests.m b/AWSiOSSDKTests/AWSEC2Tests.m index 4d2bfb33044..3d5eeb64936 100644 --- a/AWSiOSSDKTests/AWSEC2Tests.m +++ b/AWSiOSSDKTests/AWSEC2Tests.m @@ -63,10 +63,10 @@ - (void)testAttachVolumeFailed { AWSEC2 *ec2 = [AWSEC2 defaultEC2]; AWSEC2AttachVolumeRequest *volumeRequest = [AWSEC2AttachVolumeRequest new]; - volumeRequest.volumeId = @""; //VolumeId is empty + volumeRequest.volumeId = @"invalidVolumeId"; //VolumeId is empty [[[ec2 attachVolume:volumeRequest] continueWithBlock:^id(BFTask *task) { - XCTAssertNotNil(task.error, @"expected MissingParameter error but got nil"); + XCTAssertNotNil(task.error, @"expected InvalidParameterValue error but got nil"); return nil; }] waitUntilFinished]; } diff --git a/AWSiOSSDKTests/AWSERSTests.m b/AWSiOSSDKTests/AWSEventRecorderServiceTests.m similarity index 87% rename from AWSiOSSDKTests/AWSERSTests.m rename to AWSiOSSDKTests/AWSEventRecorderServiceTests.m index 5c89d1a161b..fa3d67118c5 100644 --- a/AWSiOSSDKTests/AWSERSTests.m +++ b/AWSiOSSDKTests/AWSEventRecorderServiceTests.m @@ -13,18 +13,18 @@ * permissions and limitations under the License. */ -#if AWS_TEST_ERS - +#if AWS_TEST_EVENT_RECORDER_SERVICE && !AWS_TEST_BJS_INSTEAD #import #import "AWSCore.h" #import "AWSTestUtility.h" +#import "AWSEventRecorderService.h" -@interface AWSERSTests : XCTestCase +@interface AWSEventRecorderServiceTests : XCTestCase @end -@implementation AWSERSTests +@implementation AWSEventRecorderServiceTests - (void)setUp { @@ -37,8 +37,7 @@ - (void)tearDown [super tearDown]; } -- (void)testPutEvents -{ +- (void)testPutEvents { AWSEventRecorderService *ers = [AWSEventRecorderService defaultEventRecorderService]; AWSEventRecorderServicePutEventsInput *putEventInput = [AWSEventRecorderServicePutEventsInput new]; @@ -49,11 +48,11 @@ - (void)testPutEvents eventOne.attributes = @{}; eventOne.version = @"v2.0"; eventOne.eventType = @"_session.start"; - eventOne.timestamp = [[NSDate date] az_stringValue:AZDateISO8601DateFormat3]; + eventOne.timestamp = [[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3]; AWSEventRecorderServiceSession *serviceSession = [AWSEventRecorderServiceSession new]; serviceSession.id = @"SMZSP1G8-21c9ac01-20140604-171714026"; - serviceSession.startTimestamp = [[NSDate date] az_stringValue:AZDateISO8601DateFormat3]; + serviceSession.startTimestamp = [[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3]; eventOne.session = serviceSession; diff --git a/AWSiOSSDKTests/AWSKinesisRecorderTests.m b/AWSiOSSDKTests/AWSKinesisRecorderTests.m index 8b7c011d521..a77b218cfc0 100644 --- a/AWSiOSSDKTests/AWSKinesisRecorderTests.m +++ b/AWSiOSSDKTests/AWSKinesisRecorderTests.m @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -#if AWS_TEST_KINESIS_RECORDER +#if AWS_TEST_KINESIS_RECORDER && !AWS_TEST_BJS_INSTEAD #import #import "Kinesis.h" @@ -105,7 +105,6 @@ - (void)testAll { [[[[[[[BFTask taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(BFTask *task) { return [kinesisRecorder submitAllRecords]; }] continueWithSuccessBlock:^id(BFTask *task) { - sleep(10); AWSKinesisDescribeStreamInput *describeStreamInput = [AWSKinesisDescribeStreamInput new]; describeStreamInput.streamName = testStreamName; return [kinesis describeStream:describeStreamInput]; diff --git a/AWSiOSSDKTests/AWSKinesisTests.m b/AWSiOSSDKTests/AWSKinesisTests.m index d65ca0b8b38..c6ee85a75e0 100644 --- a/AWSiOSSDKTests/AWSKinesisTests.m +++ b/AWSiOSSDKTests/AWSKinesisTests.m @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -#if AWS_TEST_KINESIS +#if AWS_TEST_KINESIS && !AWS_TEST_BJS_INSTEAD #import #import "Kinesis.h" @@ -113,6 +113,7 @@ - (void)testAll { AWSKinesis *kinesis = [AWSKinesis defaultKinesis]; NSMutableArray *tasks = [NSMutableArray new]; + NSMutableArray *returnedRecords = [NSMutableArray new]; for (int32_t i = 0; i < 100; i++) { AWSKinesisPutRecordInput *putRecordInput = [AWSKinesisPutRecordInput new]; @@ -142,21 +143,19 @@ - (void)testAll { return [kinesis getShardIterator:getShardIteratorInput]; }] continueWithSuccessBlock:^id(BFTask *task) { AWSKinesisGetShardIteratorOutput *getShardIteratorOutput = task.result; - - AWSKinesisGetRecordsInput *getRecordsInput = [AWSKinesisGetRecordsInput new]; - getRecordsInput.shardIterator = getShardIteratorOutput.shardIterator; - return [kinesis getRecords:getRecordsInput]; + return [self getRecords:returnedRecords + shardIterator:getShardIteratorOutput.shardIterator + counter:0]; }] continueWithBlock:^id(BFTask *task) { if (task.error) { XCTFail(@"Error: [%@]", task.error); } else { - AWSKinesisGetRecordsOutput *getRecordsOutput = task.result; int32_t i = 0; - for (AWSKinesisRecord *record in getRecordsOutput.records) { + for (AWSKinesisRecord *record in returnedRecords) { XCTAssertTrue([[[NSString alloc] initWithData:record.data encoding:NSUTF8StringEncoding] hasPrefix:@"TestString-"]); i++; } - XCTAssertTrue(i > 90); + XCTAssertTrue(i == 100, @"Record count: %d", i); } return nil; @@ -173,9 +172,26 @@ - (void)testDescribeStreamFailed { XCTAssertNotNil(task.error, @"expected error but got nil"); XCTAssertEqual(AWSKinesisErrorResourceNotFound, task.error.code, @"expected AWSKinesisErrorResourceNotFound(6) but got %ld",(long)task.error.code); return nil; - + }] waitUntilFinished]; - + +} + +- (BFTask *)getRecords:(NSMutableArray *)returnedRecords shardIterator:(NSString *)shardIterator counter:(int32_t)counter { + AWSKinesis *kinesis = [AWSKinesis defaultKinesis]; + AWSKinesisGetRecordsInput *getRecordsInput = [AWSKinesisGetRecordsInput new]; + getRecordsInput.shardIterator = shardIterator; + return [[kinesis getRecords:getRecordsInput] continueWithSuccessBlock:^id(BFTask *task) { + AWSKinesisGetRecordsOutput *getRecordsOutput = task.result; + [returnedRecords addObjectsFromArray:getRecordsOutput.records]; + + if (counter < 10 || [getRecordsOutput.records count] > 0) { + return [self getRecords:returnedRecords + shardIterator:getRecordsOutput.nextShardIterator + counter:counter + 1]; + } + return nil; + }]; } @end diff --git a/AWSiOSSDKTests/AWSS3Tests.m b/AWSiOSSDKTests/AWSS3Tests.m index fa57cf5a5b6..64f6dcd9a62 100644 --- a/AWSiOSSDKTests/AWSS3Tests.m +++ b/AWSiOSSDKTests/AWSS3Tests.m @@ -62,9 +62,11 @@ + (BOOL)createBucketWithName:(NSString *)bucketName { AWSS3CreateBucketRequest *createBucketReq = [AWSS3CreateBucketRequest new]; createBucketReq.bucket = bucketName; -// AWSS3CreateBucketConfiguration *createBucketConfiguration = [AWSS3CreateBucketConfiguration new]; -// createBucketConfiguration.locationConstraint = AWSS3BucketLocationConstraintUSWest2; -// createBucketReq.createBucketConfiguration = createBucketConfiguration; +#if AWS_TEST_BJS_INSTEAD + AWSS3CreateBucketConfiguration *createBucketConfiguration = [AWSS3CreateBucketConfiguration new]; + createBucketConfiguration.locationConstraint = AWSS3BucketLocationConstraintCNNorth1; + createBucketReq.createBucketConfiguration = createBucketConfiguration; +#endif __block BOOL success = NO; [[[s3 createBucket:createBucketReq] continueWithBlock:^id(BFTask *task) { @@ -116,7 +118,7 @@ - (void)testListBucket { XCTAssertTrue([task.result isKindOfClass:[AWSS3ListBucketsOutput class]],@"The response object is not a class of [%@]", NSStringFromClass([AWSS3ListBucketsOutput class])); AWSS3ListBucketsOutput *listBucketOutput = task.result; - AZLogDebug(@" testListBucket ========= responseObject is: ================ %@", [listBucketOutput description]); + AWSLogDebug(@" testListBucket ========= responseObject is: ================ %@", [listBucketOutput description]); return nil; }] waitUntilFinished]; } @@ -131,6 +133,12 @@ - (void)testCreateDeleteBucket { createBucketReq.ACL = AWSS3BucketCannedACLAuthenticatedRead; createBucketReq.bucket = bucketNameTest2; +#if AWS_TEST_BJS_INSTEAD + AWSS3CreateBucketConfiguration *createBucketConfiguration = [AWSS3CreateBucketConfiguration new]; + createBucketConfiguration.locationConstraint = AWSS3BucketLocationConstraintCNNorth1; + createBucketReq.createBucketConfiguration = createBucketConfiguration; +#endif + [[[[[[s3 createBucket:createBucketReq] continueWithBlock:^id(BFTask *task) { XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); sleep(2); @@ -188,9 +196,14 @@ - (void)testPutBucketWithGrants { AWSS3PutBucketAclRequest *putBucketAclReq = [AWSS3PutBucketAclRequest new]; putBucketAclReq.bucket = grantBucketName; +#if AWS_TEST_BJS_INSTEAD + putBucketAclReq.ACL = AWSS3BucketCannedACLPrivate; +#else putBucketAclReq.accessControlPolicy = accessControlPolicy; - - +#endif + + + [[[s3 putBucketAcl:putBucketAclReq] continueWithBlock:^id(BFTask *task) { XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); return nil; @@ -296,7 +309,7 @@ - (void)testParamsURLEncoding { } -- (void)testPutGetAndDeleteObject { +- (void)testPutHeadGetAndDeleteObject { NSString *testObjectStr = @"a test object string."; NSString *keyName = @"ios-test-put-get-and-delete-obj"; NSData *testObjectData = [testObjectStr dataUsingEncoding:NSUTF8StringEncoding]; @@ -312,38 +325,44 @@ - (void)testPutGetAndDeleteObject { putObjectRequest.contentType = @"video/mpeg"; - [[[s3 putObject:putObjectRequest] continueWithBlock:^id(BFTask *task) { - XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); - XCTAssertTrue([task.result isKindOfClass:[AWSS3PutObjectOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3PutObjectOutput class]),[task.result description]); + [[[[[[[s3 putObject:putObjectRequest] continueWithSuccessBlock:^id(BFTask *task) { + XCTAssertTrue([task.result isKindOfClass:[AWSS3PutObjectOutput class]], @"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3PutObjectOutput class]), [task.result description]); AWSS3PutObjectOutput *putObjectOutput = task.result; XCTAssertNotNil(putObjectOutput.ETag); XCTAssertEqual(putObjectOutput.serverSideEncryption, AWSS3ServerSideEncryptionUnknown); - return nil; - }] waitUntilFinished]; + AWSS3HeadObjectRequest *headObjectRequest = [AWSS3HeadObjectRequest new]; + headObjectRequest.bucket = testBucketNameGeneral; + headObjectRequest.key = keyName; - AWSS3GetObjectRequest *getObjectRequest = [AWSS3GetObjectRequest new]; - getObjectRequest.bucket = testBucketNameGeneral; - getObjectRequest.key = keyName; + return [s3 headObject:headObjectRequest]; + }] continueWithSuccessBlock:^id(BFTask *task) { + XCTAssertTrue([task.result isKindOfClass:[AWSS3HeadObjectOutput class]], @"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3HeadObjectOutput class]), [task.result description]); + AWSS3HeadObjectOutput *headObjectOutput = task.result; + XCTAssertTrue([headObjectOutput.contentLength intValue] > 0, @"Content Length is 0: [%@]", headObjectOutput.contentLength); - [[[s3 getObject:getObjectRequest] continueWithBlock:^id(BFTask *task) { - XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + AWSS3GetObjectRequest *getObjectRequest = [AWSS3GetObjectRequest new]; + getObjectRequest.bucket = testBucketNameGeneral; + getObjectRequest.key = keyName; + + return [s3 getObject:getObjectRequest]; + }] continueWithSuccessBlock:^id(BFTask *task) { XCTAssertTrue([task.result isKindOfClass:[AWSS3GetObjectOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3GetObjectOutput class]),[task.result description]); AWSS3GetObjectOutput *getObjectOutput = task.result; NSData *receivedBody = getObjectOutput.body; XCTAssertEqualObjects(testObjectData,receivedBody, @"received object is different from sent object, expect:%@ but got:%@",[[NSString alloc] initWithData:testObjectData encoding:NSUTF8StringEncoding],[[NSString alloc] initWithData:receivedBody encoding:NSUTF8StringEncoding]); - return nil; - }] waitUntilFinished]; + AWSS3DeleteObjectRequest *deleteObjectRequest = [AWSS3DeleteObjectRequest new]; + deleteObjectRequest.bucket = testBucketNameGeneral; + deleteObjectRequest.key = keyName; - AWSS3DeleteObjectRequest *deleteObjectRequest = [AWSS3DeleteObjectRequest new]; - deleteObjectRequest.bucket = testBucketNameGeneral; - deleteObjectRequest.key = keyName; - - [[[s3 deleteObject:deleteObjectRequest] continueWithBlock:^id(BFTask *task) { - XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + return [s3 deleteObject:deleteObjectRequest]; + }] continueWithSuccessBlock:^id(BFTask *task) { XCTAssertTrue([task.result isKindOfClass:[AWSS3DeleteObjectOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3DeleteObjectOutput class]),[task.result description]); return nil; + }] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"Error: [%@]", task.error); + return nil; }] waitUntilFinished]; } @@ -406,6 +425,8 @@ - (void)testPutGetAndDeleteObjectByFilePathWithProgressFeedback { }] waitUntilFinished]; + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; + XCTAssertEqual(fileSize, totalUploadedBytes, @"totalUploaded Bytes is not equal to fileSize"); XCTAssertEqual(fileSize, totalExpectedUploadBytes); @@ -696,7 +717,11 @@ - (void)testGetBucketLocation { } AWSS3GetBucketLocationOutput *getBucketLocationOutput = task.result; +#if AWS_TEST_BJS_INSTEAD + XCTAssertEqual(getBucketLocationOutput.locationConstraint, AWSS3BucketLocationConstraintCNNorth1); +#else XCTAssertEqual(getBucketLocationOutput.locationConstraint, AWSS3BucketLocationConstraintBlank); +#endif return nil; }] waitUntilFinished]; } diff --git a/AWSiOSSDKTests/AWSS3TransferManagerTests.m b/AWSiOSSDKTests/AWSS3TransferManagerTests.m index cad96f0e426..7bc954e0c06 100644 --- a/AWSiOSSDKTests/AWSS3TransferManagerTests.m +++ b/AWSiOSSDKTests/AWSS3TransferManagerTests.m @@ -44,12 +44,12 @@ + (void)setUp { tempLargeURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@-s3tmTestTempLarge",testBucketNameGeneral]]]; NSError *error = nil; if (![[NSFileManager defaultManager] createFileAtPath:tempLargeURL.path contents:nil attributes:nil]) { - AZLogError(@"Error: Can not create file with file path:%@",tempLargeURL.path); + AWSLogError(@"Error: Can not create file with file path:%@",tempLargeURL.path); } error = nil; NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingToURL:tempLargeURL error:&error]; if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } @autoreleasepool { @@ -59,7 +59,13 @@ + (void)setUp { [tempBaseString appendFormat:@"%d", i]; } - for (int32_t j = 0; j < 15; j++) { + int multiplier; +#if AWS_TEST_BJS_INSTEAD + multiplier = 5; +#else + multiplier = 15; +#endif + for (int32_t j = 0; j < multiplier; j++) { @autoreleasepool { [fileHandle writeData:[tempBaseString dataUsingEncoding:NSUTF8StringEncoding]]; } @@ -71,12 +77,12 @@ + (void)setUp { tempSmallURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@-s3tmTestTempSmall",testBucketNameGeneral]]]; NSError *error = nil; if (![[NSFileManager defaultManager] createFileAtPath:tempSmallURL.path contents:nil attributes:nil]) { - AZLogError(@"Error: Can not create file with file path:%@",tempSmallURL.path); + AWSLogError(@"Error: Can not create file with file path:%@",tempSmallURL.path); } error = nil; NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingToURL:tempSmallURL error:&error]; if (error) { - AZLogError(@"Error: [%@]", error); + AWSLogError(@"Error: [%@]", error); } [fileHandle writeData:[tempBaseString dataUsingEncoding:NSUTF8StringEncoding]]; //baseString 800000 = 4.68MB @@ -181,7 +187,7 @@ - (void)testTMPauseAllandResumeAllTasks { //Wait a few second and then pause all tasks - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; [[transferManager pauseAll] continueWithBlock:^id(BFTask *task) { XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); //should not return error if successfully paused. return nil; @@ -587,6 +593,77 @@ - (void)testCancelUploadTask { } } +- (void)testTMDownloadWithoutDownloadingFileURL { + AWSS3 *s3 = [AWSS3 defaultS3]; + XCTAssertNotNil(s3); + + AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; + XCTAssertNotNil(transferManager); + + + //Upload a file to the bucket + NSString *keyName = [NSString stringWithFormat:@"%@/test.dat",NSStringFromSelector(_cmd)];; + + NSError *error = nil; + XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:tempSmallURL.path]); + NSString *fileName = [NSString stringWithFormat:@"%@-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + NSURL *testDataURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:fileName]]; + [[NSFileManager defaultManager] createSymbolicLinkAtURL:testDataURL withDestinationURL:tempSmallURL error:&error]; + XCTAssertNil(error, @"The request failed. error: [%@]", error); + + + AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; + uploadRequest.bucket = testBucketNameGeneral; + uploadRequest.key = keyName; + uploadRequest.body = testDataURL; + + + [[[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3TransferManagerUploadOutput class]], @"The response object is not a class of [%@], got: %@", NSStringFromClass([NSURL class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; + + + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; + + //Download the same file from the bucket multiple times + for (int i=0; i<3; i++) { + + AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new]; + downloadRequest.bucket = testBucketNameGeneral; + downloadRequest.key = keyName; + + + [[[transferManager download:downloadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3TransferManagerDownloadOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3TransferManagerDownloadOutput class]),NSStringFromClass([task.result class])); + AWSS3TransferManagerDownloadOutput *output = task.result; + NSURL *receivedBodyURL = output.body; + XCTAssertTrue([receivedBodyURL isKindOfClass:[NSURL class]], @"The response object is not a class of [%@], got: %@", NSStringFromClass([NSURL class]),NSStringFromClass([receivedBodyURL class])); + + //Compare file content + XCTAssertTrue([[NSFileManager defaultManager] contentsEqualAtPath:receivedBodyURL.path andPath:[[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath:testDataURL.path error:nil]], @"received and sent file are different1"); + + return nil; + + }] waitUntilFinished]; + + } + + //Delete the object + AWSS3DeleteObjectRequest *deleteObjectRequest = [AWSS3DeleteObjectRequest new]; + deleteObjectRequest.bucket = testBucketNameGeneral; + deleteObjectRequest.key = keyName; + + [[[s3 deleteObject:deleteObjectRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3DeleteObjectOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3DeleteObjectOutput class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; + + +} - (void)testTMDownloadSmallSizeWithProgressFeedback { AWSS3 *s3 = [AWSS3 defaultS3]; @@ -840,13 +917,14 @@ - (void)testTMDownloadPauseAndResumeWithProgressFeedback { }]; //wait a few seconds and then pause it. - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; [[[downloadRequest pause] continueWithBlock:^id(BFTask *task) { XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); //should not return error if successfully paused. return nil; }] waitUntilFinished]; - AZLogDebug(@"(S3 Transfer Manager) Download Task has been paused."); + AWSLogDebug(@"(S3 Transfer Manager) Download Task has been paused."); + NSLog(@"(S3 Transfer Manager) Download Task has been paused."); [pausedTaskOne waitUntilFinished]; //make sure callback has been called. [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; @@ -871,6 +949,8 @@ - (void)testTMDownloadPauseAndResumeWithProgressFeedback { [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; //resume the task + NSLog(@"(S3 Transfer Manager) Download Task has been resumed."); + AWSLogDebug(@"(S3 Transfer Manager) Download Task has been resumed."); [[[transferManager download:downloadRequest] continueWithBlock:^id(BFTask *task) { XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); XCTAssertTrue([task.result isKindOfClass:[AWSS3TransferManagerDownloadOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3TransferManagerDownloadOutput class]),NSStringFromClass([task.result class])); @@ -883,8 +963,8 @@ - (void)testTMDownloadPauseAndResumeWithProgressFeedback { return nil; }] waitUntilFinished]; - AZLogDebug(@"(S3 Transfer Manager) Download Task has been resumed."); + NSLog(@"(S3 Transfer Manager) Download Task has been finished."); XCTAssertEqual(fileSize, accumulatedDownloadBytes, @"accumulatedDownloadBytes is not equal to total file size"); XCTAssertEqual(fileSize, totalDownloadedBytes,@"total downloaded fileSize is not equal to uploaded fileSize"); XCTAssertEqual(fileSize, totalExpectedDownloadBytes); @@ -903,6 +983,63 @@ - (void)testTMDownloadPauseAndResumeWithProgressFeedback { } +- (void)testTMWithMissingParameters { + AWSS3 *s3 = [AWSS3 defaultS3]; + XCTAssertNotNil(s3); + + AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; + XCTAssertNotNil(transferManager); + + + //Upload a file to the bucket + NSString *keyName = NSStringFromSelector(_cmd); + + NSError *error = nil; + XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:tempSmallURL.path]); + NSString *fileName = [NSString stringWithFormat:@"%@-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + NSURL *testDataURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:fileName]]; + [[NSFileManager defaultManager] createSymbolicLinkAtURL:testDataURL withDestinationURL:tempSmallURL error:&error]; + XCTAssertNil(error, @"The request failed. error: [%@]", error); + + + AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; + uploadRequest.bucket = testBucketNameGeneral; + uploadRequest.key = keyName; + uploadRequest.body = [NSData data]; //invalid type of body, should be instance of NSURL class. + + + [[[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNotNil(task.error,@"Expect got 'InvalidParameters' Error, but got nil"); + XCTAssertNil(task.result, @"task result should be nil since it returns errors"); + XCTAssertEqualObjects(AWSS3TransferManagerErrorDomain, task.error.domain); + XCTAssertEqual(AWSS3TransferManagerErrorInvalidParameters, task.error.code); + + return nil; + }] waitUntilFinished]; + + + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; + + //Download the same file from the bucket + AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new]; + downloadRequest.bucket = testBucketNameGeneral; + //downloadRequest.key = keyName; + + NSString *downloadFileName = [NSString stringWithFormat:@"%@-downloaded-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + downloadRequest.downloadingFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:downloadFileName]]; + + + [[[transferManager download:downloadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNotNil(task.error,@"Expect got 'MIssingParameters' Error, but got nil"); + XCTAssertNil(task.result, @"task result should be nil since it returns errors"); + XCTAssertEqualObjects(AWSS3TransferManagerErrorDomain, task.error.domain); + XCTAssertEqual(AWSS3TransferManagerErrorMissingRequiredParameters, task.error.code); + return nil; + + }] waitUntilFinished]; + + +} - (void)testTMDownloadPauseAndResumeWithFailedTask { AWSS3 *s3 = [AWSS3 defaultS3]; @@ -953,13 +1090,13 @@ - (void)testTMDownloadPauseAndResumeWithFailedTask { }]; //wait a few seconds and then pause it. - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; [[[downloadRequest pause] continueWithBlock:^id(BFTask *task) { XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); //should not return error if successfully paused. return nil; }] waitUntilFinished]; - AZLogDebug(@"(S3 Transfer Manager) Download Task has been paused."); + AWSLogDebug(@"(S3 Transfer Manager) Download Task has been paused."); [pausedTaskOne waitUntilFinished]; //make sure callback has been called. [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; @@ -999,7 +1136,7 @@ - (void)testTMDownloadPauseAndResumeWithFailedTask { XCTAssertEqual(AWSS3TransferManagerErrorCompleted, task.error.code, @"expected got 'AWSS3TransferManagerErrorCompleted' error code, but got:%ld",(long)task.error.code); return nil; }] waitUntilFinished]; - AZLogDebug(@"(S3 Transfer Manager) Download Task has been resumed."); + AWSLogDebug(@"(S3 Transfer Manager) Download Task has been resumed."); @@ -1051,7 +1188,6 @@ - (void)testTMUploadPauseAndResumeSmallSizeWithProgressFeedback { __block int64_t totalUploadedBytes = 0; __block int64_t totalExpectedUploadBytes = 0; uploadRequest.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { - //NSLog(@"keyName:%@ bytesSent: %lld, totalBytesSent: %lld, totalBytesExpectedToSend: %lld",keyName,bytesSent,totalBytesSent,totalBytesExpectedToSend); accumulatedUploadBytes += bytesSent; totalUploadedBytes = totalBytesSent; @@ -1083,6 +1219,7 @@ - (void)testTMUploadPauseAndResumeSmallSizeWithProgressFeedback { }] waitUntilFinished]; //XCTAssertEqual(fileSize, accumulatedUploadBytes, @"total of accumulatedUploadBytes is not equal to fileSize"); + XCTAssertEqual(fileSize, totalUploadedBytes, @"totalUploaded Bytes is not equal to fileSize"); XCTAssertEqual(fileSize, totalExpectedUploadBytes); @@ -1157,7 +1294,6 @@ - (void)testTMUploadPauseAndResumeLargeSizeWithProgressFeedback { __block int64_t totalUploadedBytes = 0; __block int64_t totalExpectedUploadBytes = 0; uploadRequest.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { - //NSLog(@"keyName:%@ bytesSent: %lld, totalBytesSent: %lld, totalBytesExpectedToSend: %lld",keyName,bytesSent,totalBytesSent,totalBytesExpectedToSend); accumulatedUploadBytes += bytesSent; totalUploadedBytes = totalBytesSent; @@ -1282,7 +1418,6 @@ - (void)testTMUploadLargeSizeWithProgressFeedback { __block int64_t totalUploadedBytes = 0; __block int64_t totalExpectedUploadBytes = 0; uploadRequest.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { - //NSLog(@"keyName:%@ bytesSent: %lld, totalBytesSent: %lld, totalBytesExpectedToSend: %lld",keyName,bytesSent,totalBytesSent,totalBytesExpectedToSend); accumulatedUploadBytes += bytesSent; totalUploadedBytes = totalBytesSent; @@ -1369,8 +1504,7 @@ - (void)testTMUploadSmallSizeWithProgressFeedback { __block int64_t totalUploadedBytes = 0; __block int64_t totalExpectedUploadBytes = 0; uploadRequest.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { - - //NSLog(@"keyName:%@ bytesSent: %lld, totalBytesSent: %lld, totalBytesExpectedToSend: %lld",keyName,bytesSent,totalBytesSent,totalBytesExpectedToSend); + //NSLog(@"keyName:%@ bytesSent: %lld, totalBytesSent: %lld, totalBytesExpectedToSend: %lld",keyName,bytesSent,totalBytesSent,totalBytesExpectedToSend); accumulatedUploadBytes += bytesSent; totalUploadedBytes = totalBytesSent; totalExpectedUploadBytes = totalBytesExpectedToSend; @@ -1425,12 +1559,312 @@ - (void)testTMUploadSmallSizeWithProgressFeedback { }] waitUntilFinished]; } +- (void)testArchiver { + NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"uploadRequest"]; + + AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; + uploadRequest.bucket = @"test-bucket"; + uploadRequest.key = @"test-key"; + uploadRequest.body = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"test-body"]]; + + XCTAssertTrue([uploadRequest respondsToSelector:@selector(encodeWithCoder:)]); + + XCTAssertTrue([NSKeyedArchiver archiveRootObject:uploadRequest + toFile:filePath]); + AWSS3TransferManagerUploadRequest *unarchivedObject = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; + + XCTAssertEqualObjects(unarchivedObject.bucket, uploadRequest.bucket); + XCTAssertEqualObjects(unarchivedObject.key, uploadRequest.key); + XCTAssertEqualObjects(unarchivedObject.body, uploadRequest.body); +} + +- (void)testCleanCacheTempFileAfterPause { + + AWSS3 *s3 = [AWSS3 defaultS3]; + XCTAssertNotNil(s3); + + AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; + XCTAssertNotNil(transferManager); + + + //Upload a file to the bucket + NSString *keyName = NSStringFromSelector(_cmd); + NSError *error = nil; + XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:tempLargeURL.path]); + NSString *fileName = [NSString stringWithFormat:@"%@-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + NSURL *testDataURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:fileName]]; + [[NSFileManager defaultManager] createSymbolicLinkAtURL:testDataURL withDestinationURL:tempLargeURL error:&error]; + XCTAssertNil(error, @"The request failed. error: [%@]", error); + + AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; + uploadRequest.bucket = testBucketNameGeneral; + uploadRequest.key = keyName; + uploadRequest.body = testDataURL; + + + [[[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3TransferManagerUploadOutput class]], @"The response object is not a class of [%@], got: %@", NSStringFromClass([NSURL class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; + + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; + + //Download the same file from the bucket + AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new]; + downloadRequest.bucket = testBucketNameGeneral; + downloadRequest.key = keyName; + + NSString *downloadFileName = [NSString stringWithFormat:@"%@-downloaded-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + downloadRequest.downloadingFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:downloadFileName]]; + + BFTask *pausedTaskOne = [[transferManager download:downloadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNotNil(task.error,@"Expect got 'Cancelled' Error, but got nil"); + XCTAssertNil(task.result, @"task result should be nil since it has already been cancelled"); + XCTAssertEqualObjects(AWSS3TransferManagerErrorDomain, task.error.domain); + XCTAssertEqual(AWSS3TransferManagerErrorPaused, task.error.code); + return nil; + }]; + + //wait a few seconds and then pause it. + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; + [[[downloadRequest pause] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); //should not return error if successfully paused. + return nil; + }] waitUntilFinished]; + + AWSLogDebug(@"(S3 Transfer Manager) Download Task has been paused."); + [pausedTaskOne waitUntilFinished]; //make sure callback has been called. + + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; + + + // clean the cache, make sure the temp file is deleted + NSURL *tempFileURL = [downloadRequest valueForKey:@"temporaryFileURL"]; + XCTAssertNotNil(tempFileURL,@"download request's temp file should not be nil"); + XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:[tempFileURL path]],@"temp file should exist if download is paused"); + + NSLog(@"%s:%d the object's temp file is %@",__FILE__,__LINE__,[tempFileURL path]); + + [transferManager clearCache]; + [NSThread sleepForTimeInterval:2.0f]; + + XCTAssertFalse([[NSFileManager defaultManager] fileExistsAtPath:[tempFileURL path]],@"download request's temp file should be deleted, but not"); + + + //Delete the object + AWSS3DeleteObjectRequest *deleteObjectRequest = [AWSS3DeleteObjectRequest new]; + deleteObjectRequest.bucket = testBucketNameGeneral; + deleteObjectRequest.key = keyName; + + [[[s3 deleteObject:deleteObjectRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3DeleteObjectOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3DeleteObjectOutput class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; + +} + +- (void)testCleanCacheTempFileAfterCancel{ + NSCondition *condition = [NSCondition new]; + + AWSS3 *s3 = [AWSS3 defaultS3]; + XCTAssertNotNil(s3); + AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; + XCTAssertNotNil(transferManager); + + //Upload a large file to the bucket + NSString *keyName =[NSString stringWithFormat:@"%@-large",NSStringFromSelector(_cmd)]; + NSError *error = nil; + XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:tempLargeURL.path]); + NSString *fileName = [NSString stringWithFormat:@"%@-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + NSURL *testDataURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:fileName]]; + [[NSFileManager defaultManager] createSymbolicLinkAtURL:testDataURL withDestinationURL:tempLargeURL error:&error]; + XCTAssertNil(error, @"The request failed. error: [%@]", error); + + + + AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; + uploadRequest.bucket = testBucketNameGeneral; + uploadRequest.key = keyName; + uploadRequest.body = testDataURL; + + + [[[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3TransferManagerUploadOutput class]], @"The response object is not a class of [%@], got: %@", NSStringFromClass([NSURL class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; + + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; + + //Check if uploaded file is on S3 + AWSS3ListObjectsRequest *listObjectReq = [AWSS3ListObjectsRequest new]; + listObjectReq.bucket = testBucketNameGeneral; + + [[[s3 listObjects:listObjectReq] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3ListObjectsOutput class]],@"The response object is not a class of [%@]", NSStringFromClass([AWSS3ListObjectsOutput class])); + AWSS3ListObjectsOutput *listObjectsOutput = task.result; + XCTAssertEqualObjects(listObjectsOutput.name, testBucketNameGeneral); + + BOOL match = NO; + for (AWSS3Object *s3Object in listObjectsOutput.contents) { + if ([s3Object.key isEqualToString:keyName] && [s3Object.key isEqualToString:keyName]) { + match = YES; + } + } + + XCTAssertTrue(match, @"Didn't find the uploaded object in the bucket!"); + + return nil; + }] waitUntilFinished]; + + //Download the same file from the bucket + AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new]; + downloadRequest.bucket = testBucketNameGeneral; + downloadRequest.key = keyName; + + NSString *downloadFileName = [NSString stringWithFormat:@"%@-downloaded-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + downloadRequest.downloadingFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:downloadFileName]]; + + [[transferManager download:downloadRequest] continueWithBlock:^id(BFTask *task) { + //Should return Cancelled Task Error + XCTAssertNotNil(task.error,@"Expect got 'Cancelled' Error, but got nil"); + XCTAssertEqualObjects(AWSS3TransferManagerErrorDomain, task.error.domain); + XCTAssertEqual(AWSS3TransferManagerErrorCancelled, task.error.code); + + [condition signal]; + return nil; + + }]; + + //Wait a few second and then cancel the task + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]]; + [condition lock]; + [downloadRequest cancel]; + [condition waitUntilDate:[NSDate dateWithTimeIntervalSinceNow:180]]; + [condition unlock]; + + + // clean the cache, make sure the temp file is deleted + NSURL *tempFileURL = [downloadRequest valueForKey:@"temporaryFileURL"]; + NSLog(@"%s:%d temp file is %@",__FILE__,__LINE__,[tempFileURL path]); + XCTAssertFalse([[NSFileManager defaultManager] fileExistsAtPath:[tempFileURL path]],@"download request's temp file should be deleted, but not"); + + //Delete the object + AWSS3DeleteObjectRequest *deleteObjectRequest = [AWSS3DeleteObjectRequest new]; + deleteObjectRequest.bucket = testBucketNameGeneral; + deleteObjectRequest.key = keyName; + + [[[s3 deleteObject:deleteObjectRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3DeleteObjectOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3DeleteObjectOutput class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; + +} + +- (void)testCleanCacheTempFileAgeLimit { + + AWSS3 *s3 = [AWSS3 defaultS3]; + XCTAssertNotNil(s3); + + AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; + XCTAssertNotNil(transferManager); + + + //Upload a file to the bucket + NSString *keyName = NSStringFromSelector(_cmd); + NSError *error = nil; + XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:tempLargeURL.path]); + NSString *fileName = [NSString stringWithFormat:@"%@-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + NSURL *testDataURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:fileName]]; + [[NSFileManager defaultManager] createSymbolicLinkAtURL:testDataURL withDestinationURL:tempLargeURL error:&error]; + XCTAssertNil(error, @"The request failed. error: [%@]", error); + + AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; + uploadRequest.bucket = testBucketNameGeneral; + uploadRequest.key = keyName; + uploadRequest.body = testDataURL; + + + [[[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3TransferManagerUploadOutput class]], @"The response object is not a class of [%@], got: %@", NSStringFromClass([NSURL class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; + + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; + + //Download the same file from the bucket + AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new]; + downloadRequest.bucket = testBucketNameGeneral; + downloadRequest.key = keyName; + + NSString *downloadFileName = [NSString stringWithFormat:@"%@-downloaded-%@",NSStringFromSelector(_cmd),testBucketNameGeneral]; + downloadRequest.downloadingFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:downloadFileName]]; + + BFTask *pausedTaskOne = [[transferManager download:downloadRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNotNil(task.error,@"Expect got 'Cancelled' Error, but got nil"); + XCTAssertNil(task.result, @"task result should be nil since it has already been cancelled"); + XCTAssertEqualObjects(AWSS3TransferManagerErrorDomain, task.error.domain); + XCTAssertEqual(AWSS3TransferManagerErrorPaused, task.error.code); + return nil; + }]; + + //wait a few seconds and then pause it. + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; + [[[downloadRequest pause] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); //should not return error if successfully paused. + return nil; + }] waitUntilFinished]; + + AWSLogDebug(@"(S3 Transfer Manager) Download Task has been paused."); + [pausedTaskOne waitUntilFinished]; //make sure callback has been called. + + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5]]; + + + // clean the cache, make sure the temp file is deleted + NSURL *tempFileURL = [downloadRequest valueForKey:@"temporaryFileURL"]; + XCTAssertNotNil(tempFileURL,@"download request's temp file should not be nil"); + XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:[tempFileURL path]],@"temp file should exist if download is paused"); + + transferManager.diskAgeLimit = 10; + + [NSThread sleepForTimeInterval:11]; + + XCTAssertFalse([[NSFileManager defaultManager] fileExistsAtPath:[tempFileURL path]],@"download request's temp file should be deleted, but not"); + + transferManager.diskAgeLimit = 0.0; + + //Delete the object + AWSS3DeleteObjectRequest *deleteObjectRequest = [AWSS3DeleteObjectRequest new]; + deleteObjectRequest.bucket = testBucketNameGeneral; + deleteObjectRequest.key = keyName; + + [[[s3 deleteObject:deleteObjectRequest] continueWithBlock:^id(BFTask *task) { + XCTAssertNil(task.error, @"The request failed. error: [%@]", task.error); + XCTAssertTrue([task.result isKindOfClass:[AWSS3DeleteObjectOutput class]],@"The response object is not a class of [%@], got: %@", NSStringFromClass([AWSS3DeleteObjectOutput class]),NSStringFromClass([task.result class])); + return nil; + }] waitUntilFinished]; +} + +#pragma mark - + + (BOOL)createBucketWithName:(NSString *)bucketName { AWSS3 *s3 = [AWSS3 defaultS3]; AWSS3CreateBucketRequest *createBucketReq = [AWSS3CreateBucketRequest new]; createBucketReq.bucket = bucketName; +#if AWS_TEST_BJS_INSTEAD + AWSS3CreateBucketConfiguration *createBucketConfiguration = [AWSS3CreateBucketConfiguration new]; + createBucketConfiguration.locationConstraint = AWSS3BucketLocationConstraintCNNorth1; + createBucketReq.createBucketConfiguration = createBucketConfiguration; +#endif + __block BOOL success = NO; [[[s3 createBucket:createBucketReq] continueWithBlock:^id(BFTask *task) { if (task.error) { diff --git a/AWSiOSSDKTests/AWSSESTests.m b/AWSiOSSDKTests/AWSSESTests.m index 2f877b3d226..8cb7940ae42 100644 --- a/AWSiOSSDKTests/AWSSESTests.m +++ b/AWSiOSSDKTests/AWSSESTests.m @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -#if AWS_TEST_SES +#if AWS_TEST_SES && !AWS_TEST_BJS_INSTEAD #import #import "SES.h" diff --git a/AWSiOSSDKTests/AWSSNSTests.m b/AWSiOSSDKTests/AWSSNSTests.m index 5ea964bbcd1..4d7aef6529a 100644 --- a/AWSiOSSDKTests/AWSSNSTests.m +++ b/AWSiOSSDKTests/AWSSNSTests.m @@ -71,41 +71,42 @@ - (void)testGetEndpointAttributesFailed { }] waitUntilFinished]; } -- (void)testCreatePlatformEndpointWithAttributes { - AWSSNS *sns = [AWSSNS defaultSNS]; - XCTAssertNotNil(sns); - - NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"credentials" - ofType:@"json"]; - NSDictionary *credentialsJson = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] - options:NSJSONReadingMutableContainers - error:nil]; - NSString *platformApplicationArn = credentialsJson[@"snsTestAppArn"]; - - if ([platformApplicationArn length] > 0) { - - AWSSNSCreatePlatformEndpointInput *createEndpointInput = [AWSSNSCreatePlatformEndpointInput new]; - createEndpointInput.platformApplicationArn = platformApplicationArn; - createEndpointInput.token = @"0123456789"; - createEndpointInput.attributes = @{@"Enabled":@"true"}; - - [[[sns createPlatformEndpoint:createEndpointInput] continueWithBlock:^id(BFTask *task) { - if (task.error) { - XCTFail(@"Error: [%@]", task.error); - } - - if (task.result) { - XCTAssertTrue([task.result isKindOfClass:[AWSSNSCreateEndpointResponse class]]); - AWSSNSCreateEndpointResponse *response = task.result; - XCTAssertNotNil(response.endpointArn, @"response endpointArn should not be nil!"); - } - - return nil; - }] waitUntilFinished]; - } else { - NSLog(@"Warning: can not get snsTestAppArn from credentials.json, you may need to update your credentials file"); - } -} + +//- (void)testCreatePlatformEndpointWithAttributes { +// AWSSNS *sns = [AWSSNS defaultSNS]; +// XCTAssertNotNil(sns); +// +// NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"credentials" +// ofType:@"json"]; +// NSDictionary *credentialsJson = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] +// options:NSJSONReadingMutableContainers +// error:nil]; +// NSString *platformApplicationArn = credentialsJson[@"snsTestAppArn"]; +// +// if ([platformApplicationArn length] > 0) { +// +// AWSSNSCreatePlatformEndpointInput *createEndpointInput = [AWSSNSCreatePlatformEndpointInput new]; +// createEndpointInput.platformApplicationArn = platformApplicationArn; +// createEndpointInput.token = @"0123456789"; +// createEndpointInput.attributes = @{@"Enabled":@"true"}; +// +// [[[sns createPlatformEndpoint:createEndpointInput] continueWithBlock:^id(BFTask *task) { +// if (task.error) { +// XCTFail(@"Error: [%@]", task.error); +// } +// +// if (task.result) { +// XCTAssertTrue([task.result isKindOfClass:[AWSSNSCreateEndpointResponse class]]); +// AWSSNSCreateEndpointResponse *response = task.result; +// XCTAssertNotNil(response.endpointArn, @"response endpointArn should not be nil!"); +// } +// +// return nil; +// }] waitUntilFinished]; +// } else { +// NSLog(@"Warning: can not get snsTestAppArn from credentials.json, you may need to update your credentials file"); +// } +//} @end #endif diff --git a/AWSiOSSDKTests/AWSSQSTests.m b/AWSiOSSDKTests/AWSSQSTests.m index f48a8eba3c3..5b8402782e7 100644 --- a/AWSiOSSDKTests/AWSSQSTests.m +++ b/AWSiOSSDKTests/AWSSQSTests.m @@ -53,7 +53,7 @@ - (void)testListQueuesRequest { if (task.result) { AWSSQSListQueuesResult *listQueuesResult = task.result; - AZLogDebug(@"[%@]", listQueuesResult); + AWSLogDebug(@"[%@]", listQueuesResult); XCTAssertNotNil(listQueuesResult.queueUrls); } diff --git a/AWSiOSSDKTests/AWSSTSTests.m b/AWSiOSSDKTests/AWSSTSTests.m index 72130e34264..b2d7494d864 100644 --- a/AWSiOSSDKTests/AWSSTSTests.m +++ b/AWSiOSSDKTests/AWSSTSTests.m @@ -19,18 +19,6 @@ #import "STS.h" #import "AWSTestUtility.h" -@interface AWSTestCredentialsProvider : NSObject - -@property (nonatomic) NSString *accessKey; -@property (nonatomic) NSString *secretKey; -@property (nonatomic) NSString *sessionKey; - -@end - -@implementation AWSTestCredentialsProvider - -@end - @interface AWSSTSTests : XCTestCase @end @@ -73,42 +61,6 @@ - (void)testGetSessionToken { }] waitUntilFinished]; } -+ (void)runServiceWithStsCredential { - AWSTestCredentialsProvider *testCredentialProvider = [AWSTestCredentialsProvider new]; - - AWSSTS *sts = (AWSSTS *)[[AWSServiceManager defaultServiceManager] serviceForKey:AWSTestUtilitySTSKey]; - - AWSSTSGetSessionTokenRequest *getSessionTokenRequest = [AWSSTSGetSessionTokenRequest new]; - getSessionTokenRequest.durationSeconds = @900; - - [[[sts getSessionToken:getSessionTokenRequest] continueWithBlock:^id(BFTask *task) { - if (task.error) { - //XCTFail(@"Error: [%@]", task.error); - } - - if (task.result) { - AWSSTSGetSessionTokenResponse *getSessionTokenResponse = task.result; - //XCTAssertTrue([getSessionTokenResponse.credentials.accessKeyId length] > 0); - testCredentialProvider.accessKey = getSessionTokenResponse.credentials.accessKeyId; - - //XCTAssertTrue([getSessionTokenResponse.credentials.secretAccessKey length] > 0); - testCredentialProvider.secretKey = getSessionTokenResponse.credentials.secretAccessKey; - - //XCTAssertTrue([getSessionTokenResponse.credentials.sessionToken length] > 0); - testCredentialProvider.sessionKey = getSessionTokenResponse.credentials.sessionToken; - - //XCTAssertTrue([getSessionTokenResponse.credentials.expiration isKindOfClass:[NSDate class]]); - } - - return nil; - }] waitUntilFinished]; - - AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 - credentialsProvider:testCredentialProvider]; - [[AWSServiceManager defaultServiceManager] setDefaultServiceConfiguration:configuration]; - - -} @end diff --git a/AWSiOSSDKTests/AWSSimpleDBTests.m b/AWSiOSSDKTests/AWSSimpleDBTests.m index 80975307a27..7af11ec1111 100644 --- a/AWSiOSSDKTests/AWSSimpleDBTests.m +++ b/AWSiOSSDKTests/AWSSimpleDBTests.m @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -#if AWS_TEST_SIMPLEDB +#if AWS_TEST_SIMPLEDB && !AWS_TEST_BJS_INSTEAD #import #import "SimpleDB.h" @@ -67,7 +67,7 @@ - (void)testListDomains { if (task.result) { AWSSimpleDBListDomainsResult *listDomainsResult = task.result; XCTAssertNotNil(listDomainsResult.domainNames, @" doemainNames Array should not be nil."); - AZLogDebug(@"[%@]", listDomainsResult); + AWSLogDebug(@"[%@]", listDomainsResult); } return nil; @@ -75,7 +75,7 @@ - (void)testListDomains { } - (void)testSelect { - [[AZLogger defaultLogger] setLogLevel:AZLogLevelVerbose]; + [[AWSLogger defaultLogger] setLogLevel:AWSLogLevelVerbose]; AWSSimpleDB *sdb = [AWSSimpleDB defaultSimpleDB]; AWSSimpleDBSelectRequest *selectRequest = [AWSSimpleDBSelectRequest new]; @@ -94,44 +94,63 @@ - (void)testSelect { }] waitUntilFinished]; } +- (void)testSelectWithNonEnglishTableName { + [[AWSLogger defaultLogger] setLogLevel:AWSLogLevelVerbose]; + AWSSimpleDB *sdb = [AWSSimpleDB defaultSimpleDB]; + + AWSSimpleDBSelectRequest *selectRequest = [AWSSimpleDBSelectRequest new]; + selectRequest.selectExpression = [NSString stringWithFormat:@"select * from `%@` where fakeAttribute = 'フェイクアトリビュート'", _testDomainName]; + [[[sdb select:selectRequest] continueWithBlock:^id(BFTask *task) { + if (task.error) { + XCTFail(@"Error: [%@]", task.error); + } + + if (task.result) { + AWSSimpleDBSelectResult *selectResult = task.result; + XCTAssertNotNil(selectResult, @"selectResult should not be nil."); + } + + return nil; + }] waitUntilFinished]; +} + - (void)testSelectWithLike { AWSSimpleDB *sdb = [AWSSimpleDB defaultSimpleDB]; NSString *myItemName = [NSString stringWithFormat:@"itemName%@",NSStringFromSelector(_cmd)]; - + AWSSimpleDBPutAttributesRequest *putAttributesRequest = [AWSSimpleDBPutAttributesRequest new]; putAttributesRequest.domainName = _testDomainName; putAttributesRequest.itemName =myItemName; - + AWSSimpleDBReplaceableAttribute *attribute1 = [AWSSimpleDBReplaceableAttribute new]; attribute1.name = @"Color"; attribute1.value = @"Blue"; attribute1.replace = @YES; - + AWSSimpleDBReplaceableAttribute *attribute2 = [AWSSimpleDBReplaceableAttribute new]; attribute2.name = @"Size"; attribute2.value = @"20"; - - + putAttributesRequest.attributes = @[attribute1,attribute2]; - + [[[[sdb putAttributes:putAttributesRequest] continueWithBlock:^id(BFTask *task) { if (task.error) { XCTFail(@"Error: [%@]", task.error); } - + AWSSimpleDBSelectRequest *selectRequest = [AWSSimpleDBSelectRequest new]; selectRequest.selectExpression = [NSString stringWithFormat:@"select * from `%@` where Color like 'Bl%%'", _testDomainName]; - + sleep(2); return [sdb select:selectRequest]; }] continueWithBlock:^id(BFTask *task) { if (task.error) { XCTFail(@"Error: [%@]", task.error); } - + AWSSimpleDBSelectResult *selectResult = task.result; XCTAssertNotNil(selectResult.items, @"selectResult should not be nil."); - + BOOL isFound = NO; for (AWSSimpleDBItem *anItem in selectResult.items) { if ([anItem.name isEqualToString:myItemName]) { @@ -142,10 +161,10 @@ - (void)testSelectWithLike { } } } - + XCTAssertTrue(isFound, @"can not find the expected result from select response."); - - + + return nil; }] waitUntilFinished]; } @@ -153,40 +172,40 @@ - (void)testSelectWithLike { -(void)testCheckRetainTrailingSpace { AWSSimpleDB *sdb = [AWSSimpleDB defaultSimpleDB]; NSString *myItemName = [NSString stringWithFormat:@"itemName%@",NSStringFromSelector(_cmd)]; - + AWSSimpleDBPutAttributesRequest *putAttributesRequest = [AWSSimpleDBPutAttributesRequest new]; putAttributesRequest.domainName = _testDomainName; putAttributesRequest.itemName = myItemName; - + AWSSimpleDBReplaceableAttribute *attribute1 = [AWSSimpleDBReplaceableAttribute new]; attribute1.name = @"Color"; attribute1.value = @"RedWithTrailingSpace "; //attribute1.replace = @YES; - + AWSSimpleDBReplaceableAttribute *attribute2 = [AWSSimpleDBReplaceableAttribute new]; attribute2.name = @"Size"; attribute2.value = @"99 "; - + putAttributesRequest.attributes = @[attribute1,attribute2]; - + [[[[sdb putAttributes:putAttributesRequest] continueWithBlock:^id(BFTask *task) { if (task.error) { XCTFail(@"Error: [%@]", task.error); } - + AWSSimpleDBSelectRequest *selectRequest = [AWSSimpleDBSelectRequest new]; selectRequest.selectExpression = [NSString stringWithFormat:@"select * from `%@`", _testDomainName]; - + sleep(2); return [sdb select:selectRequest]; }] continueWithBlock:^id(BFTask *task) { if (task.error) { XCTFail(@"Error: [%@]", task.error); } - + AWSSimpleDBSelectResult *selectResult = task.result; XCTAssertNotNil(selectResult.items, @"selectResult should not be nil."); - + BOOL isFound1 = NO; BOOL isFound2 = NO; for (AWSSimpleDBItem *anItem in selectResult.items) { @@ -198,14 +217,14 @@ -(void)testCheckRetainTrailingSpace { if ([attribute.name isEqualToString:@"Size"] && [attribute.value isEqualToString:@"99 "]) { isFound2 = YES; } - + } } } - + XCTAssertTrue(isFound1&&isFound2, @"can not find the expected result from select response."); - - + + return nil; }] waitUntilFinished]; } diff --git a/AWSiOSSDKTests/AWSTestUtility.m b/AWSiOSSDKTests/AWSTestUtility.m index 1f34bd9d63e..9add4caaddb 100644 --- a/AWSiOSSDKTests/AWSTestUtility.m +++ b/AWSiOSSDKTests/AWSTestUtility.m @@ -19,17 +19,49 @@ NSString *const AWSTestUtilitySTSKey = @"test-sts"; NSString *const AWSTestUtilityCognitoIdentityServiceKey = @"test-cib"; +@interface AWSTestCredentialsProvider : NSObject + +@property (nonatomic) NSString *accessKey; +@property (nonatomic) NSString *secretKey; +@property (nonatomic) NSString *sessionKey; + +@end + +@implementation AWSTestCredentialsProvider + +@end + @implementation AWSTestUtility +(void)setupCrdentialsViaFile { if (![AWSServiceManager defaultServiceManager].defaultServiceConfiguration) { +#if AWS_TEST_BJS_INSTEAD + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"credentials" ofType:@"json"]; + NSDictionary *credentialsJson = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + AWSStaticCredentialsProvider *credentialsProvider = [[AWSStaticCredentialsProvider alloc] initWithAccessKey:credentialsJson[@"accessKeyBJS"] + secretKey:credentialsJson[@"secretKeyBJS"]]; + + AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionCNNorth1 + credentialsProvider:credentialsProvider]; + +#else AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithCredentialsFilename:@"credentials"]; AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; +#endif [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration; } } + (void)setupCognitoCredentialsProvider { + +#if AWS_TEST_BJS_INSTEAD + //since BJS doesn't support Cognito, we are using STS instead + [self setupSTS]; + [self runServiceWithStsCredential]; + +#else if (![AWSServiceManager defaultServiceManager].defaultServiceConfiguration) { NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"credentials" ofType:@"json"]; @@ -47,16 +79,31 @@ + (void)setupCognitoCredentialsProvider { credentialsProvider:credentialsProvider]; [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration; } +#endif } + (void)setupSTS { + if (![[AWSServiceManager defaultServiceManager] serviceForKey:AWSTestUtilitySTSKey]) { +#if AWS_TEST_BJS_INSTEAD + NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"credentials" ofType:@"json"]; + NSDictionary *credentialsJson = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] + options:NSJSONReadingMutableContainers + error:nil]; + AWSStaticCredentialsProvider *credentialsProvider = [[AWSStaticCredentialsProvider alloc] initWithAccessKey:credentialsJson[@"accessKeyBJS"] + secretKey:credentialsJson[@"secretKeyBJS"]]; + + AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionCNNorth1 + credentialsProvider:credentialsProvider]; +#else AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithCredentialsFilename:@"credentials"]; AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; +#endif AWSSTS *sts = [[AWSSTS alloc] initWithConfiguration:configuration]; [[AWSServiceManager defaultServiceManager] setService:sts forKey:AWSTestUtilitySTSKey]; } + } + (void)setupCognitoIdentityService { @@ -69,4 +116,46 @@ + (void)setupCognitoIdentityService { } } ++ (void)runServiceWithStsCredential { + AWSTestCredentialsProvider *testCredentialProvider = [AWSTestCredentialsProvider new]; + + AWSSTS *sts = (AWSSTS *)[[AWSServiceManager defaultServiceManager] serviceForKey:AWSTestUtilitySTSKey]; + + AWSSTSGetSessionTokenRequest *getSessionTokenRequest = [AWSSTSGetSessionTokenRequest new]; + getSessionTokenRequest.durationSeconds = @900; + + [[[sts getSessionToken:getSessionTokenRequest] continueWithBlock:^id(BFTask *task) { + if (task.error) { + //XCTFail(@"Error: [%@]", task.error); + } + + if (task.result) { + AWSSTSGetSessionTokenResponse *getSessionTokenResponse = task.result; + //XCTAssertTrue([getSessionTokenResponse.credentials.accessKeyId length] > 0); + testCredentialProvider.accessKey = getSessionTokenResponse.credentials.accessKeyId; + + //XCTAssertTrue([getSessionTokenResponse.credentials.secretAccessKey length] > 0); + testCredentialProvider.secretKey = getSessionTokenResponse.credentials.secretAccessKey; + + //XCTAssertTrue([getSessionTokenResponse.credentials.sessionToken length] > 0); + testCredentialProvider.sessionKey = getSessionTokenResponse.credentials.sessionToken; + + //XCTAssertTrue([getSessionTokenResponse.credentials.expiration isKindOfClass:[NSDate class]]); + } + + return nil; + }] waitUntilFinished]; +#if AWS_TEST_BJS_INSTEAD + AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionCNNorth1 + credentialsProvider:testCredentialProvider]; +#else + AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 + credentialsProvider:testCredentialProvider]; + +#endif + [[AWSServiceManager defaultServiceManager] setDefaultServiceConfiguration:configuration]; + + +} + @end diff --git a/AWSiOSSDKTests/AWSiOSSDKv2Tests-Prefix.pch b/AWSiOSSDKTests/AWSiOSSDKv2Tests-Prefix.pch index e4f03cbe4cb..bc98c4c46fd 100644 --- a/AWSiOSSDKTests/AWSiOSSDKv2Tests-Prefix.pch +++ b/AWSiOSSDKTests/AWSiOSSDKv2Tests-Prefix.pch @@ -9,17 +9,21 @@ #import #endif -#define AWS_TEST_AMAZON_CORE 1 +//set true to use BJS region instead +#define AWS_TEST_BJS_INSTEAD 0 + +#define AWS_TEST_ANALYTICS 1 #define AWS_TEST_AUTO_SCALING 1 +#define AWS_TEST_AWS_CORE 1 #define AWS_TEST_CLOCK_SKEW 1 #define AWS_TEST_CLOUD_WATCH 1 #define AWS_TEST_COGNITO_CREDENTIALS_PROVIDER 1 #define AWS_TEST_COGNITO_IDENTITY_SERVICE 1 -#define AWS_TEST_AWS_CORE 1 #define AWS_TEST_DYNAMODB_OBJECT_MAPPER 1 #define AWS_TEST_DYNAMODB 1 #define AWS_TEST_EC2 1 #define AWS_TEST_ELASTIC_LOAD_BALANCING 1 +#define AWS_TEST_EVENT_RECORDER_SERVICE 1 #define AWS_TEST_KINESIS_RECORDER 1 #define AWS_TEST_KINESIS 1 #define AWS_TEST_S3 1 @@ -29,5 +33,3 @@ #define AWS_TEST_SNS 1 #define AWS_TEST_SQS 1 #define AWS_TEST_STS 1 -#define AWS_TEST_ERS 1 -#define AWS_TEST_ANALYTICS 1 diff --git a/AWSiOSSDKTests/AmazonCoreTests.m b/AWSiOSSDKTests/AmazonCoreTests.m deleted file mode 100644 index fbd5e19de9c..00000000000 --- a/AWSiOSSDKTests/AmazonCoreTests.m +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#if AWS_TEST_AMAZON_CORE - -#import -#import "AmazonCore.h" - -@interface AmazonCoreTests : XCTestCase - -@end - -@implementation AmazonCoreTests - -- (void)setUp { - [super setUp]; - // Put setup code here; it will be run once, before the first test case. -} - -- (void)tearDown { - // Put teardown code here; it will be run once, after the last test case. - [super tearDown]; -} - -- (void)testDateToString { - //660096000 is 12/02/1990 hour 0 min 0 sec 0 GMT - NSDate *testDateAZDateDateStampFormat = [NSDate dateWithTimeIntervalSince1970:660096000]; - NSString *dateString = [testDateAZDateDateStampFormat az_stringValue:AZDateShortDateFormat1]; - NSString *correctString = @"19901202"; - - XCTAssertEqualWithAccuracy([dateString doubleValue], [correctString doubleValue], 10); - - NSDate *testDateAZDateAmzDateFormat = [NSDate dateWithTimeIntervalSince1970:660096000]; - NSString *dateStringAZDateAmzDateFormat = [testDateAZDateAmzDateFormat az_stringValue:AZDateISO8601DateFormat2]; - NSString *correctStringAZDateAmzDateFormat = @"19901202T000000Z"; - - XCTAssertTrue([correctStringAZDateAmzDateFormat isEqualToString:dateStringAZDateAmzDateFormat], @"DateToString failed. Expecting: %@ , Actual: %@",correctStringAZDateAmzDateFormat,dateStringAZDateAmzDateFormat); -} - -- (void)testStringToDate { - NSString *testStringAZDateDateStampFormat = @"19901202"; - NSDate *testDate = [NSDate az_dateFromString:testStringAZDateDateStampFormat format:AZDateShortDateFormat1]; - double testTime = [testDate timeIntervalSince1970]; - double expectedTime = 660096000; - - XCTAssertEqualWithAccuracy(testTime, expectedTime, 10, "Failed to create a proper date from string usingAZDateDateStampFormat"); - - NSString *testStringAZDateAmzDateFormat = @"19901202T000000Z"; - NSDate *testDateAmz = [NSDate az_dateFromString:testStringAZDateAmzDateFormat format:AZDateISO8601DateFormat2]; - double testTimeAmz = [testDateAmz timeIntervalSince1970]; - - XCTAssertEqualWithAccuracy(testTimeAmz, expectedTime, 10, "Failed to create a proper date from string usingAZDateAmzDateFormat"); -} - -- (void)testUrlEncode { - NSString *inputOne = @"test %"; - NSString *inputTwo = [NSString stringWithFormat:@"test %%"]; - XCTAssertEqualObjects([inputOne az_stringWithURLEncoding], @"test%20%25"); - XCTAssertEqualObjects([inputTwo az_stringWithURLEncoding], @"test%20%25"); -} - -@end - -#endif diff --git a/AWSiOSSDKTests/ec2-input.json b/AWSiOSSDKTests/ec2-input.json new file mode 100644 index 00000000000..a7613614f0a --- /dev/null +++ b/AWSiOSSDKTests/ec2-input.json @@ -0,0 +1,383 @@ +[ + { + "description": "Scalar members", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "Foo": { + "shape": "StringType" + }, + "Bar": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "Foo": "val1", + "Bar": "val2" + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&Foo=val1&Bar=val2" + } + } + ] + }, + { + "description": "Structure with locationName and queryName applied to members", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "Foo": { + "shape": "StringType" + }, + "Bar": { + "shape": "StringType", + "locationName": "barLocationName" + }, + "Yuck": { + "shape": "StringType", + "locationName": "yuckLocationName", + "queryName": "yuckQueryName" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "Foo": "val1", + "Bar": "val2", + "Yuck": "val3" + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&Foo=val1&BarLocationName=val2&yuckQueryName=val3" + } + } + ] + }, + { + "description": "Nested structure members", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "StructArg": { + "shape": "StructType", + "locationName": "Struct" + } + } + }, + "StructType": { + "type": "structure", + "members": { + "ScalarArg": { + "shape": "StringType", + "locationName": "Scalar" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "StructArg": { + "ScalarArg": "foo" + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&Struct.Scalar=foo" + } + } + ] + }, + { + "description": "List types", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListArg": { + "shape": "ListType" + } + } + }, + "ListType": { + "type": "list", + "member": { + "shape": "Strings" + } + }, + "Strings": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "ListArg": [ + "foo", + "bar", + "baz" + ] + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&ListArg.1=foo&ListArg.2=bar&ListArg.3=baz" + } + } + ] + }, + { + "description": "List with location name applied to member", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListArg": { + "shape": "ListType", + "locationName": "ListMemberName" + } + } + }, + "ListType": { + "type": "list", + "member": { + "shape": "StringType", + "LocationName": "item" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "ListArg": [ + "a", + "b", + "c" + ] + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&ListMemberName.1=a&ListMemberName.2=b&ListMemberName.3=c" + } + } + ] + }, + { + "description": "List with locationName and queryName", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListArg": { + "shape": "ListType", + "locationName": "ListMemberName", + "queryName": "ListQueryName" + } + } + }, + "ListType": { + "type": "list", + "member": { + "shape": "StringType", + "LocationName": "item" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "ListArg": [ + "a", + "b", + "c" + ] + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&ListQueryName.1=a&ListQueryName.2=b&ListQueryName.3=c" + } + } + ] + }, + { + "description": "Base64 encoded Blobs", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "BlobArg": { + "shape": "BlobType" + } + } + }, + "BlobType": { + "type": "blob" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "BlobArg": "foo" + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&BlobArg=Zm9v" + } + } + ] + }, + { + "description": "Timestamp values", + "metadata": { + "protocol": "ec2", + "apiVersion": "2014-01-01", + "timestampFormat": "iso8601" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "TimeArg": { + "shape": "TimestampType" + }, + "TimeArg2": { + "shape": "TimestampType2" + } + } + }, + "TimestampType": { + "type": "timestamp" + }, + "TimestampType2": { + "type": "timestamp", + "timestampFormat": "unixTimestamp" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "TimeArg": 1422172800 + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&TimeArg=2015-01-25T08%3A00%3A00Z" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "TimeArg2": 1422172800 + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&TimeArg2=1422172800" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/ec2-output.json b/AWSiOSSDKTests/ec2-output.json new file mode 100644 index 00000000000..a85607a65d1 --- /dev/null +++ b/AWSiOSSDKTests/ec2-output.json @@ -0,0 +1,417 @@ +[ + { + "description": "Scalar members", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Str": { + "shape": "StringType" + }, + "Num": { + "shape": "IntegerType", + "locationName": "FooNum" + }, + "FalseBool": { + "shape": "BooleanType" + }, + "TrueBool": { + "shape": "BooleanType" + }, + "Float": { + "shape": "FloatType" + }, + "Double": { + "shape": "DoubleType" + }, + "Long": { + "shape": "LongType" + }, + "Char": { + "shape": "CharType" + } + } + }, + "StringType": { + "type": "string" + }, + "IntegerType": { + "type": "integer" + }, + "BooleanType": { + "type": "boolean" + }, + "FloatType": { + "type": "float" + }, + "DoubleType": { + "type": "double" + }, + "LongType": { + "type": "long" + }, + "CharType": { + "type": "character" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Str": "myname", + "Num": 123, + "FalseBool": false, + "TrueBool": true, + "Float": 1.2, + "Double": 1.3, + "Long": 200, + "Char": "a" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "myname123falsetrue1.21.3200arequest-id" + } + } + ] + }, + { + "description": "Blob", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Blob": { + "shape": "BlobType" + } + } + }, + "BlobType": { + "type": "blob" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Blob": "value" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "dmFsdWU=requestid" + } + } + ] + }, + { + "description": "Lists", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ListMember": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123requestid" + } + } + ] + }, + { + "description": "List with custom member name", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ListMember": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType", + "locationName": "item" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123requestid" + } + } + ] + }, + { + "description": "Flattened List", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ListMember": { + "shape": "ListType", + "flattened": true + } + } + }, + "ListType": { + "type": "list", + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123requestid" + } + } + ] + }, + { + "description": "Normal map", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Map": { + "shape": "MapType" + } + } + }, + "MapType": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "StructureType" + } + }, + "StructureType": { + "type": "structure", + "members": { + "foo": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": { + "foo": "bar" + }, + "baz": { + "foo": "bam" + } + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbamrequestid" + } + } + ] + }, + { + "description": "Flattened map", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Map": { + "shape": "MapType", + "flattened": true + } + } + }, + "MapType": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": "bar", + "baz": "bam" + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbamrequestid" + } + } + ] + }, + { + "description": "Named map", + "metadata": { + "protocol": "ec2" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Map": { + "shape": "MapType", + "flattened": true + } + } + }, + "MapType": { + "type": "map", + "key": { + "shape": "StringType", + "locationName": "foo" + }, + "value": { + "shape": "StringType", + "locationName": "bar" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": "bar", + "baz": "bam" + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbamrequestid" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/json-input.json b/AWSiOSSDKTests/json-input.json new file mode 100644 index 00000000000..3f02a77feaf --- /dev/null +++ b/AWSiOSSDKTests/json-input.json @@ -0,0 +1,259 @@ +[ + { + "description": "Scalar members", + "metadata": { + "protocol": "json", + "jsonVersion": 1.1, + "targetPrefix": "com.amazonaws.foo" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "Name": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName", + "http": { + "method": "POST" + } + }, + "params": { + "Name": "myname" + }, + "serialized": { + "body": "{\"Name\": \"myname\"}", + "headers": { + "X-Amz-Target": "com.amazonaws.foo.OperationName", + "Content-Type": "application/x-amz-json-1.1" + }, + "uri": "/" + } + } + ] + }, + { + "description": "Recursive shapes", + "metadata": { + "protocol": "json", + "jsonVersion": 1.1, + "targetPrefix": "com.amazonaws.foo" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "RecursiveStruct": { + "shape": "RecursiveStructType" + } + } + }, + "RecursiveStructType": { + "type": "structure", + "members": { + "NoRecurse": { + "shape": "StringType" + }, + "RecursiveStruct": { + "shape": "RecursiveStructType" + }, + "RecursiveList": { + "shape": "RecursiveListType" + }, + "RecursiveMap": { + "shape": "RecursiveMapType" + } + } + }, + "RecursiveListType": { + "type": "list", + "member": { + "shape": "RecursiveStructType" + } + }, + "RecursiveMapType": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "RecursiveStructType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + }, + "serialized": { + "uri": "/", + "headers": { + "X-Amz-Target": "com.amazonaws.foo.OperationName", + "Content-Type": "application/x-amz-json-1.1" + }, + "body": "{\"RecursiveStruct\": {\"NoRecurse\": \"foo\"}}" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + } + }, + "serialized": { + "uri": "/", + "headers": { + "X-Amz-Target": "com.amazonaws.foo.OperationName", + "Content-Type": "application/x-amz-json-1.1" + }, + "body": "{\"RecursiveStruct\": {\"RecursiveStruct\": {\"NoRecurse\": \"foo\"}}}" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveStruct": { + "RecursiveStruct": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + } + } + } + }, + "serialized": { + "uri": "/", + "headers": { + "X-Amz-Target": "com.amazonaws.foo.OperationName", + "Content-Type": "application/x-amz-json-1.1" + }, + "body": "{\"RecursiveStruct\": {\"RecursiveStruct\": {\"RecursiveStruct\": {\"RecursiveStruct\": {\"NoRecurse\": \"foo\"}}}}}" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveList": [ + { + "NoRecurse": "foo" + }, + { + "NoRecurse": "bar" + } + ] + } + }, + "serialized": { + "uri": "/", + "headers": { + "X-Amz-Target": "com.amazonaws.foo.OperationName", + "Content-Type": "application/x-amz-json-1.1" + }, + "body": "{\"RecursiveStruct\": {\"RecursiveList\": [{\"NoRecurse\": \"foo\"}, {\"NoRecurse\": \"bar\"}]}}" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveList": [ + { + "NoRecurse": "foo" + }, + { + "RecursiveStruct": { + "NoRecurse": "bar" + } + } + ] + } + }, + "serialized": { + "uri": "/", + "headers": { + "X-Amz-Target": "com.amazonaws.foo.OperationName", + "Content-Type": "application/x-amz-json-1.1" + }, + "body": "{\"RecursiveStruct\": {\"RecursiveList\": [{\"NoRecurse\": \"foo\"}, {\"RecursiveStruct\": {\"NoRecurse\": \"bar\"}}]}}" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveMap": { + "foo": { + "NoRecurse": "foo" + }, + "bar": { + "NoRecurse": "bar" + } + } + } + }, + "serialized": { + "uri": "/", + "headers": { + "X-Amz-Target": "com.amazonaws.foo.OperationName", + "Content-Type": "application/x-amz-json-1.1" + }, + "body": "{\"RecursiveStruct\": {\"RecursiveMap\": {\"foo\": {\"NoRecurse\": \"foo\"}, \"bar\": {\"NoRecurse\": \"bar\"}}}}" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/json-output.json b/AWSiOSSDKTests/json-output.json new file mode 100644 index 00000000000..092d1eff666 --- /dev/null +++ b/AWSiOSSDKTests/json-output.json @@ -0,0 +1,325 @@ +[ + { + "description": "Scalar members", + "metadata": { + "protocol": "json" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Str": { + "shape": "StringType" + }, + "Num": { + "shape": "IntegerType" + }, + "FalseBool": { + "shape": "BooleanType" + }, + "TrueBool": { + "shape": "BooleanType" + }, + "Float": { + "shape": "FloatType" + }, + "Double": { + "shape": "DoubleType" + }, + "Long": { + "shape": "LongType" + }, + "Char": { + "shape": "CharType" + } + } + }, + "StringType": { + "type": "string" + }, + "IntegerType": { + "type": "integer" + }, + "BooleanType": { + "type": "boolean" + }, + "FloatType": { + "type": "float" + }, + "DoubleType": { + "type": "double" + }, + "LongType": { + "type": "long" + }, + "CharType": { + "type": "character" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Str": "myname", + "Num": 123, + "FalseBool": false, + "TrueBool": true, + "Float": 1.2, + "Double": 1.3, + "Long": 200, + "Char": "a" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "{\"Str\": \"myname\", \"Num\": 123, \"FalseBool\": false, \"TrueBool\": true, \"Float\": 1.2, \"Double\": 1.3, \"Long\": 200, \"Char\": \"a\"}" + } + } + ] + }, + { + "description": "Blob members", + "metadata": { + "protocol": "json" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "BlobMember": { + "shape": "BlobType" + }, + "StructMember": { + "shape": "BlobContainer" + } + } + }, + "BlobType": { + "type": "blob" + }, + "BlobContainer": { + "type": "structure", + "members": { + "foo": { + "shape": "BlobType" + } + } + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "BlobMember": "hi!", + "StructMember": { + "foo": "there!" + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "{\"BlobMember\": \"aGkh\", \"StructMember\": {\"foo\": \"dGhlcmUh\"}}" + } + } + ] + }, + { + "description": "Timestamp members", + "metadata": { + "protocol": "json", + "timestampFormat": "iso8601" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "TimeMember": { + "shape": "TimeType" + }, + "StructMember": { + "shape": "TimeContainer" + } + } + }, + "TimeType": { + "type": "timestamp" + }, + "TimeContainer": { + "type": "structure", + "members": { + "foo": { + "shape": "TimeType", + "timestampFormat": "unixTimestamp" + } + } + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "TimeMember": 1398796238, + "StructMember": { + "foo": 1398796238 + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "{\"TimeMember\": \"2014-04-29T18:30:38Z\", \"StructMember\": {\"foo\": 1398796238}}" + } + } + ] + }, + { + "description": "Lists", + "metadata": { + "protocol": "json" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ListMember": { + "shape": "ListType" + } + } + }, + "ListType": { + "type": "list", + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["a", "b"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "{\"ListMember\": [\"a\", \"b\"]}" + } + } + ] + }, + { + "description": "Maps", + "metadata": { + "protocol": "json" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "MapMember": { + "shape": "MapType" + } + } + }, + "MapType": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "NumberList" + } + }, + "StringType": { + "type": "string" + }, + "NumberList": { + "type": "list", + "member": { + "shape": "IntegerType" + } + }, + "IntegerType": { + "type": "integer" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "MapMember": { + "a": [1, 2], + "b": [3, 4] + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "{\"MapMember\": {\"a\": [1, 2], \"b\": [3, 4]}}" + } + } + ] + }, + { + "description": "Ignores extra data", + "metadata": { + "protocol": "json" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "StrType": { + "shape": "StrType" + } + } + }, + "StrType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": {}, + "response": { + "status_code": 200, + "headers": {}, + "body": "{\"foo\": \"bar\"}" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/query-input.json b/AWSiOSSDKTests/query-input.json new file mode 100644 index 00000000000..4f6fa8b7cba --- /dev/null +++ b/AWSiOSSDKTests/query-input.json @@ -0,0 +1,522 @@ +[ + { + "description": "Scalar members", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "Foo": { + "shape": "StringType" + }, + "Bar": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "Foo": "val1", + "Bar": "val2" + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&Foo=val1&Bar=val2" + } + } + ] + }, + { + "description": "Nested structure members", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "StructArg": { + "shape": "StructType" + } + } + }, + "StructType": { + "type": "structure", + "members": { + "ScalarArg": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "StructArg": { + "ScalarArg": "foo" + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&StructArg.ScalarArg=foo" + } + } + ] + }, + { + "description": "List types", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListArg": { + "shape": "ListType" + } + } + }, + "ListType": { + "type": "list", + "member": { + "shape": "Strings" + } + }, + "Strings": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "ListArg": [ + "foo", + "bar", + "baz" + ] + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&ListArg.member.1=foo&ListArg.member.2=bar&ListArg.member.3=baz" + } + } + ] + }, + { + "description": "Flattened list", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ScalarArg": { + "shape": "StringType" + }, + "ListArg": { + "shape": "ListType" + } + } + }, + "ListType": { + "type": "list", + "member": { + "shape": "StringType" + }, + "flattened": true + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "ScalarArg": "foo", + "ListArg": [ + "a", + "b", + "c" + ] + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&ScalarArg=foo&ListArg.1=a&ListArg.2=b&ListArg.3=c" + } + } + ] + }, + { + "description": "Serialize map type", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "MapArg": { + "shape": "StringMap" + } + } + }, + "StringMap": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "MapArg": { + "key1": "val1", + "key2": "val2" + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&MapArg.entry.1.key=key1&MapArg.entry.1.value=val1&MapArg.entry.2.key=key2&MapArg.entry.2.value=val2" + } + } + ] + }, + { + "description": "Base64 encoded Blobs", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "BlobArg": { + "shape": "BlobType" + } + } + }, + "BlobType": { + "type": "blob" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "BlobArg": "foo" + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&BlobArg=Zm9v" + } + } + ] + }, + { + "description": "Timestamp values", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01", + "timestampFormat": "iso8601" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "TimeArg": { + "shape": "TimestampType" + }, + "TimeArg2": { + "shape": "TimestampType2" + } + } + }, + "TimestampType": { + "type": "timestamp" + }, + "TimestampType2": { + "type": "timestamp", + "timestampFormat": "unixTimestamp" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "TimeArg": 1422172800 + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&TimeArg=2015-01-25T08%3A00%3A00Z" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "TimeArg2": 1422172800 + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&TimeArg2=1422172800" + } + } + ] + }, + { + "description": "Recursive shapes", + "metadata": { + "protocol": "query", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "RecursiveStruct": { + "shape": "RecursiveStructType" + } + } + }, + "RecursiveStructType": { + "type": "structure", + "members": { + "NoRecurse": { + "shape": "StringType" + }, + "RecursiveStruct": { + "shape": "RecursiveStructType" + }, + "RecursiveList": { + "shape": "RecursiveListType" + }, + "RecursiveMap": { + "shape": "RecursiveMapType" + } + } + }, + "RecursiveListType": { + "type": "list", + "member": { + "shape": "RecursiveStructType" + } + }, + "RecursiveMapType": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "RecursiveStructType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&RecursiveStruct.NoRecurse=foo" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&RecursiveStruct.RecursiveStruct.NoRecurse=foo" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveStruct": { + "RecursiveStruct": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + } + } + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&RecursiveStruct.RecursiveStruct.RecursiveStruct.RecursiveStruct.NoRecurse=foo" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveList": [ + { + "NoRecurse": "foo" + }, + { + "NoRecurse": "bar" + } + ] + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&RecursiveStruct.RecursiveList.member.1.NoRecurse=foo&RecursiveStruct.RecursiveList.member.2.NoRecurse=bar" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveList": [ + { + "NoRecurse": "foo" + }, + { + "RecursiveStruct": { + "NoRecurse": "bar" + } + } + ] + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&RecursiveStruct.RecursiveList.member.1.NoRecurse=foo&RecursiveStruct.RecursiveList.member.2.RecursiveStruct.NoRecurse=bar" + } + }, + { + "given": { + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveMap": { + "foo": { + "NoRecurse": "foo" + }, + "bar": { + "NoRecurse": "bar" + } + } + } + }, + "serialized": { + "uri": "/", + "body": "Action=OperationName&Version=2014-01-01&RecursiveStruct.RecursiveMap.entry.2.key=foo&RecursiveStruct.RecursiveMap.entry.2.value.NoRecurse=foo&RecursiveStruct.RecursiveMap.entry.1.key=bar&RecursiveStruct.RecursiveMap.entry.1.value.NoRecurse=bar" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/query-output.json b/AWSiOSSDKTests/query-output.json new file mode 100644 index 00000000000..451ab6dca47 --- /dev/null +++ b/AWSiOSSDKTests/query-output.json @@ -0,0 +1,507 @@ +[ + { + "description": "Scalar members", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "Str": { + "shape": "StringType" + }, + "Num": { + "shape": "IntegerType", + "locationName": "FooNum" + }, + "FalseBool": { + "shape": "BooleanType" + }, + "TrueBool": { + "shape": "BooleanType" + }, + "Float": { + "shape": "FloatType" + }, + "Double": { + "shape": "DoubleType" + }, + "Long": { + "shape": "LongType" + }, + "Char": { + "shape": "CharType" + } + } + }, + "StringType": { + "type": "string" + }, + "IntegerType": { + "type": "integer" + }, + "BooleanType": { + "type": "boolean" + }, + "FloatType": { + "type": "float" + }, + "DoubleType": { + "type": "double" + }, + "LongType": { + "type": "long" + }, + "CharType": { + "type": "character" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Str": "myname", + "Num": 123, + "FalseBool": false, + "TrueBool": true, + "Float": 1.2, + "Double": 1.3, + "Long": 200, + "Char": "a" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "myname123falsetrue1.21.3200arequest-id" + } + } + ] + }, + { + "description": "Not all members in response", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "Str": { + "shape": "StringType" + }, + "Num": { + "shape": "IntegerType" + } + } + }, + "StringType": { + "type": "string" + }, + "IntegerType": { + "type": "integer" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Str": "myname" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "mynamerequest-id" + } + } + ] + }, + { + "description": "Custom result wrapper", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "Wrapper", + "members": { + "Str": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Str": "myname" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "mynamerequest-id" + } + } + ] + }, + { + "description": "Blob", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "resultWrapper": "OperationNameResult", + "type": "structure", + "members": { + "Blob": { + "shape": "BlobType" + } + } + }, + "BlobType": { + "type": "blob" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Blob": "value" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "dmFsdWU=requestid" + } + } + ] + }, + { + "description": "Lists", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "ListMember": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123requestid" + } + } + ] + }, + { + "description": "List with custom member name", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "ListMember": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType", + "locationName": "item" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123requestid" + } + } + ] + }, + { + "description": "Flattened List", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "ListMember": { + "shape": "ListType" + } + } + }, + "ListType": { + "type": "list", + "flattened": true, + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123requestid" + } + } + ] + }, + { + "description": "Normal map", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "Map": { + "shape": "StringMap" + } + } + }, + "StringMap": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "StructType" + } + }, + "StringType": { + "type": "string" + }, + "StructType": { + "type": "structure", + "members": { + "foo": { + "shape": "StringType" + } + } + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": { + "foo": "bar" + }, + "baz": { + "foo": "bam" + } + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbamrequestid" + } + } + ] + }, + { + "description": "Flattened map", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "Map": { + "shape": "StringMap", + "flattened": true + } + } + }, + "StringMap": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": "bar", + "baz": "bam" + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbamrequestid" + } + } + ] + }, + { + "description": "Named map", + "metadata": { + "protocol": "query" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "resultWrapper": "OperationNameResult", + "members": { + "Map": { + "shape": "MapType" + } + } + }, + "MapType": { + "type": "map", + "flattened": true, + "key": { + "locationName": "foo", + "shape": "StringType" + }, + "value": { + "locationName": "bar", + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": "bar", + "baz": "bam" + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbamrequestid" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/rest-xml-input.json b/AWSiOSSDKTests/rest-xml-input.json new file mode 100644 index 00000000000..4ee5d974f2e --- /dev/null +++ b/AWSiOSSDKTests/rest-xml-input.json @@ -0,0 +1,1219 @@ +[ + { + "description": "Basic XML serialization", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "Name": { + "shape": "StringType" + }, + "Description": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "Name": "foo", + "Description": "bar" + }, + "serialized": { + "method": "POST", + "body": "foobar", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + }, + { + "given": { + "http": { + "method": "PUT", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "Name": "foo", + "Description": "bar" + }, + "serialized": { + "method": "PUT", + "body": "foobar", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Serialize other scalar types", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "First": { + "shape": "BoolType" + }, + "Second": { + "shape": "BoolType" + }, + "Third": { + "shape": "FloatType" + }, + "Fourth": { + "shape": "IntegerType" + } + } + }, + "BoolType": { + "type": "boolean" + }, + "FloatType": { + "type": "float" + }, + "IntegerType": { + "type": "integer" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "First": true, + "Second": false, + "Third": 1.2, + "Fourth": 3 + }, + "serialized": { + "method": "POST", + "body": "truefalse1.23", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Nested structures", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "SubStructure": { + "shape": "SubStructure" + }, + "Description": { + "shape": "StringType" + } + } + }, + "SubStructure": { + "type": "structure", + "members": { + "Foo": { + "shape": "StringType" + }, + "Bar": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "SubStructure": { + "Foo": "a", + "Bar": "b" + }, + "Description": "baz" + }, + "serialized": { + "method": "POST", + "body": "abbaz", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Nested structures", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "SubStructure": { + "shape": "SubStructure" + }, + "Description": { + "shape": "StringType" + } + } + }, + "SubStructure": { + "type": "structure", + "members": { + "Foo": { + "shape": "StringType" + }, + "Bar": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "SubStructure": {}, + "Description": "baz" + }, + "serialized": { + "method": "POST", + "body": "baz", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Non flattened lists", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListParam": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "ListParam": [ + "one", + "two", + "three" + ] + }, + "serialized": { + "method": "POST", + "body": "onetwothree", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Non flattened lists with locationName", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListParam": { + "shape": "ListShape", + "locationName": "AlternateName" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType", + "locationName": "NotMember" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "ListParam": [ + "one", + "two", + "three" + ] + }, + "serialized": { + "method": "POST", + "body": "onetwothree", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Flattened lists", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListParam": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType" + }, + "flattened": true + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "ListParam": [ + "one", + "two", + "three" + ] + }, + "serialized": { + "method": "POST", + "body": "onetwothree", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Flattened lists with locationName", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListParam": { + "shape": "ListShape", + "locationName": "item" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType" + }, + "flattened": true + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "ListParam": [ + "one", + "two", + "three" + ] + }, + "serialized": { + "method": "POST", + "body": "onetwothree", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "List of structures", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "ListParam": { + "shape": "ListShape", + "locationName": "item" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "SingleFieldStruct" + }, + "flattened": true + }, + "StringType": { + "type": "string" + }, + "SingleFieldStruct": { + "type": "structure", + "members": { + "Element": { + "shape": "StringType", + "locationName": "value" + } + } + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "ListParam": [ + { + "Element": "one" + }, + { + "Element": "two" + }, + { + "Element": "three" + } + ] + }, + "serialized": { + "method": "POST", + "body": "onetwothree", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Blob and timestamp shapes", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "StructureParam": { + "shape": "StructureShape" + } + } + }, + "StructureShape": { + "type": "structure", + "members": { + "t": { + "shape": "TShape" + }, + "b": { + "shape": "BShape" + } + } + }, + "TShape": { + "type": "timestamp", + "timestampFormat": "iso8601" + }, + "BShape": { + "type": "blob" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/2014-01-01/hostedzone" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "StructureParam": { + "t": 1422172800, + "b": "foo" + } + }, + "serialized": { + "method": "POST", + "body": "2015-01-25T08:00:00ZZm9v", + "uri": "/2014-01-01/hostedzone", + "headers": {} + } + } + ] + }, + { + "description": "Header maps", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "foo": { + "shape": "FooShape" + } + } + }, + "FooShape": { + "type": "map", + "location": "headers", + "locationName": "x-foo-", + "key": { + "shape": "FooKeyValue" + }, + "value": { + "shape": "FooKeyValue" + } + }, + "FooKeyValue": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/" + }, + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "name": "OperationName" + }, + "params": { + "foo": { + "a": "b", + "c": "d" + } + }, + "serialized": { + "method": "POST", + "body": "", + "uri": "/", + "headers": { + "x-foo-a": "b", + "x-foo-c": "d" + } + } + } + ] + }, + { + "description": "String payload", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "foo": { + "shape": "FooShape" + } + } + }, + "FooShape": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/" + }, + "input": { + "shape": "InputShape", + "payload": "foo" + }, + "name": "OperationName" + }, + "params": { + "foo": "bar" + }, + "serialized": { + "method": "POST", + "body": "bar", + "uri": "/" + } + } + ] + }, + { + "description": "Blob payload", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "foo": { + "shape": "FooShape" + } + } + }, + "FooShape": { + "type": "blob" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/" + }, + "input": { + "shape": "InputShape", + "payload": "foo" + }, + "name": "OperationName" + }, + "params": { + "foo": "bar" + }, + "serialized": { + "method": "POST", + "body": "bar", + "uri": "/" + } + } + ] + }, + { + "description": "Structure payload", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "foo": { + "shape": "FooShape" + } + } + }, + "FooShape": { + "locationName": "foo", + "type": "structure", + "members": { + "baz": { + "shape": "BazShape" + } + } + }, + "BazShape": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/" + }, + "input": { + "shape": "InputShape", + "payload": "foo" + }, + "name": "OperationName" + }, + "params": { + "foo": { + "baz": "bar" + } + }, + "serialized": { + "method": "POST", + "body": "bar", + "uri": "/" + } + }, + { + "given": { + "http": { + "method": "POST", + "requestUri": "/" + }, + "input": { + "shape": "InputShape", + "payload": "foo" + }, + "name": "OperationName" + }, + "params": {}, + "serialized": { + "method": "POST", + "body": "", + "uri": "/" + } + } + ] + }, + { + "description": "XML Attribute", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "Grant": { + "shape": "Grant" + } + } + }, + "Grant": { + "type": "structure", + "locationName": "Grant", + "members": { + "Grantee": { + "shape": "Grantee" + } + } + }, + "Grantee": { + "type": "structure", + "members": { + "Type": { + "shape": "Type", + "locationName": "xsi:type", + "xmlAttribute": true + }, + "EmailAddress": { + "shape": "StringType" + } + }, + "xmlNamespace": { + "prefix": "xsi", + "uri":"http://www.w3.org/2001/XMLSchema-instance" + } + }, + "Type": { + "type": "string" + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "POST", + "requestUri": "/" + }, + "input": { + "shape": "InputShape", + "payload": "Grant" + }, + "name": "OperationName" + }, + "params": { + "Grant": { + "Grantee": { + "Type": "CanonicalUser", + "EmailAddress": "foo@example.com" + } + } + }, + "serialized": { + "method": "POST", + "body": "foo@example.com", + "uri": "/" + } + } + ] + }, + { + "description": "Greedy keys", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "Bucket": { + "shape": "BucketShape", + "location": "uri" + }, + "Key": { + "shape": "KeyShape", + "location": "uri" + } + } + }, + "BucketShape": { + "type": "string" + }, + "KeyShape": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "shape": "InputShape" + }, + "name": "OperationName" + }, + "params": { + "Key": "testing /123", + "Bucket": "my/bucket" + }, + "serialized": { + "method": "GET", + "body": "", + "uri": "/my%2Fbucket/testing%20/123" + } + } + ] + }, + { + "description": "Omits null query params, but serializes empty strings", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "foo": { + "location":"querystring", + "locationName":"param-name", + "shape": "Foo" + } + } + }, + "Foo": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "name": "OperationName", + "http": { + "method": "POST", + "requestUri": "/path" + }, + "input": { "shape": "InputShape" } + }, + "params": { "foo": null }, + "serialized": { + "method": "POST", + "body": "", + "uri": "/path" + } + }, + { + "given": { + "name": "OperationName", + "http": { + "method": "POST", + "requestUri": "/path?abc=mno" + }, + "input": { "shape": "InputShape" } + }, + "params": { "foo": "" }, + "serialized": { + "method": "POST", + "body": "", + "uri": "/path?abc=mno¶m-name=" + } + } + ] + }, + { + "description": "Recursive shapes", + "metadata": { + "protocol": "rest-xml", + "apiVersion": "2014-01-01" + }, + "shapes": { + "InputShape": { + "type": "structure", + "members": { + "RecursiveStruct": { + "shape": "RecursiveStructType" + } + } + }, + "RecursiveStructType": { + "type": "structure", + "members": { + "NoRecurse": { + "shape": "StringType" + }, + "RecursiveStruct": { + "shape": "RecursiveStructType" + }, + "RecursiveList": { + "shape": "RecursiveListType" + }, + "RecursiveMap": { + "shape": "RecursiveMapType" + } + } + }, + "RecursiveListType": { + "type": "list", + "member": { + "shape": "RecursiveStructType" + } + }, + "RecursiveMapType": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "RecursiveStructType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "http": { + "method": "POST", + "requestUri": "/path" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + }, + "serialized": { + "uri": "/path", + "body": "foo" + } + }, + { + "given": { + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "http": { + "method": "POST", + "requestUri": "/path" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + } + }, + "serialized": { + "uri": "/path", + "body": "foo" + } + }, + { + "given": { + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "http": { + "method": "POST", + "requestUri": "/path" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveStruct": { + "RecursiveStruct": { + "RecursiveStruct": { + "NoRecurse": "foo" + } + } + } + } + }, + "serialized": { + "uri": "/path", + "body": "foo" + } + }, + { + "given": { + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "http": { + "method": "POST", + "requestUri": "/path" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveList": [ + { + "NoRecurse": "foo" + }, + { + "NoRecurse": "bar" + } + ] + } + }, + "serialized": { + "uri": "/path", + "body": "foobar" + } + }, + { + "given": { + "input": { + "shape": "InputShape", + "locationName": "OperationRequest", + "xmlNamespace": {"uri": "https://foo/"} + }, + "http": { + "method": "POST", + "requestUri": "/path" + }, + "name": "OperationName" + }, + "params": { + "RecursiveStruct": { + "RecursiveList": [ + { + "NoRecurse": "foo" + }, + { + "RecursiveStruct": { + "NoRecurse": "bar" + } + } + ] + } + }, + "serialized": { + "uri": "/path", + "body": "foobar" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/rest-xml-output.json b/AWSiOSSDKTests/rest-xml-output.json new file mode 100644 index 00000000000..2268b891a60 --- /dev/null +++ b/AWSiOSSDKTests/rest-xml-output.json @@ -0,0 +1,531 @@ +[ + { + "description": "Scalar members", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ImaHeader": { + "shape": "HeaderShape" + }, + "ImaHeaderLocation": { + "shape": "HeaderShape", + "locationName": "X-Foo" + }, + "Str": { + "shape": "StringType" + }, + "Num": { + "shape": "IntegerType", + "locationName": "FooNum" + }, + "FalseBool": { + "shape": "BooleanType" + }, + "TrueBool": { + "shape": "BooleanType" + }, + "Float": { + "shape": "FloatType" + }, + "Double": { + "shape": "DoubleType" + }, + "Long": { + "shape": "LongType" + }, + "Char": { + "shape": "CharType" + } + } + }, + "StringType": { + "type": "string" + }, + "IntegerType": { + "type": "integer" + }, + "BooleanType": { + "type": "boolean" + }, + "FloatType": { + "type": "float" + }, + "DoubleType": { + "type": "double" + }, + "LongType": { + "type": "long" + }, + "CharType": { + "type": "character" + }, + "HeaderShape": { + "type": "string", + "location": "header" + }, + "StatusShape": { + "type": "integer", + "location": "statusCode" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ImaHeader": "test", + "ImaHeaderLocation": "abc", + "Str": "myname", + "Num": 123, + "FalseBool": false, + "TrueBool": true, + "Float": 1.2, + "Double": 1.3, + "Long": 200, + "Char": "a" + }, + "response": { + "status_code": 200, + "headers": { + "ImaHeader": "test", + "X-Foo": "abc" + }, + "body": "myname123falsetrue1.21.3200a" + } + } + ] + }, + { + "description": "Blob", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Blob": { + "shape": "BlobType" + } + } + }, + "BlobType": { + "type": "blob" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Blob": "value" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "dmFsdWU=" + } + } + ] + }, + { + "description": "Lists", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ListMember": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123" + } + } + ] + }, + { + "description": "List with custom member name", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ListMember": { + "shape": "ListShape" + } + } + }, + "ListShape": { + "type": "list", + "member": { + "shape": "StringType", + "locationName": "item" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123" + } + } + ] + }, + { + "description": "Flattened List", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "ListMember": { + "shape": "StringList", + "flattened": true + } + } + }, + "StringList": { + "type": "list", + "member": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "ListMember": ["abc", "123"] + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc123" + } + } + ] + }, + { + "description": "Normal map", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Map": { + "shape": "StringMap" + } + } + }, + "StringMap": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "SingleStructure" + } + }, + "SingleStructure": { + "type": "structure", + "members": { + "foo": { + "shape": "StringType" + } + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": { + "foo": "bar" + }, + "baz": { + "foo": "bam" + } + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbam" + } + } + ] + }, + { + "description": "Flattened map", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Map": { + "shape": "StringMap", + "flattened": true + } + } + }, + "StringMap": { + "type": "map", + "key": { + "shape": "StringType" + }, + "value": { + "shape": "StringType" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": "bar", + "baz": "bam" + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbam" + } + } + ] + }, + { + "description": "Named map", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "members": { + "Map": { + "shape": "StringMap" + } + } + }, + "StringMap": { + "type": "map", + "key": { + "shape": "StringType", + "locationName": "foo" + }, + "value": { + "shape": "StringType", + "locationName": "bar" + } + }, + "StringType": { + "type": "string" + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Map": { + "qux": "bar", + "baz": "bam" + } + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "quxbarbazbam" + } + } + ] + }, + { + "description": "XML payload", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "payload": "Data", + "members": { + "Header": { + "shape": "StringType", + "location": "header", + "locationName": "X-Foo" + }, + "Data": { + "shape": "SingleStructure" + } + } + }, + "StringType": { + "type": "string" + }, + "SingleStructure": { + "type": "structure", + "members": { + "Foo": { + "shape": "StringType" + } + } + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Header": "baz", + "Data": { + "Foo": "abc" + } + }, + "response": { + "status_code": 200, + "headers": { + "X-Foo": "baz" + }, + "body": "abc" + } + } + ] + }, + { + "description": "Streaming payload", + "metadata": { + "protocol": "rest-xml" + }, + "shapes": { + "OutputShape": { + "type": "structure", + "payload": "Stream", + "members": { + "Stream": { + "shape": "BlobStream" + } + } + }, + "BlobStream": { + "type": "blob", + "streaming": true + } + }, + "cases": [ + { + "given": { + "output": { + "shape": "OutputShape" + }, + "name": "OperationName" + }, + "result": { + "Stream": "abc" + }, + "response": { + "status_code": 200, + "headers": {}, + "body": "abc" + } + } + ] + } +] diff --git a/AWSiOSSDKTests/xmlSampleListBuckets.xml b/AWSiOSSDKTests/xmlSampleListBuckets.xml deleted file mode 100644 index fc3a929f870..00000000000 --- a/AWSiOSSDKTests/xmlSampleListBuckets.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - bcaf1ffd86f461ca5fb16fd081034f - webfile - - - - quotes - 2006-02-03T16:45:09.000Z - - - samples - 2006-02-03T16:41:58.000Z - - - \ No newline at end of file diff --git a/AWSiOSSDKTests/xmlSampleListObjects.xml b/AWSiOSSDKTests/xmlSampleListObjects.xml deleted file mode 100644 index 83d82bb65ca..00000000000 --- a/AWSiOSSDKTests/xmlSampleListObjects.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - quotes - N - Ned - 40 - false - - Nelson - 2006-01-01T12:00:00.000Z - "828ef3fdfa96f00ad9f27c383fc9ac7f" - 5 - STANDARD - - bcaf161ca5fb16fd081034f - webfile - - - - Neo - 2006-01-01T12:00:00.000Z - "828ef3fdfa96f00ad9f27c383fc9ac7f" - 4 - STANDARD - - bcaf1ffd86a5fb16fd081034f - webfile - - - diff --git a/AWSiOSSDKTests/xmlSampleListParts.xml b/AWSiOSSDKTests/xmlSampleListParts.xml deleted file mode 100644 index be81d49a7f5..00000000000 --- a/AWSiOSSDKTests/xmlSampleListParts.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - example-bucket - example-object - XXBsb2FkIElEIGZvciBlbHZpbmcncyVcdS1tb3ZpZS5tMnRzEEEwbG9hZA - - arn:aws:iam::111122223333:user/some-user-11116a31-17b5-4fb7-9df5-b288870f11xx - umat-user-11116a31-17b5-4fb7-9df5-b288870f11xx - - - 75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a - someName - - STANDARD - 1 - 3 - 2 - true - - 2 - 2010-11-10T20:48:34.000Z - "7778aef83f66abc1fa1e8477f296d394" - 10485760 - - - 3 - 2010-11-10T20:48:33.000Z - "aaaa18db4cc2f85cedef654fccc4a4x8" - 10485760 - - \ No newline at end of file diff --git a/AWSiOSSDKTests/xmlSamplePutBucketACLReq.xml b/AWSiOSSDKTests/xmlSamplePutBucketACLReq.xml deleted file mode 100644 index e1caa4eb7ca..00000000000 --- a/AWSiOSSDKTests/xmlSamplePutBucketACLReq.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - 852b113e7a2f2510267 - OwnerDisplayName - - - - - displayNameJohn - 852b113e7a2f2510267 - - FULL_CONTROL - - - - ID2 - john@amazon.com - - WRITE - - - \ No newline at end of file diff --git a/AWSiOSSDKv2.podspec b/AWSiOSSDKv2.podspec index b641c3a3f1f..8f36f50975e 100644 --- a/AWSiOSSDKv2.podspec +++ b/AWSiOSSDKv2.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSiOSSDKv2' - s.version = '2.0.5' + s.version = '2.0.6' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.dependency 'Bolts', '~> 1.1.0' s.dependency 'Mantle', '~> 1.4.1' - s.dependency 'TMCache', '~> 1.2.0' + s.dependency 'TMCache', '~> 1.2.1' s.dependency 'CSURITemplate', '~> 0.3.0' s.dependency 'XMLDictionary', '~> 1.4.0' s.dependency 'UICKeyChainStore', '~> 1.0.5' @@ -27,8 +27,8 @@ Pod::Spec.new do |s| s.requires_arc = true s.subspec 'AWSCore' do |aws| - aws.source_files = 'AmazonCore/*.{h,m}', 'AmazonCore/**/*.{h,m}', 'AWSCore/*.{h,m}', 'AWSCore/**/*.{h,m}' - aws.resources = ['AWSCore/STS/Resources/*.json'] + aws.source_files = 'AWSCore/*.{h,m}', 'AWSCore/**/*.{h,m}' + aws.resources = ['AWSCore/**/Resources/*.json'] end s.subspec 'AutoScaling' do |autoscaling| diff --git a/AWSiOSSDKv2.xcodeproj/project.pbxproj b/AWSiOSSDKv2.xcodeproj/project.pbxproj index d727ea0a48d..267b3330b6d 100644 --- a/AWSiOSSDKv2.xcodeproj/project.pbxproj +++ b/AWSiOSSDKv2.xcodeproj/project.pbxproj @@ -10,13 +10,13 @@ 38627E3F19253F5500EF30EF /* AWSCognitoIdentityServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 38627E3E19253F5500EF30EF /* AWSCognitoIdentityServiceTests.m */; }; 388CA0A21926CA3800AF5A50 /* AWSCognitoCredentialsProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 388CA0A11926CA3800AF5A50 /* AWSCognitoCredentialsProviderTests.m */; }; 959EA273F67F43CFA2ECD496 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A0CE70F1DF4EEE8E04D464 /* libPods.a */; }; + BD1861BF19A41395003C8E42 /* ec2-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BD1861BD19A41395003C8E42 /* ec2-input.json */; }; + BD1861C019A41395003C8E42 /* ec2-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BD1861BE19A41395003C8E42 /* ec2-output.json */; }; BD19ED05188F15EB001F5B98 /* AWSS3Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD19ED04188F15EB001F5B98 /* AWSS3Tests.m */; }; - BD324C66194BA556003369D0 /* ec2-2014-05-01.json in Resources */ = {isa = PBXBuildFile; fileRef = CE896C84194A8619000DBB3C /* ec2-2014-05-01.json */; }; - BD47982D18B2BA930028B0DB /* xmlSampleListBuckets.xml in Resources */ = {isa = PBXBuildFile; fileRef = BD47982718B2BA930028B0DB /* xmlSampleListBuckets.xml */; }; - BD47982E18B2BA930028B0DB /* xmlSampleListObjects.xml in Resources */ = {isa = PBXBuildFile; fileRef = BD47982818B2BA930028B0DB /* xmlSampleListObjects.xml */; }; - BD47982F18B2BA930028B0DB /* xmlSampleListParts.xml in Resources */ = {isa = PBXBuildFile; fileRef = BD47982918B2BA930028B0DB /* xmlSampleListParts.xml */; }; - BD47983018B2BA930028B0DB /* xmlSamplePutBucketACLReq.xml in Resources */ = {isa = PBXBuildFile; fileRef = BD47982A18B2BA930028B0DB /* xmlSamplePutBucketACLReq.xml */; }; - BD9CC214193CFF0700780456 /* AWSERSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD9CC213193CFF0700780456 /* AWSERSTests.m */; }; + BD25A58819940772003401CE /* cib-2014-06-30.json in Resources */ = {isa = PBXBuildFile; fileRef = CE896C86194A8637000DBB3C /* cib-2014-06-30.json */; }; + BD25A589199407C9003401CE /* mobileanalytics-2014-06-30.json in Resources */ = {isa = PBXBuildFile; fileRef = CE6F90EB196DFE1E004B47C4 /* mobileanalytics-2014-06-30.json */; }; + BD324C66194BA556003369D0 /* ec2-2014-06-15.json in Resources */ = {isa = PBXBuildFile; fileRef = CE896C84194A8619000DBB3C /* ec2-2014-06-15.json */; }; + BD9CC214193CFF0700780456 /* AWSEventRecorderServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD9CC213193CFF0700780456 /* AWSEventRecorderServiceTests.m */; }; BDBA90BA18EE43B6004EE131 /* AWSValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = CE55F35218DB716B00F8C75F /* AWSValidation.m */; }; BDBA90BB18EE43BA004EE131 /* AWSURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = CE55F35018DB716B00F8C75F /* AWSURLResponseSerialization.m */; }; BDBA90BC18EE43BE004EE131 /* AWSURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = CE55F34E18DB716B00F8C75F /* AWSURLRequestSerialization.m */; }; @@ -50,6 +50,12 @@ BDD11E30193FA67100AF60E1 /* TestEventObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = BDD11E2E193FA67100AF60E1 /* TestEventObserver.m */; }; BDD11E32193FA70C00AF60E1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD11E31193FA70C00AF60E1 /* SystemConfiguration.framework */; }; BDD11E33193FA78000AF60E1 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = EFEAC89419295311005FEDE4 /* libsqlite3.dylib */; }; + BDD196CD198AFF2200CC94A2 /* json-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BDD196C8198AFF2200CC94A2 /* json-input.json */; }; + BDD196CE198AFF2200CC94A2 /* query-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BDD196C9198AFF2200CC94A2 /* query-input.json */; }; + BDD196D0198AFF2200CC94A2 /* rest-xml-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BDD196CB198AFF2200CC94A2 /* rest-xml-input.json */; }; + BDD196D7198AFF2C00CC94A2 /* json-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BDD196D2198AFF2C00CC94A2 /* json-output.json */; }; + BDD196D8198AFF2C00CC94A2 /* query-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BDD196D3198AFF2C00CC94A2 /* query-output.json */; }; + BDD196DA198AFF2C00CC94A2 /* rest-xml-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BDD196D5198AFF2C00CC94A2 /* rest-xml-output.json */; }; BDD39A0E193E652100C712BD /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD39A0A193E646C00C712BD /* libz.dylib */; }; BDD39A11193E8D4500C712BD /* AWSAnalyticsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BDD39A10193E8D4500C712BD /* AWSAnalyticsTests.m */; }; BDD77705193FBF6000F04070 /* (null) in Sources */ = {isa = PBXBuildFile; }; @@ -103,15 +109,18 @@ CE0EFAEF193D29B9002A896B /* AWSCognitoIdentityService.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0EFAEB193D29B9002A896B /* AWSCognitoIdentityService.m */; }; CE0EFAF0193D29B9002A896B /* AWSCognitoIdentityServiceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0EFAED193D29B9002A896B /* AWSCognitoIdentityServiceModel.m */; }; CE160B2119774315001ABF94 /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CE160B2019774315001ABF94 /* AWSTestUtility.m */; }; + CE16EEE119916C5100A318A3 /* AWSCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = CE16EEDA19916C5100A318A3 /* AWSCategory.m */; }; + CE16EEE219916C5100A318A3 /* AWSLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = CE16EEDC19916C5100A318A3 /* AWSLogging.m */; }; + CE16EEE319916C5100A318A3 /* AWSModel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE16EEDE19916C5100A318A3 /* AWSModel.m */; }; + CE16EEE419916C5100A318A3 /* AWSSynchronizedMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = CE16EEE019916C5100A318A3 /* AWSSynchronizedMutableDictionary.m */; }; + CE16EEEA19916C8400A318A3 /* AWSURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE16EEE819916C8400A318A3 /* AWSURLSessionManager.m */; }; CE1C9DE51936CE38007B6F33 /* AWSClockSkewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1C9DE41936CE38007B6F33 /* AWSClockSkewTests.m */; }; - CE287DD418EB6CDC00603067 /* AZLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = CE287DD118EB5F4300603067 /* AZLogging.m */; }; CE2C174718D0D8CF003FE9AA /* AWSSTSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2C174618D0D8CF003FE9AA /* AWSSTSTests.m */; }; CE314853187B577A0068883B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE5D83E71857AA3100907C25 /* XCTest.framework */; }; CE314854187B577A0068883B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE5D83D91857AA3100907C25 /* Foundation.framework */; }; CE31485B187B577A0068883B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE314859187B577A0068883B /* InfoPlist.strings */; }; CE314867187B57F50068883B /* AWSDynamoDBTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE314864187B57F50068883B /* AWSDynamoDBTests.m */; }; CE314868187B57F50068883B /* AWSCoreTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE314865187B57F50068883B /* AWSCoreTests.m */; }; - CE314869187B57F50068883B /* AmazonCoreTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE314866187B57F50068883B /* AmazonCoreTests.m */; }; CE31486B187B58090068883B /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = CE31486A187B58090068883B /* credentials.json */; }; CE31486D187B59220068883B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE31486C187B59220068883B /* UIKit.framework */; }; CE372B7318DA874000D2CFD2 /* AWSAutoScaling.m in Sources */ = {isa = PBXBuildFile; fileRef = CE372B1618DA874000D2CFD2 /* AWSAutoScaling.m */; }; @@ -136,8 +145,6 @@ CE372B8618DA874000D2CFD2 /* AWSSNSModel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE372B5F18DA874000D2CFD2 /* AWSSNSModel.m */; }; CE372B8718DA874000D2CFD2 /* AWSSQS.m in Sources */ = {isa = PBXBuildFile; fileRef = CE372B6518DA874000D2CFD2 /* AWSSQS.m */; }; CE372B8818DA874000D2CFD2 /* AWSSQSModel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE372B6718DA874000D2CFD2 /* AWSSQSModel.m */; }; - CE483F8D1949197800781076 /* AZModel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE483F8C1949197800781076 /* AZModel.m */; }; - CE4AB8D6190856ED00E0600E /* AZCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = CE4AB8D5190856ED00E0600E /* AZCategory.m */; }; CE4AB8D919085CFB00E0600E /* AWSSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = CE4AB8D819085CFB00E0600E /* AWSSerialization.m */; }; CE5312B41922DFFA005DAFA3 /* AWSDynamoDBObjectMapper.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5312B31922DFFA005DAFA3 /* AWSDynamoDBObjectMapper.m */; }; CE55F37718DB7FCC00F8C75F /* autoscaling-2011-01-01.json in Resources */ = {isa = PBXBuildFile; fileRef = CE372B1A18DA874000D2CFD2 /* autoscaling-2011-01-01.json */; }; @@ -150,9 +157,6 @@ CE55F37F18DB7FCC00F8C75F /* sdb-2009-04-15.json in Resources */ = {isa = PBXBuildFile; fileRef = CE372B5918DA874000D2CFD2 /* sdb-2009-04-15.json */; }; CE55F38018DB7FCC00F8C75F /* sns-2010-03-31.json in Resources */ = {isa = PBXBuildFile; fileRef = CE372B6118DA874000D2CFD2 /* sns-2010-03-31.json */; }; CE55F38118DB7FCC00F8C75F /* sqs-2012-11-05.json in Resources */ = {isa = PBXBuildFile; fileRef = CE372B6918DA874000D2CFD2 /* sqs-2012-11-05.json */; }; - CE55F39918DB806000F8C75F /* AZNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = CE55F38E18DB806000F8C75F /* AZNetworking.m */; }; - CE55F39B18DB806000F8C75F /* AZURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE55F39218DB806000F8C75F /* AZURLSessionManager.m */; }; - CE55F39C18DB806000F8C75F /* AZSynchronizedMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = CE55F39518DB806000F8C75F /* AZSynchronizedMutableDictionary.m */; }; CE5D83DA1857AA3100907C25 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE5D83D91857AA3100907C25 /* Foundation.framework */; }; CE8FEAA318D3B18600EC90A6 /* AWSElasticLoadBalancingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE8FEAA218D3B18600EC90A6 /* AWSElasticLoadBalancingTests.m */; }; CE8FEAA618D3B62100EC90A6 /* AWSCloudWatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE8FEAA518D3B62100EC90A6 /* AWSCloudWatchTests.m */; }; @@ -167,7 +171,7 @@ EA057B90195CD0B2009DD4F6 /* AWSEventRecorderServiceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EA057B8C195CD0B2009DD4F6 /* AWSEventRecorderServiceModel.m */; }; EA057B91195CD0B2009DD4F6 /* AWSEventRecorderService.m in Sources */ = {isa = PBXBuildFile; fileRef = EA057B8E195CD0B2009DD4F6 /* AWSEventRecorderService.m */; }; EA2AF80C195E206B007DDDD4 /* AWSMobileAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = EA2AF764195E206B007DDDD4 /* AWSMobileAnalytics.m */; }; - EA2AF80D195E206B007DDDD4 /* AWSMobileAnalyticsClientConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = EA2AF767195E206B007DDDD4 /* AWSMobileAnalyticsClientConfiguration.m */; }; + EA2AF80D195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = EA2AF767195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.m */; }; EA2AF80E195E206B007DDDD4 /* AWSMobileAnalyticsIOSClientContext.m in Sources */ = {isa = PBXBuildFile; fileRef = EA2AF76B195E206B007DDDD4 /* AWSMobileAnalyticsIOSClientContext.m */; }; EA2AF80F195E206B007DDDD4 /* AWSMobileAnalyticsCountDownLatch.m in Sources */ = {isa = PBXBuildFile; fileRef = EA2AF76D195E206B007DDDD4 /* AWSMobileAnalyticsCountDownLatch.m */; }; EA2AF810195E206B007DDDD4 /* AWSMobileAnalyticsDefaultContext.m in Sources */ = {isa = PBXBuildFile; fileRef = EA2AF76E195E206B007DDDD4 /* AWSMobileAnalyticsDefaultContext.m */; }; @@ -256,12 +260,10 @@ 38627E3E19253F5500EF30EF /* AWSCognitoIdentityServiceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSCognitoIdentityServiceTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 388CA0A11926CA3800AF5A50 /* AWSCognitoCredentialsProviderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSCognitoCredentialsProviderTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; AAF85B9700504764BCD966E3 /* Pods.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.xcconfig; path = Pods/Pods.xcconfig; sourceTree = ""; }; + BD1861BD19A41395003C8E42 /* ec2-input.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "ec2-input.json"; sourceTree = ""; }; + BD1861BE19A41395003C8E42 /* ec2-output.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "ec2-output.json"; sourceTree = ""; }; BD19ED04188F15EB001F5B98 /* AWSS3Tests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSS3Tests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - BD47982718B2BA930028B0DB /* xmlSampleListBuckets.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = xmlSampleListBuckets.xml; sourceTree = ""; }; - BD47982818B2BA930028B0DB /* xmlSampleListObjects.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = xmlSampleListObjects.xml; sourceTree = ""; }; - BD47982918B2BA930028B0DB /* xmlSampleListParts.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = xmlSampleListParts.xml; sourceTree = ""; }; - BD47982A18B2BA930028B0DB /* xmlSamplePutBucketACLReq.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = xmlSamplePutBucketACLReq.xml; sourceTree = ""; }; - BD9CC213193CFF0700780456 /* AWSERSTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSERSTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + BD9CC213193CFF0700780456 /* AWSEventRecorderServiceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSEventRecorderServiceTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; BDC8315E1919725000A01D20 /* AWSS3TransferManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSS3TransferManagerTests.m; sourceTree = ""; }; BDD11DEE193FA13600AF60E1 /* AWSiOSSDKv2AnalyticsTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSiOSSDKv2AnalyticsTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; BDD11DF4193FA13600AF60E1 /* AWSiOSSDKv2AnalyticsTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AWSiOSSDKv2AnalyticsTests-Info.plist"; sourceTree = ""; }; @@ -297,6 +299,12 @@ BDD11E2D193FA67100AF60E1 /* TestEventObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = TestEventObserver.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; BDD11E2E193FA67100AF60E1 /* TestEventObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = TestEventObserver.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; BDD11E31193FA70C00AF60E1 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; + BDD196C8198AFF2200CC94A2 /* json-input.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "json-input.json"; sourceTree = ""; }; + BDD196C9198AFF2200CC94A2 /* query-input.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "query-input.json"; sourceTree = ""; }; + BDD196CB198AFF2200CC94A2 /* rest-xml-input.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "rest-xml-input.json"; sourceTree = ""; }; + BDD196D2198AFF2C00CC94A2 /* json-output.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "json-output.json"; sourceTree = ""; }; + BDD196D3198AFF2C00CC94A2 /* query-output.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "query-output.json"; sourceTree = ""; }; + BDD196D5198AFF2C00CC94A2 /* rest-xml-output.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "rest-xml-output.json"; sourceTree = ""; }; BDD39A0A193E646C00C712BD /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; BDD39A10193E8D4500C712BD /* AWSAnalyticsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSAnalyticsTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; BDD77713193FDADE00F04070 /* AIConfigurationIntegrationTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AIConfigurationIntegrationTests.h; sourceTree = ""; }; @@ -384,15 +392,23 @@ CE0D85DA18D38AAB00D41F8A /* AWSSimpleDBTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSSimpleDBTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE0D85DC18D38FCA00D41F8A /* AWSSESTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSSESTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE0EFAEA193D29B9002A896B /* AWSCognitoIdentityService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSCognitoIdentityService.h; sourceTree = ""; }; - CE0EFAEB193D29B9002A896B /* AWSCognitoIdentityService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSCognitoIdentityService.m; sourceTree = ""; }; + CE0EFAEB193D29B9002A896B /* AWSCognitoIdentityService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSCognitoIdentityService.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE0EFAEC193D29B9002A896B /* AWSCognitoIdentityServiceModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSCognitoIdentityServiceModel.h; sourceTree = ""; }; - CE0EFAED193D29B9002A896B /* AWSCognitoIdentityServiceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSCognitoIdentityServiceModel.m; sourceTree = ""; }; + CE0EFAED193D29B9002A896B /* AWSCognitoIdentityServiceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSCognitoIdentityServiceModel.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE0EFAEE193D29B9002A896B /* CognitoIdentityService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CognitoIdentityService.h; sourceTree = ""; }; CE160B2019774315001ABF94 /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSTestUtility.m; sourceTree = ""; }; CE160B2219774365001ABF94 /* AWSTestUtility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AWSTestUtility.h; sourceTree = ""; }; + CE16EED919916C5100A318A3 /* AWSCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSCategory.h; sourceTree = ""; }; + CE16EEDA19916C5100A318A3 /* AWSCategory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSCategory.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + CE16EEDB19916C5100A318A3 /* AWSLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AWSLogging.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + CE16EEDC19916C5100A318A3 /* AWSLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSLogging.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + CE16EEDD19916C5100A318A3 /* AWSModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSModel.h; sourceTree = ""; }; + CE16EEDE19916C5100A318A3 /* AWSModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSModel.m; sourceTree = ""; }; + CE16EEDF19916C5100A318A3 /* AWSSynchronizedMutableDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSynchronizedMutableDictionary.h; sourceTree = ""; }; + CE16EEE019916C5100A318A3 /* AWSSynchronizedMutableDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSSynchronizedMutableDictionary.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + CE16EEE719916C8400A318A3 /* AWSURLSessionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSURLSessionManager.h; sourceTree = ""; }; + CE16EEE819916C8400A318A3 /* AWSURLSessionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSURLSessionManager.m; sourceTree = ""; }; CE1C9DE41936CE38007B6F33 /* AWSClockSkewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSClockSkewTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - CE287DD118EB5F4300603067 /* AZLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AZLogging.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - CE287DD218EB5F4300603067 /* AZLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AZLogging.h; sourceTree = ""; }; CE2C174618D0D8CF003FE9AA /* AWSSTSTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSSTSTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE314852187B577A0068883B /* AWSiOSSDKv2Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSiOSSDKv2Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CE314858187B577A0068883B /* AWSiOSSDKv2Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AWSiOSSDKv2Tests-Info.plist"; sourceTree = ""; }; @@ -400,7 +416,6 @@ CE31485E187B577A0068883B /* AWSiOSSDKv2Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = "AWSiOSSDKv2Tests-Prefix.pch"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE314864187B57F50068883B /* AWSDynamoDBTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSDynamoDBTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE314865187B57F50068883B /* AWSCoreTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSCoreTests.m; sourceTree = ""; }; - CE314866187B57F50068883B /* AmazonCoreTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AmazonCoreTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE31486A187B58090068883B /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = credentials.json; sourceTree = ""; }; CE31486C187B59220068883B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; CE372B1418DA874000D2CFD2 /* AutoScaling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = AutoScaling.h; path = AutoScaling/AutoScaling.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; @@ -418,36 +433,36 @@ CE372B2418DA874000D2CFD2 /* AWSDynamoDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSDynamoDB.h; path = DynamoDB/AWSDynamoDB.h; sourceTree = SOURCE_ROOT; }; CE372B2518DA874000D2CFD2 /* AWSDynamoDB.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSDynamoDB.m; path = DynamoDB/AWSDynamoDB.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B2618DA874000D2CFD2 /* AWSDynamoDBModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSDynamoDBModel.h; path = DynamoDB/AWSDynamoDBModel.h; sourceTree = SOURCE_ROOT; }; - CE372B2718DA874000D2CFD2 /* AWSDynamoDBModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSDynamoDBModel.m; path = DynamoDB/AWSDynamoDBModel.m; sourceTree = SOURCE_ROOT; }; + CE372B2718DA874000D2CFD2 /* AWSDynamoDBModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSDynamoDBModel.m; path = DynamoDB/AWSDynamoDBModel.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B2818DA874000D2CFD2 /* DynamoDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DynamoDB.h; path = DynamoDB/DynamoDB.h; sourceTree = SOURCE_ROOT; }; CE372B2A18DA874000D2CFD2 /* dynamodb-2012-08-10.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "dynamodb-2012-08-10.json"; path = "DynamoDB/Resources/dynamodb-2012-08-10.json"; sourceTree = SOURCE_ROOT; }; CE372B2C18DA874000D2CFD2 /* AWSEC2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSEC2.h; path = EC2/AWSEC2.h; sourceTree = SOURCE_ROOT; }; CE372B2D18DA874000D2CFD2 /* AWSEC2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSEC2.m; path = EC2/AWSEC2.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B2E18DA874000D2CFD2 /* AWSEC2Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSEC2Model.h; path = EC2/AWSEC2Model.h; sourceTree = SOURCE_ROOT; }; - CE372B2F18DA874000D2CFD2 /* AWSEC2Model.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSEC2Model.m; path = EC2/AWSEC2Model.m; sourceTree = SOURCE_ROOT; }; + CE372B2F18DA874000D2CFD2 /* AWSEC2Model.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSEC2Model.m; path = EC2/AWSEC2Model.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B3018DA874000D2CFD2 /* EC2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EC2.h; path = EC2/EC2.h; sourceTree = SOURCE_ROOT; }; CE372B3418DA874000D2CFD2 /* AWSElasticLoadBalancing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSElasticLoadBalancing.h; path = ElasticLoadBalancing/AWSElasticLoadBalancing.h; sourceTree = SOURCE_ROOT; }; CE372B3518DA874000D2CFD2 /* AWSElasticLoadBalancing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSElasticLoadBalancing.m; path = ElasticLoadBalancing/AWSElasticLoadBalancing.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B3618DA874000D2CFD2 /* AWSElasticLoadBalancingModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSElasticLoadBalancingModel.h; path = ElasticLoadBalancing/AWSElasticLoadBalancingModel.h; sourceTree = SOURCE_ROOT; }; - CE372B3718DA874000D2CFD2 /* AWSElasticLoadBalancingModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSElasticLoadBalancingModel.m; path = ElasticLoadBalancing/AWSElasticLoadBalancingModel.m; sourceTree = SOURCE_ROOT; }; + CE372B3718DA874000D2CFD2 /* AWSElasticLoadBalancingModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSElasticLoadBalancingModel.m; path = ElasticLoadBalancing/AWSElasticLoadBalancingModel.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B3818DA874000D2CFD2 /* ElasticLoadBalancing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ElasticLoadBalancing.h; path = ElasticLoadBalancing/ElasticLoadBalancing.h; sourceTree = SOURCE_ROOT; }; CE372B3A18DA874000D2CFD2 /* elasticloadbalancing-2012-06-01.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "elasticloadbalancing-2012-06-01.json"; path = "ElasticLoadBalancing/Resources/elasticloadbalancing-2012-06-01.json"; sourceTree = SOURCE_ROOT; }; CE372B3C18DA874000D2CFD2 /* AWSKinesis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSKinesis.h; path = Kinesis/AWSKinesis.h; sourceTree = SOURCE_ROOT; }; CE372B3D18DA874000D2CFD2 /* AWSKinesis.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSKinesis.m; path = Kinesis/AWSKinesis.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B3E18DA874000D2CFD2 /* AWSKinesisModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSKinesisModel.h; path = Kinesis/AWSKinesisModel.h; sourceTree = SOURCE_ROOT; }; - CE372B3F18DA874000D2CFD2 /* AWSKinesisModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSKinesisModel.m; path = Kinesis/AWSKinesisModel.m; sourceTree = SOURCE_ROOT; }; + CE372B3F18DA874000D2CFD2 /* AWSKinesisModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSKinesisModel.m; path = Kinesis/AWSKinesisModel.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B4018DA874000D2CFD2 /* Kinesis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Kinesis.h; path = Kinesis/Kinesis.h; sourceTree = SOURCE_ROOT; }; CE372B4218DA874000D2CFD2 /* kinesis-2013-12-02.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "kinesis-2013-12-02.json"; path = "Kinesis/Resources/kinesis-2013-12-02.json"; sourceTree = SOURCE_ROOT; }; CE372B4418DA874000D2CFD2 /* AWSS3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSS3.h; path = S3/AWSS3.h; sourceTree = SOURCE_ROOT; }; CE372B4518DA874000D2CFD2 /* AWSS3.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSS3.m; path = S3/AWSS3.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B4618DA874000D2CFD2 /* AWSS3Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSS3Model.h; path = S3/AWSS3Model.h; sourceTree = SOURCE_ROOT; }; - CE372B4718DA874000D2CFD2 /* AWSS3Model.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSS3Model.m; path = S3/AWSS3Model.m; sourceTree = SOURCE_ROOT; }; + CE372B4718DA874000D2CFD2 /* AWSS3Model.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSS3Model.m; path = S3/AWSS3Model.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B4918DA874000D2CFD2 /* s3-2006-03-01.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "s3-2006-03-01.json"; path = "S3/Resources/s3-2006-03-01.json"; sourceTree = SOURCE_ROOT; }; CE372B4A18DA874000D2CFD2 /* S3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = S3.h; path = S3/S3.h; sourceTree = SOURCE_ROOT; }; CE372B4C18DA874000D2CFD2 /* AWSSES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSSES.h; path = SES/AWSSES.h; sourceTree = SOURCE_ROOT; }; CE372B4D18DA874000D2CFD2 /* AWSSES.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSSES.m; path = SES/AWSSES.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B4E18DA874000D2CFD2 /* AWSSESModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSSESModel.h; path = SES/AWSSESModel.h; sourceTree = SOURCE_ROOT; }; - CE372B4F18DA874000D2CFD2 /* AWSSESModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSSESModel.m; path = SES/AWSSESModel.m; sourceTree = SOURCE_ROOT; }; + CE372B4F18DA874000D2CFD2 /* AWSSESModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSSESModel.m; path = SES/AWSSESModel.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE372B5118DA874000D2CFD2 /* email-2010-12-01.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "email-2010-12-01.json"; path = "SES/Resources/email-2010-12-01.json"; sourceTree = SOURCE_ROOT; }; CE372B5218DA874000D2CFD2 /* SES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SES.h; path = SES/SES.h; sourceTree = SOURCE_ROOT; }; CE372B5418DA874000D2CFD2 /* AWSSimpleDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSSimpleDB.h; path = SimpleDB/AWSSimpleDB.h; sourceTree = SOURCE_ROOT; }; @@ -468,10 +483,6 @@ CE372B6718DA874000D2CFD2 /* AWSSQSModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSSQSModel.m; path = SQS/AWSSQSModel.m; sourceTree = SOURCE_ROOT; }; CE372B6918DA874000D2CFD2 /* sqs-2012-11-05.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "sqs-2012-11-05.json"; path = "SQS/Resources/sqs-2012-11-05.json"; sourceTree = SOURCE_ROOT; }; CE372B6A18DA874000D2CFD2 /* SQS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQS.h; path = SQS/SQS.h; sourceTree = SOURCE_ROOT; }; - CE483F8B1949196F00781076 /* AZModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AZModel.h; sourceTree = ""; }; - CE483F8C1949197800781076 /* AZModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AZModel.m; sourceTree = ""; }; - CE4AB8D4190856ED00E0600E /* AZCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AZCategory.h; sourceTree = ""; }; - CE4AB8D5190856ED00E0600E /* AZCategory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AZCategory.m; sourceTree = ""; }; CE4AB8D719085CFB00E0600E /* AWSSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSerialization.h; sourceTree = ""; }; CE4AB8D819085CFB00E0600E /* AWSSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSSerialization.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE5312B21922DFFA005DAFA3 /* AWSDynamoDBObjectMapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSDynamoDBObjectMapper.h; sourceTree = ""; }; @@ -481,7 +492,7 @@ CE55F34018DB716B00F8C75F /* AWSSignature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSSignature.h; path = AWSCore/Authentication/AWSSignature.h; sourceTree = SOURCE_ROOT; }; CE55F34118DB716B00F8C75F /* AWSSignature.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSSignature.m; path = AWSCore/Authentication/AWSSignature.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE55F34218DB716B00F8C75F /* AWSCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = AWSCore.h; path = AWSCore/AWSCore.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - CE55F34418DB716B00F8C75F /* AWSNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSNetworking.h; path = AWSCore/Networking/AWSNetworking.h; sourceTree = SOURCE_ROOT; }; + CE55F34418DB716B00F8C75F /* AWSNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = AWSNetworking.h; path = AWSCore/Networking/AWSNetworking.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; CE55F34518DB716B00F8C75F /* AWSNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSNetworking.m; path = AWSCore/Networking/AWSNetworking.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE55F34B18DB716B00F8C75F /* AWSURLRequestRetryHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSURLRequestRetryHandler.h; path = AWSCore/Serialization/AWSURLRequestRetryHandler.h; sourceTree = SOURCE_ROOT; }; CE55F34C18DB716B00F8C75F /* AWSURLRequestRetryHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSURLRequestRetryHandler.m; path = AWSCore/Serialization/AWSURLRequestRetryHandler.m; sourceTree = SOURCE_ROOT; }; @@ -495,20 +506,13 @@ CE55F35918DB716B00F8C75F /* AWSService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSService.m; path = AWSCore/Service/AWSService.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE55F35E18DB716B00F8C75F /* AWSXMLWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSXMLWriter.h; path = AWSCore/XMLWriter/AWSXMLWriter.h; sourceTree = SOURCE_ROOT; }; CE55F35F18DB716B00F8C75F /* AWSXMLWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSXMLWriter.m; path = AWSCore/XMLWriter/AWSXMLWriter.m; sourceTree = SOURCE_ROOT; }; - CE55F38418DB806000F8C75F /* AmazonCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = AmazonCore.h; path = AmazonCore/AmazonCore.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - CE55F38D18DB806000F8C75F /* AZNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AZNetworking.h; path = AmazonCore/Networking/AZNetworking.h; sourceTree = SOURCE_ROOT; }; - CE55F38E18DB806000F8C75F /* AZNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AZNetworking.m; path = AmazonCore/Networking/AZNetworking.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - CE55F39118DB806000F8C75F /* AZURLSessionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AZURLSessionManager.h; path = AmazonCore/Networking/AZURLSessionManager.h; sourceTree = SOURCE_ROOT; }; - CE55F39218DB806000F8C75F /* AZURLSessionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AZURLSessionManager.m; path = AmazonCore/Networking/AZURLSessionManager.m; sourceTree = SOURCE_ROOT; }; - CE55F39418DB806000F8C75F /* AZSynchronizedMutableDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AZSynchronizedMutableDictionary.h; path = AmazonCore/Utility/AZSynchronizedMutableDictionary.h; sourceTree = SOURCE_ROOT; }; - CE55F39518DB806000F8C75F /* AZSynchronizedMutableDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AZSynchronizedMutableDictionary.m; path = AmazonCore/Utility/AZSynchronizedMutableDictionary.m; sourceTree = SOURCE_ROOT; }; CE571E2D1937D1F00027826E /* Podfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Podfile; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; CE5D83D61857AA3100907C25 /* libAWSiOSSDKv2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSiOSSDKv2.a; sourceTree = BUILT_PRODUCTS_DIR; }; CE5D83D91857AA3100907C25 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; CE5D83DD1857AA3100907C25 /* AWSiOSSDKv2-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AWSiOSSDKv2-Prefix.pch"; sourceTree = ""; }; CE5D83E71857AA3100907C25 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; CE6F90EB196DFE1E004B47C4 /* mobileanalytics-2014-06-30.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "mobileanalytics-2014-06-30.json"; path = "EventRecorderService/Resources/mobileanalytics-2014-06-30.json"; sourceTree = ""; }; - CE896C84194A8619000DBB3C /* ec2-2014-05-01.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "ec2-2014-05-01.json"; sourceTree = ""; }; + CE896C84194A8619000DBB3C /* ec2-2014-06-15.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "ec2-2014-06-15.json"; sourceTree = ""; }; CE896C86194A8637000DBB3C /* cib-2014-06-30.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "cib-2014-06-30.json"; sourceTree = ""; }; CE8FEAA218D3B18600EC90A6 /* AWSElasticLoadBalancingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSElasticLoadBalancingTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CE8FEAA518D3B62100EC90A6 /* AWSCloudWatchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSCloudWatchTests.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; @@ -524,13 +528,13 @@ CEE68C16193FB11A00259EFF /* AWSKinesisRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSKinesisRecorder.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; CEE68C181940000500259EFF /* AWSKinesisRecorderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSKinesisRecorderTests.m; sourceTree = ""; }; EA057B8B195CD0B2009DD4F6 /* EventRecorderService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EventRecorderService.h; path = EventRecorderService/EventRecorderService.h; sourceTree = ""; }; - EA057B8C195CD0B2009DD4F6 /* AWSEventRecorderServiceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSEventRecorderServiceModel.m; path = EventRecorderService/AWSEventRecorderServiceModel.m; sourceTree = ""; }; + EA057B8C195CD0B2009DD4F6 /* AWSEventRecorderServiceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSEventRecorderServiceModel.m; path = EventRecorderService/AWSEventRecorderServiceModel.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; EA057B8D195CD0B2009DD4F6 /* AWSEventRecorderServiceModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSEventRecorderServiceModel.h; path = EventRecorderService/AWSEventRecorderServiceModel.h; sourceTree = ""; }; EA057B8E195CD0B2009DD4F6 /* AWSEventRecorderService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AWSEventRecorderService.m; path = EventRecorderService/AWSEventRecorderService.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; EA057B8F195CD0B2009DD4F6 /* AWSEventRecorderService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSEventRecorderService.h; path = EventRecorderService/AWSEventRecorderService.h; sourceTree = ""; }; EA2AF764195E206B007DDDD4 /* AWSMobileAnalytics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSMobileAnalytics.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - EA2AF766195E206B007DDDD4 /* AWSMobileAnalyticsClientConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsClientConfiguration.h; sourceTree = ""; }; - EA2AF767195E206B007DDDD4 /* AWSMobileAnalyticsClientConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSMobileAnalyticsClientConfiguration.m; sourceTree = ""; }; + EA2AF766195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AWSMobileAnalyticsConfiguration.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + EA2AF767195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AWSMobileAnalyticsConfiguration.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; EA2AF769195E206B007DDDD4 /* AWSMobileAnalyticsClientContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsClientContext.h; sourceTree = ""; }; EA2AF76A195E206B007DDDD4 /* AWSMobileAnalyticsIOSClientContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsIOSClientContext.h; sourceTree = ""; }; EA2AF76B195E206B007DDDD4 /* AWSMobileAnalyticsIOSClientContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSMobileAnalyticsIOSClientContext.m; sourceTree = ""; }; @@ -590,7 +594,7 @@ EA2AF7AC195E206B007DDDD4 /* AWSMobileAnalyticsJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AWSMobileAnalyticsJSONSerializer.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; EA2AF7AD195E206B007DDDD4 /* AWSMobileAnalyticsSerializable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsSerializable.h; sourceTree = ""; }; EA2AF7AE195E206B007DDDD4 /* AWSMobileAnalyticsSerializerFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AWSMobileAnalyticsSerializerFactory.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - EA2AF7B0195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsConfiguration.h; sourceTree = ""; }; + EA2AF7B0195E206B007DDDD4 /* AWSMobileAnalyticsConfiguring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsConfiguring.h; sourceTree = ""; }; EA2AF7B1195E206B007DDDD4 /* AWSMobileAnalyticsConfigurationKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsConfigurationKeys.h; sourceTree = ""; }; EA2AF7B2195E206B007DDDD4 /* AWSMobileAnalyticsHttpCachingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AWSMobileAnalyticsHttpCachingConfiguration.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; EA2AF7B4195E206B007DDDD4 /* AWSMobileAnalyticsClientContextInterceptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMobileAnalyticsClientContextInterceptor.h; sourceTree = ""; }; @@ -993,19 +997,24 @@ path = CognitoIdentityService; sourceTree = ""; }; - CE287DD018EB5F4300603067 /* Logging */ = { + CE16EED819916C5100A318A3 /* Utility */ = { isa = PBXGroup; children = ( - CE287DD218EB5F4300603067 /* AZLogging.h */, - CE287DD118EB5F4300603067 /* AZLogging.m */, + CE16EED919916C5100A318A3 /* AWSCategory.h */, + CE16EEDA19916C5100A318A3 /* AWSCategory.m */, + CE16EEDB19916C5100A318A3 /* AWSLogging.h */, + CE16EEDC19916C5100A318A3 /* AWSLogging.m */, + CE16EEDD19916C5100A318A3 /* AWSModel.h */, + CE16EEDE19916C5100A318A3 /* AWSModel.m */, + CE16EEDF19916C5100A318A3 /* AWSSynchronizedMutableDictionary.h */, + CE16EEE019916C5100A318A3 /* AWSSynchronizedMutableDictionary.m */, ); - path = Logging; + path = Utility; sourceTree = ""; }; CE314856187B577A0068883B /* AWSiOSSDKTests */ = { isa = PBXGroup; children = ( - CE314866187B57F50068883B /* AmazonCoreTests.m */, BDD39A10193E8D4500C712BD /* AWSAnalyticsTests.m */, CE8FEAA718D3B84E00EC90A6 /* AWSAutoScalingTests.m */, CE1C9DE41936CE38007B6F33 /* AWSClockSkewTests.m */, @@ -1017,7 +1026,7 @@ CE314864187B57F50068883B /* AWSDynamoDBTests.m */, CEB2A4A318D782F80007AAF4 /* AWSEC2Tests.m */, CE8FEAA218D3B18600EC90A6 /* AWSElasticLoadBalancingTests.m */, - BD9CC213193CFF0700780456 /* AWSERSTests.m */, + BD9CC213193CFF0700780456 /* AWSEventRecorderServiceTests.m */, CEE68C181940000500259EFF /* AWSKinesisRecorderTests.m */, CE91D2BE18D3C03B000390D2 /* AWSKinesisTests.m */, BD19ED04188F15EB001F5B98 /* AWSS3Tests.m */, @@ -1037,14 +1046,18 @@ CE314857187B577A0068883B /* Supporting Files */ = { isa = PBXGroup; children = ( - BD47982718B2BA930028B0DB /* xmlSampleListBuckets.xml */, - BD47982818B2BA930028B0DB /* xmlSampleListObjects.xml */, - BD47982918B2BA930028B0DB /* xmlSampleListParts.xml */, - BD47982A18B2BA930028B0DB /* xmlSamplePutBucketACLReq.xml */, + CE31485E187B577A0068883B /* AWSiOSSDKv2Tests-Prefix.pch */, + BD1861BD19A41395003C8E42 /* ec2-input.json */, + BD1861BE19A41395003C8E42 /* ec2-output.json */, + BDD196D2198AFF2C00CC94A2 /* json-output.json */, + BDD196D3198AFF2C00CC94A2 /* query-output.json */, + BDD196D5198AFF2C00CC94A2 /* rest-xml-output.json */, + BDD196C8198AFF2200CC94A2 /* json-input.json */, + BDD196C9198AFF2200CC94A2 /* query-input.json */, + BDD196CB198AFF2200CC94A2 /* rest-xml-input.json */, CE31486A187B58090068883B /* credentials.json */, CE314858187B577A0068883B /* AWSiOSSDKv2Tests-Info.plist */, CE314859187B577A0068883B /* InfoPlist.strings */, - CE31485E187B577A0068883B /* AWSiOSSDKv2Tests-Prefix.pch */, ); name = "Supporting Files"; sourceTree = ""; @@ -1133,7 +1146,7 @@ CE372B3118DA874000D2CFD2 /* Resources */ = { isa = PBXGroup; children = ( - CE896C84194A8619000DBB3C /* ec2-2014-05-01.json */, + CE896C84194A8619000DBB3C /* ec2-2014-06-15.json */, ); name = Resources; path = EC2/Resources; @@ -1309,6 +1322,7 @@ CE55F34618DB716B00F8C75F /* Serialization */, CE55F35718DB716B00F8C75F /* Service */, CE09860C1922A7470006EA67 /* STS */, + CE16EED819916C5100A318A3 /* Utility */, CE55F35D18DB716B00F8C75F /* XMLWriter */, ); path = AWSCore; @@ -1331,6 +1345,8 @@ children = ( CE55F34418DB716B00F8C75F /* AWSNetworking.h */, CE55F34518DB716B00F8C75F /* AWSNetworking.m */, + CE16EEE719916C8400A318A3 /* AWSURLSessionManager.h */, + CE16EEE819916C8400A318A3 /* AWSURLSessionManager.m */, ); name = Networking; path = AWSCore/Networking; @@ -1377,47 +1393,9 @@ path = AWSCore/XMLWriter; sourceTree = SOURCE_ROOT; }; - CE55F38318DB806000F8C75F /* AmazonCore */ = { - isa = PBXGroup; - children = ( - CE55F38418DB806000F8C75F /* AmazonCore.h */, - CE287DD018EB5F4300603067 /* Logging */, - CE55F38C18DB806000F8C75F /* Networking */, - CE55F39318DB806000F8C75F /* Utility */, - ); - path = AmazonCore; - sourceTree = SOURCE_ROOT; - }; - CE55F38C18DB806000F8C75F /* Networking */ = { - isa = PBXGroup; - children = ( - CE55F38D18DB806000F8C75F /* AZNetworking.h */, - CE55F38E18DB806000F8C75F /* AZNetworking.m */, - CE55F39118DB806000F8C75F /* AZURLSessionManager.h */, - CE55F39218DB806000F8C75F /* AZURLSessionManager.m */, - ); - name = Networking; - path = AmazonCore/Networking; - sourceTree = SOURCE_ROOT; - }; - CE55F39318DB806000F8C75F /* Utility */ = { - isa = PBXGroup; - children = ( - CE4AB8D4190856ED00E0600E /* AZCategory.h */, - CE4AB8D5190856ED00E0600E /* AZCategory.m */, - CE483F8B1949196F00781076 /* AZModel.h */, - CE483F8C1949197800781076 /* AZModel.m */, - CE55F39418DB806000F8C75F /* AZSynchronizedMutableDictionary.h */, - CE55F39518DB806000F8C75F /* AZSynchronizedMutableDictionary.m */, - ); - name = Utility; - path = AmazonCore/Utility; - sourceTree = SOURCE_ROOT; - }; CE5D83CD1857AA3100907C25 = { isa = PBXGroup; children = ( - CE55F38318DB806000F8C75F /* AmazonCore */, CE55F33C18DB716B00F8C75F /* AWSCore */, CE372B1318DA874000D2CFD2 /* AutoScaling */, CE372B1B18DA874000D2CFD2 /* CloudWatch */, @@ -1523,8 +1501,8 @@ EA2AF765195E206B007DDDD4 /* AZCommon */ = { isa = PBXGroup; children = ( - EA2AF766195E206B007DDDD4 /* AWSMobileAnalyticsClientConfiguration.h */, - EA2AF767195E206B007DDDD4 /* AWSMobileAnalyticsClientConfiguration.m */, + EA2AF766195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.h */, + EA2AF767195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.m */, EA2AF768195E206B007DDDD4 /* ClientContext */, ); path = AZCommon; @@ -1693,7 +1671,7 @@ EA2AF7AF195E206B007DDDD4 /* configuration */ = { isa = PBXGroup; children = ( - EA2AF7B0195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.h */, + EA2AF7B0195E206B007DDDD4 /* AWSMobileAnalyticsConfiguring.h */, EA2AF7B1195E206B007DDDD4 /* AWSMobileAnalyticsConfigurationKeys.h */, EA2AF7B2195E206B007DDDD4 /* AWSMobileAnalyticsHttpCachingConfiguration.h */, ); @@ -1977,9 +1955,14 @@ files = ( CE55F37718DB7FCC00F8C75F /* autoscaling-2011-01-01.json in Resources */, CE55F37818DB7FCC00F8C75F /* monitoring-2010-08-01.json in Resources */, + BD25A589199407C9003401CE /* mobileanalytics-2014-06-30.json in Resources */, + BDD196D0198AFF2200CC94A2 /* rest-xml-input.json in Resources */, CE55F37918DB7FCC00F8C75F /* dynamodb-2012-08-10.json in Resources */, - BD324C66194BA556003369D0 /* ec2-2014-05-01.json in Resources */, + BD324C66194BA556003369D0 /* ec2-2014-06-15.json in Resources */, + BDD196D8198AFF2C00CC94A2 /* query-output.json in Resources */, + BD1861C019A41395003C8E42 /* ec2-output.json in Resources */, CE55F37B18DB7FCC00F8C75F /* elasticloadbalancing-2012-06-01.json in Resources */, + BDD196CE198AFF2200CC94A2 /* query-input.json in Resources */, CE55F37C18DB7FCC00F8C75F /* kinesis-2013-12-02.json in Resources */, CE0986161922A7470006EA67 /* sts-2011-06-15.json in Resources */, CE55F37D18DB7FCC00F8C75F /* s3-2006-03-01.json in Resources */, @@ -1987,12 +1970,13 @@ CE55F37F18DB7FCC00F8C75F /* sdb-2009-04-15.json in Resources */, CE55F38018DB7FCC00F8C75F /* sns-2010-03-31.json in Resources */, CE55F38118DB7FCC00F8C75F /* sqs-2012-11-05.json in Resources */, + BD1861BF19A41395003C8E42 /* ec2-input.json in Resources */, CE31486B187B58090068883B /* credentials.json in Resources */, - BD47982F18B2BA930028B0DB /* xmlSampleListParts.xml in Resources */, + BD25A58819940772003401CE /* cib-2014-06-30.json in Resources */, + BDD196CD198AFF2200CC94A2 /* json-input.json in Resources */, + BDD196D7198AFF2C00CC94A2 /* json-output.json in Resources */, + BDD196DA198AFF2C00CC94A2 /* rest-xml-output.json in Resources */, CE31485B187B577A0068883B /* InfoPlist.strings in Resources */, - BD47983018B2BA930028B0DB /* xmlSamplePutBucketACLReq.xml in Resources */, - BD47982E18B2BA930028B0DB /* xmlSampleListObjects.xml in Resources */, - BD47982D18B2BA930028B0DB /* xmlSampleListBuckets.xml in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2108,7 +2092,6 @@ CE8FEAA618D3B62100EC90A6 /* AWSCloudWatchTests.m in Sources */, 388CA0A21926CA3800AF5A50 /* AWSCognitoCredentialsProviderTests.m in Sources */, CE91D2BF18D3C03B000390D2 /* AWSKinesisTests.m in Sources */, - CE314869187B57F50068883B /* AmazonCoreTests.m in Sources */, BD19ED05188F15EB001F5B98 /* AWSS3Tests.m in Sources */, CE2C174718D0D8CF003FE9AA /* AWSSTSTests.m in Sources */, CE160B2119774315001ABF94 /* AWSTestUtility.m in Sources */, @@ -2121,7 +2104,7 @@ CEB2A4A418D782F80007AAF4 /* AWSEC2Tests.m in Sources */, BDD39A11193E8D4500C712BD /* AWSAnalyticsTests.m in Sources */, BDC8315F1919725000A01D20 /* AWSS3TransferManagerTests.m in Sources */, - BD9CC214193CFF0700780456 /* AWSERSTests.m in Sources */, + BD9CC214193CFF0700780456 /* AWSEventRecorderServiceTests.m in Sources */, 38627E3F19253F5500EF30EF /* AWSCognitoIdentityServiceTests.m in Sources */, CE8FEAA318D3B18600EC90A6 /* AWSElasticLoadBalancingTests.m in Sources */, CE314868187B57F50068883B /* AWSCoreTests.m in Sources */, @@ -2140,7 +2123,6 @@ EA057B91195CD0B2009DD4F6 /* AWSEventRecorderService.m in Sources */, CE0EFAEF193D29B9002A896B /* AWSCognitoIdentityService.m in Sources */, EA2AF82C195E206B007DDDD4 /* AWSMobileAnalyticsErrorUtils.m in Sources */, - CE55F39918DB806000F8C75F /* AZNetworking.m in Sources */, CE372B7918DA874000D2CFD2 /* AWSEC2.m in Sources */, EA057B90195CD0B2009DD4F6 /* AWSEventRecorderServiceModel.m in Sources */, CE372B7618DA874000D2CFD2 /* AWSCloudWatchModel.m in Sources */, @@ -2156,17 +2138,15 @@ CE372B7D18DA874000D2CFD2 /* AWSKinesis.m in Sources */, EA2AF830195E206B007DDDD4 /* AWSMobileAnalyticsDefaultDeliveryClient.m in Sources */, EA2AF828195E206B007DDDD4 /* AWSMobileAnalyticsIOSPreferences.m in Sources */, + CE16EEE219916C5100A318A3 /* AWSLogging.m in Sources */, EA2AF83D195E206B007DDDD4 /* AWSMobileAnalyticsInactiveSessionState.m in Sources */, - CE483F8D1949197800781076 /* AZModel.m in Sources */, - CE287DD418EB6CDC00603067 /* AZLogging.m in Sources */, CE372B7718DA874000D2CFD2 /* AWSDynamoDB.m in Sources */, - CE4AB8D6190856ED00E0600E /* AZCategory.m in Sources */, EA2AF829195E206B007DDDD4 /* AWSMobileAnalyticsIOSSystem.m in Sources */, EA2AF81E195E206B007DDDD4 /* AWSMobileAnalyticsRequestTimingInterceptor.m in Sources */, EA2AF822195E206B007DDDD4 /* AWSMobileAnalyticsBufferedReader.m in Sources */, EA2AF834195E206B007DDDD4 /* AWSMobileAnalyticsSubmissionTimePolicy.m in Sources */, BDBA90BD18EE43C0004EE131 /* AWSURLRequestRetryHandler.m in Sources */, - EA2AF80D195E206B007DDDD4 /* AWSMobileAnalyticsClientConfiguration.m in Sources */, + EA2AF80D195E206B007DDDD4 /* AWSMobileAnalyticsConfiguration.m in Sources */, EA2AF83B195E206B007DDDD4 /* AWSMobileAnalyticsActiveSessionState.m in Sources */, CE372B7318DA874000D2CFD2 /* AWSAutoScaling.m in Sources */, CE372B8418DA874000D2CFD2 /* AWSSimpleDBModel.m in Sources */, @@ -2186,6 +2166,7 @@ EA2AF80C195E206B007DDDD4 /* AWSMobileAnalytics.m in Sources */, EA2AF818195E206B007DDDD4 /* AWSMobileAnalyticsDefaultHttpClient.m in Sources */, BDD77708193FBF6A00F04070 /* AWSSTSModel.m in Sources */, + CE16EEE319916C5100A318A3 /* AWSModel.m in Sources */, BDBA90BB18EE43BA004EE131 /* AWSURLResponseSerialization.m in Sources */, EA2AF82F195E206B007DDDD4 /* AWSMobileAnalyticsConnectivityPolicy.m in Sources */, CE0EFAF0193D29B9002A896B /* AWSCognitoIdentityServiceModel.m in Sources */, @@ -2197,18 +2178,18 @@ EA2AF827195E206B007DDDD4 /* AWSMobileAnalyticsIOSLifeCycleManager.m in Sources */, EA2AF819195E206B007DDDD4 /* AWSMobileAnalyticsDefaultInterceptor.m in Sources */, BDBA90C018EE43C8004EE131 /* AWSNetworking.m in Sources */, + CE16EEE119916C5100A318A3 /* AWSCategory.m in Sources */, BDD77705193FBF6000F04070 /* (null) in Sources */, EA2AF835195E206B007DDDD4 /* AWSMobileAnalyticsDefaultEvent.m in Sources */, EA2AF813195E206B007DDDD4 /* AWSMobileAnalyticsJSONSerializer.m in Sources */, BDBA90C218EE43FF004EE131 /* AWSSignature.m in Sources */, + CE16EEE419916C5100A318A3 /* AWSSynchronizedMutableDictionary.m in Sources */, EA2AF83E195E206B007DDDD4 /* AWSMobileAnalyticsPausedSessionState.m in Sources */, BDBA90C318EE441F004EE131 /* AWSService.m in Sources */, CE5312B41922DFFA005DAFA3 /* AWSDynamoDBObjectMapper.m in Sources */, CE372B8218DA874000D2CFD2 /* AWSSESModel.m in Sources */, - CE55F39B18DB806000F8C75F /* AZURLSessionManager.m in Sources */, EA2AF815195E206B007DDDD4 /* AWSMobileAnalyticsConfigurationKeys.m in Sources */, EA2AF826195E206B007DDDD4 /* AWSMobileAnalyticsIOSConnectivity.m in Sources */, - CE55F39C18DB806000F8C75F /* AZSynchronizedMutableDictionary.m in Sources */, CE372B7518DA874000D2CFD2 /* AWSCloudWatch.m in Sources */, CED6C36618EE3EC800A56FB2 /* AWSS3TransferManager.m in Sources */, CED514051954B83B00D693F7 /* AWSClientContext.m in Sources */, @@ -2229,6 +2210,7 @@ EA2AF838195E206B007DDDD4 /* AWSMobileAnalyticsAppleMonetizationEventBuilder.m in Sources */, EA2AF821195E206B007DDDD4 /* AWSMobileAnalyticsRandomUUIDGenerator.m in Sources */, CE4AB8D919085CFB00E0600E /* AWSSerialization.m in Sources */, + CE16EEEA19916C8400A318A3 /* AWSURLSessionManager.m in Sources */, BDBA90C118EE43D3004EE131 /* AWSCredentialsProvider.m in Sources */, EA2AF83C195E206B007DDDD4 /* AWSMobileAnalyticsDefaultSessionClient.m in Sources */, EA2AF816195E206B007DDDD4 /* AWSMobileAnalyticsHttpCachingConfiguration.m in Sources */, diff --git a/AmazonCore/AmazonCore.h b/AmazonCore/AmazonCore.h deleted file mode 100644 index d3bb01f6d01..00000000000 --- a/AmazonCore/AmazonCore.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#import - -#import "AZLogging.h" -#import "AZNetworking.h" -#import "AZCategory.h" -#import "AZModel.h" \ No newline at end of file diff --git a/AmazonCore/Logging/AZLogging.h b/AmazonCore/Logging/AZLogging.h deleted file mode 100644 index 50cc53e4ede..00000000000 --- a/AmazonCore/Logging/AZLogging.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#import - - -#define AZLogFormat @"%@ line:%d | %s | " - -#define AZLogError(fmt, ...) [[AZLogger defaultLogger] log:AZLogLevelError format:(AZLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] -#define AZLogWarn(fmt, ...) [[AZLogger defaultLogger] log:AZLogLevelWarn format:(AZLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] -#define AZLogInfo(fmt, ...) [[AZLogger defaultLogger] log:AZLogLevelInfo format:(AZLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] -#define AZLogDebug(fmt, ...) [[AZLogger defaultLogger] log:AZLogLevelDebug format:(AZLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] -#define AZLogVerbose(fmt, ...) [[AZLogger defaultLogger] log:AZLogLevelVerbose format:(AZLogFormat fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__] - - -typedef NS_ENUM(NSInteger, AZLogLevel) { - AZLogLevelUnknown = -1, - AZLogLevelNone = 0, - AZLogLevelError = 1, - AZLogLevelWarn = 2, - AZLogLevelInfo = 3, - AZLogLevelDebug = 4, - AZLogLevelVerbose = 5 -}; - -/** - * AZLogger is an utility class that handles logging to the console. - * You can specify the log level to control how verbose the output will be. - */ -@interface AZLogger : NSObject - -/** - * The log level setting. The default is AZLogLevelNone. - */ -@property (atomic, assign) AZLogLevel logLevel; - -/** - * Returns the shared logger object. - * - * @return The shared logger object. - */ -+ (instancetype)defaultLogger; - -/** - * Prints out the formatted logs to the console. - * - * @param logLevel The level of this log. - * @param fmt The formatted string to log. - */ -- (void)log:(AZLogLevel)logLevel - format:(NSString *)fmt, ... NS_FORMAT_FUNCTION(2, 3); - -@end diff --git a/AmazonCore/Networking/AZNetworking.h b/AmazonCore/Networking/AZNetworking.h deleted file mode 100644 index f7c8c956c75..00000000000 --- a/AmazonCore/Networking/AZNetworking.h +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#import - -#import "Bolts.h" - -FOUNDATION_EXPORT NSString *const AZNetworkingErrorDomain; -typedef NS_ENUM(NSInteger, AZNetworkingErrorType) { - AZNetworkingErrorUnknown, - AZNetworkingErrorCancelled -}; - -typedef NS_ENUM(NSInteger, AZNetworkingRetryType) { - AZNetworkingRetryTypeUnknown, - AZNetworkingRetryTypeShouldNotRetry, - AZNetworkingRetryTypeShouldRetry, - AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry, - AZNetworkingRetryTypeShouldCorrectClockSkewAndRetry -}; - -@class AZNetworkingConfiguration; -@class AZNetworkingRequest; - -typedef void (^AZNetworkingUploadProgressBlock) (int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); -typedef void (^AZNetworkingDownloadProgressBlock) (int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); -typedef void (^AZNetworkingCompletionHandlerBlock)(id responseObject, NSError *error); - -#pragma mark - AZHTTPMethod - -typedef NS_ENUM(NSInteger, AZHTTPMethod) { - AZHTTPMethodUnknown, - AZHTTPMethodGET, - AZHTTPMethodHEAD, - AZHTTPMethodPOST, - AZHTTPMethodPUT, - AZHTTPMethodPATCH, - AZHTTPMethodDELETE -}; - -@interface NSString (AZHTTPMethod) - -+ (instancetype)az_stringWithHTTPMethod:(AZHTTPMethod)HTTPMethod; - -@end - -#pragma mark - AZNetworking - -@interface AZNetworking : NSObject - -+ (instancetype)standardNetworking; -+ (instancetype)networking:(AZNetworkingConfiguration *)configuration; - -- (BFTask *)sendRequest:(AZNetworkingRequest *)request; - -- (BFTask *)sendDownloadRequest:(AZNetworkingRequest *)request; - -- (BFTask *)sendUploadRequest:(AZNetworkingRequest *)request; - -- (BFTask *)GET:(NSString *)URLString parameters:(NSDictionary *)parameters; - -- (BFTask *)HEAD:(NSString *)URLString parameters:(NSDictionary *)parameters; - -- (BFTask *)POST:(NSString *)URLString parameters:(NSDictionary *)parameters; - -- (BFTask *)PUT:(NSString *)URLString parameters:(NSDictionary *)parameters; - -- (BFTask *)PATCH:(NSString *)URLString parameters:(NSDictionary *)parameters; - -- (BFTask *)DELETE:(NSString *)URLString parameters:(NSDictionary *)parameters; - -@end - -#pragma mark - Protocols - -@protocol AZURLRequestSerializer - -@required -- (BFTask *)validateRequest:(NSURLRequest *)request; -- (BFTask *)serializeRequest:(NSMutableURLRequest *)request - headers:(NSDictionary *)headers - parameters:(NSDictionary *)parameters; - -@end - -@protocol AZNetworkingRequestInterceptor - -@required -- (BFTask *)interceptRequest:(NSMutableURLRequest *)request; - -@end - -@protocol AZNetworkingHTTPResponseInterceptor - -@required -- (BFTask *)interceptResponse:(NSHTTPURLResponse *)response - data:(id)data - originalRequest:(NSURLRequest *)originalRequest - currentRequest:(NSURLRequest *)currentRequest; - -@end - -@protocol AZHTTPURLResponseSerializer - -@required - -- (BOOL)validateResponse:(NSHTTPURLResponse *)response - fromRequest:(NSURLRequest *)request - data:(id)data - error:(NSError *__autoreleasing *)error; -- (id)responseObjectForResponse:(NSHTTPURLResponse *)response - originalRequest:(NSURLRequest *)originalRequest - currentRequest:(NSURLRequest *)currentRequest - data:(id)data - error:(NSError *__autoreleasing *)error; - -@end - -@protocol AZURLRequestRetryHandler - -@required - -@property (nonatomic, assign) uint32_t maxRetryCount; - -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount - response:(NSHTTPURLResponse *)response - data:(NSData *)data - error:(NSError *)error; - -- (NSTimeInterval)timeIntervalForRetry:(uint32_t)currentRetryCount - response:(NSHTTPURLResponse *)response - data:(NSData *)data - error:(NSError *)error; - -@end - -#pragma mark - AZURLRequestSerializer - -@interface AZURLRequestSerializer : NSObject - -@end - -#pragma mark - AZNetworkingConfiguration - -@interface AZNetworkingConfiguration : NSObject - -@property (nonatomic, readonly) NSURL *URL; -@property (nonatomic, strong) NSURL *baseURL; -@property (nonatomic, strong) NSString *URLString; -@property (nonatomic, assign) AZHTTPMethod HTTPMethod; -@property (nonatomic, strong) NSDictionary *headers; - -@property (nonatomic, strong) id requestSerializer; -@property (nonatomic, strong) NSArray *requestInterceptors; // Array of AZNetworkingRequestInterceptor. -@property (nonatomic, strong) id responseSerializer; -@property (nonatomic, strong) NSArray *responseInterceptors; // Array of AZNetworkingResponseInterceptor. -@property (nonatomic, strong) id retryHandler; - -+ (instancetype)defaultConfiguration; - -@end - -#pragma mark - AZNetworkingRequest - -@interface AZNetworkingRequest : AZNetworkingConfiguration - -@property (nonatomic, strong) NSDictionary *parameters; -@property (nonatomic, strong) NSURL *uploadingFileURL; -@property (nonatomic, strong) NSURL *downloadingFileURL; -@property (nonatomic, assign) BOOL shouldWriteDirectly; - -@property (nonatomic, copy) AZNetworkingUploadProgressBlock uploadProgress; -@property (nonatomic, copy) AZNetworkingDownloadProgressBlock downloadProgress; - -@property (readonly, nonatomic, strong) id task; -@property (readonly, nonatomic, assign, getter = isCancelled) BOOL cancelled; - -+ (instancetype)requestForDataTask:(AZHTTPMethod)HTTPMethod - URLString:(NSString *)URLString; -+ (instancetype)requestForDownloadTask:(AZHTTPMethod)HTTPMethod - URLString:(NSString *)URLString - downloadingFileURL:(NSURL *)downloadingFileURL; -+ (instancetype)requestForUploadTask:(AZHTTPMethod)HTTPMethod - URLString:(NSString *)URLString - uploadingFileURL:(NSURL *)uploadingFileURL; - -- (void)assignProperties:(AZNetworkingConfiguration *)configuration; -- (void)cancel; -- (void)pause; - -@end diff --git a/AmazonCore/Networking/AZNetworking.m b/AmazonCore/Networking/AZNetworking.m deleted file mode 100644 index 6ad7fbf788b..00000000000 --- a/AmazonCore/Networking/AZNetworking.m +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#import "AZNetworking.h" - -#import "Bolts.h" -#import "AZURLSessionManager.h" - -NSString *const AZNetworkingErrorDomain = @"com.amazonaws.AZNetworkingErrorDomain"; - -#pragma mark - AZHTTPMethod - -@implementation NSString (AZHTTPMethod) - -+ (instancetype)az_stringWithHTTPMethod:(AZHTTPMethod)HTTPMethod { - NSString *string = nil; - switch (HTTPMethod) { - case AZHTTPMethodGET: - string = @"GET"; - break; - case AZHTTPMethodHEAD: - string = @"HEAD"; - break; - case AZHTTPMethodPOST: - string = @"POST"; - break; - case AZHTTPMethodPUT: - string = @"PUT"; - break; - case AZHTTPMethodPATCH: - string = @"PATCH"; - break; - case AZHTTPMethodDELETE: - string = @"DELETE"; - break; - - default: - break; - } - - return string; -} - -@end - -#pragma mark - AZNetworking - -@interface AZNetworking() - -@property (nonatomic, strong) AZURLSessionManager *networkManager; - -@end - -@implementation AZNetworking - -- (instancetype)init { - if (self = [super init]) { - AZURLSessionManager *sessionManager = [AZURLSessionManager new]; - self.networkManager = sessionManager; - } - - return self; -} - -+ (instancetype)standardNetworking { - static AZNetworking *_standardNetworking = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - AZNetworkingConfiguration *configuration = [AZNetworkingConfiguration new]; - _standardNetworking = [AZNetworking networking:configuration]; - }); - - return _standardNetworking; -} - -+ (instancetype)networking:(AZNetworkingConfiguration *)configuration { - AZNetworking *networking = [AZNetworking new]; - networking.networkManager.configuration = configuration; - - return networking; -} - -- (BFTask *)sendRequest:(AZNetworkingRequest *)request { - BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; - [self.networkManager dataTaskWithRequest:request - completionHandler:^(id responseObject, NSError *error) { - if (!error) { - taskCompletionSource.result = responseObject; - } else { - taskCompletionSource.error = error; - } - }]; - - return taskCompletionSource.task; -} - -- (BFTask *)sendDownloadRequest:(AZNetworkingRequest *)request { - BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; - [self.networkManager downloadTaskWithRequest:request - completionHandler:^(id responseObject, NSError *error) { - if (!error) { - taskCompletionSource.result = responseObject; - } else { - taskCompletionSource.error = error; - } - }]; - - return taskCompletionSource.task; -} - -- (BFTask *)sendUploadRequest:(AZNetworkingRequest *)request { - BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; - [self.networkManager uploadTaskWithRequest:request - completionHandler:^(id responseObject, NSError *error) { - if (!error) { - taskCompletionSource.result = responseObject; - } else { - taskCompletionSource.error = error; - } - }]; - - return taskCompletionSource.task; -} - -- (BFTask *)GET:(NSString *)URLString parameters:(NSDictionary *)parameters { - AZNetworkingRequest *request = [AZNetworkingRequest requestForDataTask:AZHTTPMethodGET - URLString:URLString]; - request.parameters = parameters; - return [self sendRequest:request]; -} - -- (BFTask *)HEAD:(NSString *)URLString parameters:(NSDictionary *)parameters { - AZNetworkingRequest *request = [AZNetworkingRequest requestForDataTask:AZHTTPMethodHEAD - URLString:URLString]; - request.parameters = parameters; - return [self sendRequest:request]; -} - -- (BFTask *)POST:(NSString *)URLString parameters:(NSDictionary *)parameters { - AZNetworkingRequest *request = [AZNetworkingRequest requestForDataTask:AZHTTPMethodPOST - URLString:URLString]; - request.parameters = parameters; - return [self sendRequest:request]; -} - -- (BFTask *)PUT:(NSString *)URLString parameters:(NSDictionary *)parameters { - AZNetworkingRequest *request = [AZNetworkingRequest requestForDataTask:AZHTTPMethodPUT - URLString:URLString]; - request.parameters = parameters; - return [self sendRequest:request]; -} - -- (BFTask *)PATCH:(NSString *)URLString parameters:(NSDictionary *)parameters { - AZNetworkingRequest *request = [AZNetworkingRequest requestForDataTask:AZHTTPMethodPATCH - URLString:URLString]; - request.parameters = parameters; - return [self sendRequest:request]; -} - -- (BFTask *)DELETE:(NSString *)URLString parameters:(NSDictionary *)parameters { - AZNetworkingRequest *request = [AZNetworkingRequest requestForDataTask:AZHTTPMethodDELETE - URLString:URLString]; - request.parameters = parameters; - return [self sendRequest:request]; -} - -@end - -#pragma mark - AZURLRequestSerializer - -@implementation AZURLRequestSerializer - -- (BFTask *)validateRequest:(NSURLRequest *)request { - return [BFTask taskWithResult:nil]; -} - -- (BFTask *)serializeRequest:(NSMutableURLRequest *)request - headers:(NSDictionary *)header - parameters:(NSDictionary *)parameters { - if ([request.HTTPMethod isEqualToString:@"GET"]) { - NSMutableString *URLparameters = [NSMutableString new]; - for (id o in parameters) { - if ([URLparameters length] > 0) { - [URLparameters appendString:@"&"]; - } - - [URLparameters appendFormat:@"%@=%@", o, [parameters objectForKey:o]]; - } - - NSString *escapedURLParameters = [[URLparameters stringByRemovingPercentEncoding] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - request.URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@", - [request.URL absoluteString], - request.URL.query ? @"&" : @"?", - escapedURLParameters]]; - } - return [BFTask taskWithResult:nil]; -} - -@end - -#pragma mark - AZNetworkingConfiguration - -@implementation AZNetworkingConfiguration - -+ (instancetype)defaultConfiguration { - AZNetworkingConfiguration *configuration = [AZNetworkingConfiguration new]; - configuration.requestSerializer = [AZURLRequestSerializer new]; - - return configuration; -} - -- (NSURL *)URL { - if (!self.URLString) { - return self.baseURL; - } - - return [NSURL URLWithString:self.URLString - relativeToURL:self.baseURL]; -} - -- (id)copyWithZone:(NSZone *)zone { - AZNetworkingConfiguration *configuration = [[[self class] allocWithZone:zone] init]; - configuration.baseURL = [self.baseURL copy]; - configuration.URLString = [self.URLString copy]; - configuration.HTTPMethod = self.HTTPMethod; - configuration.headers = [self.headers copy]; - configuration.requestSerializer = self.requestSerializer; - configuration.requestInterceptors = [self.requestInterceptors copy]; - configuration.responseSerializer = self.responseSerializer; - configuration.responseInterceptors = [self.responseInterceptors copy]; - configuration.retryHandler = self.retryHandler; - - return configuration; -} - -@end - -#pragma mark - AZNetworkingRequest - -@interface AZNetworkingRequest() - -@property (nonatomic, strong) id task; -@property (nonatomic, assign, getter = isCancelled) BOOL cancelled; - -@end - -@implementation AZNetworkingRequest - -+ (instancetype)requestForDataTask:(AZHTTPMethod)HTTPMethod - URLString:(NSString *)URLString { - AZNetworkingRequest *request = [AZNetworkingRequest new]; - request.HTTPMethod = HTTPMethod; - request.URLString = URLString; - - return request; -} - -+ (instancetype)requestForDownloadTask:(AZHTTPMethod)HTTPMethod - URLString:(NSString *)URLString - downloadingFileURL:(NSURL *)downloadingFileURL { - AZNetworkingRequest *request = [AZNetworkingRequest new]; - request.HTTPMethod = HTTPMethod; - request.URLString = URLString; - request.downloadingFileURL = downloadingFileURL; - - return request; -} - -+ (instancetype)requestForUploadTask:(AZHTTPMethod)HTTPMethod - URLString:(NSString *)URLString - uploadingFileURL:(NSURL *)uploadingFileURL { - AZNetworkingRequest *request = [AZNetworkingRequest new]; - request.HTTPMethod = HTTPMethod; - request.URLString = URLString; - request.uploadingFileURL = uploadingFileURL; - - return request; -} - -- (void)assignProperties:(AZNetworkingConfiguration *)configuration { - if (!self.baseURL) { - self.baseURL = configuration.baseURL; - } - - if (!self.URLString) { - self.URLString = configuration.URLString; - } - - if (!self.HTTPMethod) { - self.HTTPMethod = configuration.HTTPMethod; - } - - if (configuration.headers) { - NSMutableDictionary *mutableCopy = [configuration.headers mutableCopy]; - [self.headers enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - [mutableCopy setObject:obj forKey:key]; - }]; - self.headers = mutableCopy; - } - - if (!self.requestSerializer) { - self.requestSerializer = configuration.requestSerializer; - } - - if (configuration.requestInterceptors) { - //self.requestInterceptors = [configuration.requestInterceptors arrayByAddingObjectsFromArray:self.requestInterceptors]; - self.requestInterceptors = configuration.requestInterceptors; - } - - if (!self.responseSerializer) { - self.responseSerializer = configuration.responseSerializer; - } - - if (configuration.responseInterceptors) { - //self.responseInterceptors = [configuration.responseInterceptors arrayByAddingObjectsFromArray:self.responseInterceptors]; - self.responseInterceptors = configuration.responseInterceptors; - } - - if (!self.retryHandler) { - self.retryHandler = configuration.retryHandler; - } -} - -- (void)setTask:(id)task { - @synchronized(self) { - if (!_cancelled) { - _task = task; - } else { - _task = nil; - } - } -} - -- (BOOL)isCancelled { - @synchronized(self) { - return _cancelled; - } -} - -- (void)cancel { - @synchronized(self) { - if (!_cancelled) { - _cancelled = YES; - - if ([self.task respondsToSelector:@selector(cancel)]) { - [self.task cancel]; - } - } - } -} - -- (void)pause { - @synchronized(self) { - if ([self.task respondsToSelector:@selector(cancel)]) { - [self.task cancel]; - } - } -} -@end diff --git a/AmazonCore/Networking/AZURLSessionManager.h b/AmazonCore/Networking/AZURLSessionManager.h deleted file mode 100644 index f2fbbb0df6f..00000000000 --- a/AmazonCore/Networking/AZURLSessionManager.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#import - -#import "AZNetworking.h" - -@interface AZURLSessionManager : NSObject - -@property (nonatomic, strong) AZNetworkingConfiguration *configuration; - -- (void)dataTaskWithRequest:(AZNetworkingRequest *)request - completionHandler:(AZNetworkingCompletionHandlerBlock)completionHandler; - -- (void)downloadTaskWithRequest:(AZNetworkingRequest *)request - completionHandler:(AZNetworkingCompletionHandlerBlock)completionHandler; - -- (void)uploadTaskWithRequest:(AZNetworkingRequest *)request - completionHandler:(AZNetworkingCompletionHandlerBlock)completionHandler; - -@end diff --git a/AmazonCore/Utility/AZCategory.h b/AmazonCore/Utility/AZCategory.h deleted file mode 100644 index 60d39799a8b..00000000000 --- a/AmazonCore/Utility/AZCategory.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#import -#import "TMCache.h" - -FOUNDATION_EXPORT NSString *const AZDateISO8601DateFormat1; -FOUNDATION_EXPORT NSString *const AZDateISO8601DateFormat2; -FOUNDATION_EXPORT NSString *const AZDateISO8601DateFormat3; -FOUNDATION_EXPORT NSString *const AZDateShortDateFormat1; - -@interface NSData (AZ) - -- (NSString *)az_base64EncodedString; - -@end - -@interface NSDate (AZ) - -+ (NSDate *)az_dateFromString:(NSString *)string; -+ (NSDate *)az_dateFromString:(NSString *)string format:(NSString *)dateFormat; -- (NSString *)az_stringValue:(NSString *)dateFormat; - -/** - * Set the clock skew for the current device. This clock skew will be used for calculating - * signatures to AWS signatures and for parsing/converting date values from responses. - * - * @param clockskew the skew (in seconds) for this device. If the clock on the device is fast, pass positive skew to correct. If the clock on the device is slow, pass negative skew to correct. - */ -+(void)az_setRuntimeClockSkew:(NSTimeInterval)clockskew; - -/** - * Get the clock skew for the current device. - * - * @return the skew (in seconds) currently set for this device. Positive clock skew implies the device is fast, negative implies the device is slow. - */ -+(NSTimeInterval)az_getRuntimeClockSkew; - -+ (NSDate *)az_getDateFromMessageBody:(NSString *)messageBody; -@end - -@interface NSDictionary(AZ) - -- (NSDictionary *)az_removeNullValues; - -@end - -@interface NSObject (AZ) - -- (NSDictionary *)az_properties; - -- (void)az_copyPropertiesFromObject:(NSObject *)object; - -@end - -@interface NSString (AZ) - -+ (NSString *)az_randomStringWithLength:(NSUInteger)length; -- (BOOL)az_isBase64Data; -- (NSString *)az_stringWithURLEncoding; -- (NSString *)az_stringWithURLEncodingPath; - -@end - -@interface NSURL (AZ) - -- (NSURL *)az_URLByAppendingQuery:(NSDictionary *)query; - -@end diff --git a/AutoScaling/AWSAutoScaling.h b/AutoScaling/AWSAutoScaling.h index 7eab767ebe3..cccc8c984fe 100644 --- a/AutoScaling/AWSAutoScaling.h +++ b/AutoScaling/AWSAutoScaling.h @@ -20,19 +20,18 @@ @class BFTask; /** - * Auto Scaling

Auto Scaling is a web service designed to automatically launch or terminate Amazon Elastic Compute Cloud (Amazon EC2) instances based on user-defined policies, schedules, and health checks.This service is used in conjunction with Amazon CloudWatchand Elastic Load Balancing services.

Auto Scaling provides APIs that you can call by submitting a Query Request.Query requests are HTTP or HTTPS requests that use the HTTP verbs GET or POST and a Query parameter named Action or Operation that specifies the API you are calling. Action is used throughout this documentation, although Operationis also supported for backward compatibility with other Amazon Web Services (AWS) Query APIs.

Calling the API using a Query request is the most direct way to access the web service, but requires that your application handle low-level details such as generating the hash to sign the request and error handling. The benefit of calling the service using aQuery request is that you are assured of having access to the complete functionality of the API. For information about signing aa query request, see Use Query Requests to Call Auto Scaling APIs

This guide provides detailed informationabout Auto Scaling actions, data types, parameters, and errors. For detailed informationabout Auto Scaling features and their associated API actions, go to theAuto Scaling Developer Guide.

This reference is based on the current WSDL, which is available at:

http://autoscaling.amazonaws.com/doc/2011-01-01/AutoScaling.wsdl

Endpoints

The examples in this guide assume that your instances are launched in the US East (Northern Virginia) region and use us-east-1 as the endpoint.

You can set up your Auto Scaling infrastructure in other AWS regions. For information about this product's regions and endpoints, see Regions and Endpointsin the Amazon Web Services General Reference.

+ * Auto Scaling

Auto Scaling is a web service designed to automatically launch or terminate Amazon Elastic Compute Cloud (Amazon EC2) instances based on user-defined policies, schedules, and health checks. This service is used in conjunction with Amazon CloudWatch and Elastic Load Balancing services.

Auto Scaling provides APIs that you can call by submitting a Query Request. Query requests are HTTP or HTTPS requests that use the HTTP verbs GET or POST and a Query parameter named Action or Operation that specifies the API you are calling. Action is used throughout this documentation, although Operation is also supported for backward compatibility with other Amazon Web Services (AWS) Query APIs.

Calling the API using a Query request is the most direct way to access the web service, but requires that your application handle low-level details such as generating the hash to sign the request and error handling. The benefit of calling the service using a Query request is that you are assured of having access to the complete functionality of the API. For information about signing a a query request, see Use Query Requests to Call Auto Scaling APIs

This guide provides detailed information about Auto Scaling actions, data types, parameters, and errors. For detailed information about Auto Scaling features and their associated API actions, go to the Auto Scaling Developer Guide.

This reference is based on the current WSDL, which is available at:

http://autoscaling.amazonaws.com/doc/2011-01-01/AutoScaling.wsdl

Endpoints

The examples in this guide assume that your instances are launched in the US East (Northern Virginia) region and use us-east-1 as the endpoint.

You can set up your Auto Scaling infrastructure in other AWS regions. For information about this product's regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

*/ @interface AWSAutoScaling : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultAutoScaling; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

Attaches one or more Amazon EC2 instances to an existing Auto Scaling group. After the instance(s) is attached, it becomes a part of the Auto Scaling group.

For more information, see Attach Amazon EC2 Instance(s) to Your Existing Auto Scaling Group in the Auto Scaling Developer Guide.

+ *

Attaches one or more Amazon EC2 instances to an existing Auto Scaling group. After the instance(s) is attached, it becomes a part of the Auto Scaling group.

For more information, see Attach Amazon EC2 Instances to Your Existing Auto Scaling Group in the Auto Scaling Developer Guide.

* * @param request A container for the necessary parameters to execute the AttachInstances service method. * @@ -43,7 +42,19 @@ - (BFTask *)attachInstances:(AWSAutoScalingAttachInstancesQuery *)request; /** - *

Creates a new Auto Scaling group with the specified name and other attributes. When the creation request is completed, the Auto Scaling group is ready to be used in other calls.

The Auto Scaling group name must be unique withinthe scope of your AWS account. + *

Completes the lifecycle action for the associated token initiated under the given lifecycle hook with the specified result.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

+ * + * @param request A container for the necessary parameters to execute the CompleteLifecycleAction service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingCompleteLifecycleActionAnswer. + * + * @see AWSAutoScalingCompleteLifecycleActionType + * @see AWSAutoScalingCompleteLifecycleActionAnswer + */ +- (BFTask *)completeLifecycleAction:(AWSAutoScalingCompleteLifecycleActionType *)request; + +/** + *

Creates a new Auto Scaling group with the specified name and other attributes. When the creation request is completed, the Auto Scaling group is ready to be used in other calls.

* * @param request A container for the necessary parameters to execute the CreateAutoScalingGroup service method. * @@ -54,7 +65,7 @@ - (BFTask *)createAutoScalingGroup:(AWSAutoScalingCreateAutoScalingGroupType *)request; /** - *

Creates a new launch configuration. The launch configuration namemust be unique within the scope of the client's AWS account. The maximum limit of launch configurations, which by default is 100, must not yet have been met; otherwise,the call will fail. When created, the new launch configurationis available for immediate use.

+ *

Creates a new launch configuration. The launch configuration name must be unique within the scope of the client's AWS account. The maximum limit of launch configurations, which by default is 100, must not yet have been met; otherwise, the call will fail. When created, the new launch configuration is available for immediate use.

* * @param request A container for the necessary parameters to execute the CreateLaunchConfiguration service method. * @@ -65,7 +76,7 @@ - (BFTask *)createLaunchConfiguration:(AWSAutoScalingCreateLaunchConfigurationType *)request; /** - *

Creates new tags or updates existing tags for an Auto Scaling group.

A tag's definition is composed of a resource ID, resource type, key and value, and the propagate flag.Value and the propagate flag are optional parameters. See the Request Parameters for more information.

For information on creating tags for your Auto Scaling group, see Tag Your Auto Scaling Groups and Amazon EC2 Instances.

+ *

Creates new tags or updates existing tags for an Auto Scaling group.

For information on creating tags for your Auto Scaling group, see Tag Your Auto Scaling Groups and Amazon EC2 Instances.

* * @param request A container for the necessary parameters to execute the CreateOrUpdateTags service method. * @@ -76,7 +87,7 @@ - (BFTask *)createOrUpdateTags:(AWSAutoScalingCreateOrUpdateTagsType *)request; /** - *

Deletes the specified Auto Scaling group if the group has no instances and no scaling activities in progress.

To remove all instances before calling DeleteAutoScalingGroup, you can call UpdateAutoScalingGroup to set the minimum andmaximum size of the AutoScalingGroup to zero. + *

Deletes the specified Auto Scaling group if the group has no instances and no scaling activities in progress.

* * @param request A container for the necessary parameters to execute the DeleteAutoScalingGroup service method. * @@ -87,7 +98,7 @@ - (BFTask *)deleteAutoScalingGroup:(AWSAutoScalingDeleteAutoScalingGroupType *)request; /** - *

Deletes the specified LaunchConfiguration.

The specified launch configuration must not beattached to an Auto Scaling group. When this call completes, the launch configuration is no longer available for use.

+ *

Deletes the specified LaunchConfiguration.

The specified launch configuration must not be attached to an Auto Scaling group. When this call completes, the launch configuration is no longer available for use.

* * @param request A container for the necessary parameters to execute the DeleteLaunchConfiguration service method. * @@ -97,6 +108,18 @@ */ - (BFTask *)deleteLaunchConfiguration:(AWSAutoScalingLaunchConfigurationNameType *)request; +/** + *

Deletes the specified lifecycle hook. If there are any outstanding lifecycle actions, they are completed first (ABANDON for launching instances, CONTINUE for terminating instances).

+ * + * @param request A container for the necessary parameters to execute the DeleteLifecycleHook service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingDeleteLifecycleHookAnswer. + * + * @see AWSAutoScalingDeleteLifecycleHookType + * @see AWSAutoScalingDeleteLifecycleHookAnswer + */ +- (BFTask *)deleteLifecycleHook:(AWSAutoScalingDeleteLifecycleHookType *)request; + /** *

Deletes notifications created by PutNotificationConfiguration.

* @@ -142,7 +165,7 @@ - (BFTask *)deleteTags:(AWSAutoScalingDeleteTagsType *)request; /** - *

Returns the limits for the Auto Scaling resources currently allowed for your AWS account.

Your AWS account comes with default limits on resources for Auto Scaling.There is a default limit of 20 Auto Scaling groups and 100 launch configurations per region.

If you reach the limits for the number of Auto Scaling groups or the launch configurations, you can go to the Support Center and place arequest to raise the limits.

+ *

Returns the limits for the Auto Scaling resources currently allowed for your AWS account.

Your AWS account comes with default limits on resources for Auto Scaling. There is a default limit of 20 Auto Scaling groups and 100 launch configurations per region.

If you reach the limits for the number of Auto Scaling groups or the launch configurations, you can go to the Support Center and place a request to raise the limits.

* * @param request A container for the necessary parameters to execute the DescribeAccountLimits service method. * @@ -154,7 +177,7 @@ - (BFTask *)describeAccountLimits:(AWSRequest *)request; /** - *

Returns policy adjustment types for use in the PutScalingPolicy action.

+ *

Returns policy adjustment types for use in the PutScalingPolicy action.

* * @param request A container for the necessary parameters to execute the DescribeAdjustmentTypes service method. * @@ -166,7 +189,7 @@ - (BFTask *)describeAdjustmentTypes:(AWSRequest *)request; /** - *

Returns a full description of each Auto Scaling group in the given list.This includes all Amazon EC2 instances that are members of the group.If a list of names is not provided, the service returns the full details of all Auto Scaling groups.

This action supports pagination by returning a token if there are more pages to retrieve. To get the next page, call this action again with the returned token as the NextToken parameter.

+ *

Returns a full description of each Auto Scaling group in the given list. This includes all Amazon EC2 instances that are members of the group. If a list of names is not provided, the service returns the full details of all Auto Scaling groups.

This action supports pagination by returning a token if there are more pages to retrieve. To get the next page, call this action again with the returned token as the NextToken parameter.

* * @param request A container for the necessary parameters to execute the DescribeAutoScalingGroups service method. * @@ -178,7 +201,7 @@ - (BFTask *)describeAutoScalingGroups:(AWSAutoScalingAutoScalingGroupNamesType *)request; /** - *

Returns a description of each Auto Scaling instance in the InstanceIds list. If a list is not provided, the service returns the full details of all instances up to a maximum of 50.By default, the service returns a list of 20 items.

This action supports pagination by returning a token if there are more pages to retrieve. To get the next page, call this action again with the returned token as the NextToken parameter.

+ *

Returns a description of each Auto Scaling instance in the InstanceIds list. If a list is not provided, the service returns the full details of all instances up to a maximum of 50. By default, the service returns a list of 20 items.

This action supports pagination by returning a token if there are more pages to retrieve. To get the next page, call this action again with the returned token as the NextToken parameter.

* * @param request A container for the necessary parameters to execute the DescribeAutoScalingInstances service method. * @@ -190,7 +213,7 @@ - (BFTask *)describeAutoScalingInstances:(AWSAutoScalingDescribeAutoScalingInstancesType *)request; /** - *

Returns a list of all notification types that are supported by Auto Scaling.

+ *

Returns a list of all notification types that are supported by Auto Scaling.

* * @param request A container for the necessary parameters to execute the DescribeAutoScalingNotificationTypes service method. * @@ -202,7 +225,7 @@ - (BFTask *)describeAutoScalingNotificationTypes:(AWSRequest *)request; /** - *

Returns a full description of the launch configurations, or the specified launch configurations, if they exist.

If no name is specified, then the full details of all launch configurations are returned.

+ *

Returns a full description of the launch configurations, or the specified launch configurations, if they exist.

If no name is specified, then the full details of all launch configurations are returned.

* * @param request A container for the necessary parameters to execute the DescribeLaunchConfigurations service method. * @@ -214,7 +237,31 @@ - (BFTask *)describeLaunchConfigurations:(AWSAutoScalingLaunchConfigurationNamesType *)request; /** - *

Returns a list of metrics and a corresponding listof granularities for each metric.

+ *

Describes the available types of lifecycle hooks.

+ * + * @param request A container for the necessary parameters to execute the DescribeLifecycleHookTypes service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingDescribeLifecycleHookTypesAnswer. + * + * @see AWSRequest + * @see AWSAutoScalingDescribeLifecycleHookTypesAnswer + */ +- (BFTask *)describeLifecycleHookTypes:(AWSRequest *)request; + +/** + *

Describes the lifecycle hooks that currently belong to the specified Auto Scaling group.

+ * + * @param request A container for the necessary parameters to execute the DescribeLifecycleHooks service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingDescribeLifecycleHooksAnswer. + * + * @see AWSAutoScalingDescribeLifecycleHooksType + * @see AWSAutoScalingDescribeLifecycleHooksAnswer + */ +- (BFTask *)describeLifecycleHooks:(AWSAutoScalingDescribeLifecycleHooksType *)request; + +/** + *

Returns a list of metrics and a corresponding list of granularities for each metric.

* * @param request A container for the necessary parameters to execute the DescribeMetricCollectionTypes service method. * @@ -226,7 +273,7 @@ - (BFTask *)describeMetricCollectionTypes:(AWSRequest *)request; /** - *

Returns a list of notification actions associated with Auto Scaling groupsfor specified events.

+ *

Returns a list of notification actions associated with Auto Scaling groups for specified events.

* * @param request A container for the necessary parameters to execute the DescribeNotificationConfigurations service method. * @@ -238,7 +285,7 @@ - (BFTask *)describeNotificationConfigurations:(AWSAutoScalingDescribeNotificationConfigurationsType *)request; /** - *

Returns descriptions of what each policy does. This action supports pagination. If the response includes a token,there are more records available. To get the additional records, repeat the request with the response token as the NextToken parameter.

+ *

Returns descriptions of what each policy does. This action supports pagination. If the response includes a token, there are more records available. To get the additional records, repeat the request with the response token as the NextToken parameter.

* * @param request A container for the necessary parameters to execute the DescribePolicies service method. * @@ -250,7 +297,7 @@ - (BFTask *)describePolicies:(AWSAutoScalingDescribePoliciesType *)request; /** - *

Returns the scaling activities for the specified Auto Scaling group.

If the specified ActivityIds list is empty, all the activities from the past six weeks are returned. Activities are sorted by the start time. Activities still in progress appear first on the list.

This action supports pagination. If the response includes a token,there are more records available. To get the additional records, repeat the request with the response token as the NextToken parameter.

+ *

Returns the scaling activities for the specified Auto Scaling group.

If the specified ActivityIds list is empty, all the activities from the past six weeks are returned. Activities are sorted by the start time. Activities still in progress appear first on the list.

This action supports pagination. If the response includes a token, there are more records available. To get the additional records, repeat the request with the response token as the NextToken parameter.

* * @param request A container for the necessary parameters to execute the DescribeScalingActivities service method. * @@ -262,7 +309,7 @@ - (BFTask *)describeScalingActivities:(AWSAutoScalingDescribeScalingActivitiesType *)request; /** - *

Returns scaling process types for use in the ResumeProcesses and SuspendProcesses actions.

+ *

Returns scaling process types for use in the ResumeProcesses and SuspendProcesses actions.

* * @param request A container for the necessary parameters to execute the DescribeScalingProcessTypes service method. * @@ -286,7 +333,7 @@ - (BFTask *)describeScheduledActions:(AWSAutoScalingDescribeScheduledActionsType *)request; /** - *

Lists the Auto Scaling group tags.

You can use filters to limit results when describing tags. For example, you can query fortags of a particular Auto Scaling group. You can specify multiple values for a filter. Atag must match at least one of the specified values for it to be included in the results.

You can also specify multiple filters. The result includes information for a particulartag only if it matches all your filters. If there's no match, no special message is returned.

+ *

Lists the Auto Scaling group tags.

You can use filters to limit results when describing tags. For example, you can query for tags of a particular Auto Scaling group. You can specify multiple values for a filter. A tag must match at least one of the specified values for it to be included in the results.

You can also specify multiple filters. The result includes information for a particular tag only if it matches all your filters. If there's no match, no special message is returned.

* * @param request A container for the necessary parameters to execute the DescribeTags service method. * @@ -298,7 +345,7 @@ - (BFTask *)describeTags:(AWSAutoScalingDescribeTagsType *)request; /** - *

Returns a list of all termination policies supported by Auto Scaling.

+ *

Returns a list of all termination policies supported by Auto Scaling.

* * @param request A container for the necessary parameters to execute the DescribeTerminationPolicyTypes service method. * @@ -309,6 +356,18 @@ */ - (BFTask *)describeTerminationPolicyTypes:(AWSRequest *)request; +/** + *

Using DetachInstances, you can remove an instance from an Auto Scaling group. After the instances are detached, you can manage them independently from the rest of the Auto Scaling group.

To learn more about detaching instances, see Detach Amazon EC2 Instances From Your Auto Scaling Group.

+ * + * @param request A container for the necessary parameters to execute the DetachInstances service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingDetachInstancesAnswer. + * + * @see AWSAutoScalingDetachInstancesQuery + * @see AWSAutoScalingDetachInstancesAnswer + */ +- (BFTask *)detachInstances:(AWSAutoScalingDetachInstancesQuery *)request; + /** *

Disables monitoring of group metrics for the Auto Scaling group specified in AutoScalingGroupName. You can specify the list of affected metrics with the Metrics parameter.

* @@ -321,7 +380,7 @@ - (BFTask *)disableMetricsCollection:(AWSAutoScalingDisableMetricsCollectionQuery *)request; /** - *

Enables monitoring of group metrics for the Auto Scaling group specified in AutoScalingGroupName. You can specify the list of enabled metrics with the Metrics parameter.

Auto Scaling metrics collection can be turned on onlyif the InstanceMonitoring flag,in the Auto Scaling group's launch configuration,is set to True.

+ *

Enables monitoring of group metrics for the Auto Scaling group specified in AutoScalingGroupName. You can specify the list of enabled metrics with the Metrics parameter.

Auto Scaling metrics collection can be turned on only if the InstanceMonitoring flag, in the Auto Scaling group's launch configuration, is set to True.

* * @param request A container for the necessary parameters to execute the EnableMetricsCollection service method. * @@ -331,6 +390,18 @@ */ - (BFTask *)enableMetricsCollection:(AWSAutoScalingEnableMetricsCollectionQuery *)request; +/** + *

Move instances in an Auto Scaling group into a Standby mode.

To learn more about how to put instances into a Standby mode, see Auto Scaling InService State.

+ * + * @param request A container for the necessary parameters to execute the EnterStandby service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingEnterStandbyAnswer. + * + * @see AWSAutoScalingEnterStandbyQuery + * @see AWSAutoScalingEnterStandbyAnswer + */ +- (BFTask *)enterStandby:(AWSAutoScalingEnterStandbyQuery *)request; + /** *

Executes the specified policy.

* @@ -343,7 +414,31 @@ - (BFTask *)executePolicy:(AWSAutoScalingExecutePolicyType *)request; /** - *

Configures an Auto Scaling group to send notifications whenspecified events take place. Subscribers to this topic can havemessages for events delivered to an endpoint such as a web serveror email address.

For more informationsee Get Email Notifications When Your Auto Scaling Group Changes

A new PutNotificationConfiguration overwrites an existing configuration.

+ *

Move an instance out of Standby mode.

To learn more about how to put instances that are in a Standby mode back into service, see Auto Scaling InService State.

+ * + * @param request A container for the necessary parameters to execute the ExitStandby service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingExitStandbyAnswer. + * + * @see AWSAutoScalingExitStandbyQuery + * @see AWSAutoScalingExitStandbyAnswer + */ +- (BFTask *)exitStandby:(AWSAutoScalingExitStandbyQuery *)request; + +/** + *

Creates or updates a lifecycle hook for an Auto Scaling Group.

A lifecycle hook tells Auto Scaling that you want to perform an action on an instance that is not actively in service; for example, either when the instance launches or before the instance terminates.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

+ * + * @param request A container for the necessary parameters to execute the PutLifecycleHook service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingPutLifecycleHookAnswer. On failed execution, task.error may contain an NSError with AWSAutoScalingErrorDomain domian and the following error code: AWSAutoScalingErrorLimitExceeded. + * + * @see AWSAutoScalingPutLifecycleHookType + * @see AWSAutoScalingPutLifecycleHookAnswer + */ +- (BFTask *)putLifecycleHook:(AWSAutoScalingPutLifecycleHookType *)request; + +/** + *

Configures an Auto Scaling group to send notifications when specified events take place. Subscribers to this topic can have messages for events delivered to an endpoint such as a web server or email address.

For more information see Get Email Notifications When Your Auto Scaling Group Changes

A new PutNotificationConfiguration overwrites an existing configuration.

* * @param request A container for the necessary parameters to execute the PutNotificationConfiguration service method. * @@ -354,7 +449,7 @@ - (BFTask *)putNotificationConfiguration:(AWSAutoScalingPutNotificationConfigurationType *)request; /** - *

Creates or updates a policy for an Auto Scaling group.To update an existing policy, use the existing policy name and set the parameter(s) you want to change.Any existing parameter not changed in an update to an existing policy is not changed in this update request.

+ *

Creates or updates a policy for an Auto Scaling group. To update an existing policy, use the existing policy name and set the parameter(s) you want to change. Any existing parameter not changed in an update to an existing policy is not changed in this update request.

* * @param request A container for the necessary parameters to execute the PutScalingPolicy service method. * @@ -366,7 +461,7 @@ - (BFTask *)putScalingPolicy:(AWSAutoScalingPutScalingPolicyType *)request; /** - *

Creates or updates a scheduled scaling action for an Auto Scaling group.When updating a scheduled scaling action, if you leave a parameter unspecified, the corresponding valueremains unchanged in the affected Auto Scaling group.

For information on creating or updating a scheduled action for your Auto Scaling group,see Scale Based on a Schedule.

Auto Scaling supports the date and time expressed in "YYYY-MM-DDThh:mm:ssZ" format in UTC/GMT only.

+ *

Creates or updates a scheduled scaling action for an Auto Scaling group. When updating a scheduled scaling action, if you leave a parameter unspecified, the corresponding value remains unchanged in the affected Auto Scaling group.

For information on creating or updating a scheduled action for your Auto Scaling group, see Scale Based on a Schedule.

* * @param request A container for the necessary parameters to execute the PutScheduledUpdateGroupAction service method. * @@ -376,6 +471,18 @@ */ - (BFTask *)putScheduledUpdateGroupAction:(AWSAutoScalingPutScheduledUpdateGroupActionType *)request; +/** + *

Records a heartbeat for the lifecycle action associated with a specific token. This extends the timeout by the length of time defined by the HeartbeatTimeout parameter of the PutLifecycleHook operation.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

+ * + * @param request A container for the necessary parameters to execute the RecordLifecycleActionHeartbeat service method. + * + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSAutoScalingRecordLifecycleActionHeartbeatAnswer. + * + * @see AWSAutoScalingRecordLifecycleActionHeartbeatType + * @see AWSAutoScalingRecordLifecycleActionHeartbeatAnswer + */ +- (BFTask *)recordLifecycleActionHeartbeat:(AWSAutoScalingRecordLifecycleActionHeartbeatType *)request; + /** *

Resumes all suspended Auto Scaling processes for an Auto Scaling group. For information on suspending and resuming Auto Scaling process, see Suspend and Resume Auto Scaling Process.

* @@ -388,7 +495,7 @@ - (BFTask *)resumeProcesses:(AWSAutoScalingScalingProcessQuery *)request; /** - *

Sets the desired size of the specified AutoScalingGroup.

+ *

Sets the desired size of the specified AutoScalingGroup.

* * @param request A container for the necessary parameters to execute the SetDesiredCapacity service method. * @@ -399,7 +506,7 @@ - (BFTask *)setDesiredCapacity:(AWSAutoScalingSetDesiredCapacityType *)request; /** - *

Sets the health status of a specified instance that belongs to any of your Auto Scaling groups.

For more information, see Configure Health Checks for Your Auto Scaling group.

+ *

Sets the health status of a specified instance that belongs to any of your Auto Scaling groups.

For more information, see Configure Health Checks for Your Auto Scaling group.

* * @param request A container for the necessary parameters to execute the SetInstanceHealth service method. * @@ -410,7 +517,7 @@ - (BFTask *)setInstanceHealth:(AWSAutoScalingSetInstanceHealthQuery *)request; /** - *

Suspends Auto Scaling processes for an Auto Scaling group. To suspend specific process types, specify them by name with the ScalingProcesses.member.N parameter. To suspend all process types, omit the ScalingProcesses.member.N parameter.

Suspending either of the two primary process types, Launch or Terminate, can prevent other process types from functioning properly.

To resume processes that have been suspended, use ResumeProcesses For more information on suspending and resuming Auto Scaling process,see Suspend and Resume Auto Scaling Process.

+ *

Suspends Auto Scaling processes for an Auto Scaling group. To suspend specific process types, specify them by name with the ScalingProcesses.member.N parameter. To suspend all process types, omit the ScalingProcesses.member.N parameter.

Suspending either of the two primary process types, Launch or Terminate, can prevent other process types from functioning properly.

To resume processes that have been suspended, use ResumeProcesses For more information on suspending and resuming Auto Scaling process, see Suspend and Resume Auto Scaling Process.

* * @param request A container for the necessary parameters to execute the SuspendProcesses service method. * @@ -421,7 +528,7 @@ - (BFTask *)suspendProcesses:(AWSAutoScalingScalingProcessQuery *)request; /** - *

Terminates the specified instance. Optionally, the desired group size can be adjusted.

This call simply registers a termination request. The termination of the instance cannot happen immediately. + *

Terminates the specified instance. Optionally, the desired group size can be adjusted.

* * @param request A container for the necessary parameters to execute the TerminateInstanceInAutoScalingGroup service method. * @@ -433,7 +540,7 @@ - (BFTask *)terminateInstanceInAutoScalingGroup:(AWSAutoScalingTerminateInstanceInAutoScalingGroupType *)request; /** - *

Updates the configuration for the specified AutoScalingGroup.

To update an Auto Scaling group with a launch configuration that has the InstanceMonitoring flag set to False, you must first ensure that collection of group metrics is disabled. Otherwise, calls toUpdateAutoScalingGroup will fail. If you have previously enabled group metrics collection,you can disable collection of all group metrics by calling DisableMetricsCollection.

The new settings are registered upon the completion of this call. Any launch configuration settings take effect on any triggers after this call returns. Scaling activities that are currently in progress aren't affected.

  • If a new value is specified for MinSize without specifying the value for DesiredCapacity,and if the new MinSize is larger than the current size of the Auto Scaling Group, there will be an implicit call to SetDesiredCapacity to set the group to the new MinSize.

  • If a new value is specified for MaxSize without specifying the value for DesiredCapacity, andthe new MaxSize is smaller than the current size of the Auto Scaling Group, there willbe an implicit call to SetDesiredCapacity to set the group to the new MaxSize.

  • All other optional parameters are left unchanged if not passed in the request.

+ *

Updates the configuration for the specified AutoScalingGroup.

The new settings are registered upon the completion of this call. Any launch configuration settings take effect on any triggers after this call returns. Scaling activities that are currently in progress aren't affected.

* * @param request A container for the necessary parameters to execute the UpdateAutoScalingGroup service method. * diff --git a/AutoScaling/AWSAutoScaling.m b/AutoScaling/AWSAutoScaling.m index 11ea9698f4e..6c9dfe101de 100644 --- a/AutoScaling/AWSAutoScaling.m +++ b/AutoScaling/AWSAutoScaling.m @@ -15,8 +15,8 @@ #import "AWSAutoScaling.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -47,11 +47,11 @@ + (void)initialize { @"IncompleteSignature" : @(AWSAutoScalingErrorIncompleteSignature), @"InvalidClientTokenId" : @(AWSAutoScalingErrorInvalidClientTokenId), @"MissingAuthenticationToken" : @(AWSAutoScalingErrorMissingAuthenticationToken), - @"AlreadyExistsFault" : @(AWSAutoScalingErrorAlreadyExists), + @"AlreadyExists" : @(AWSAutoScalingErrorAlreadyExists), @"InvalidNextToken" : @(AWSAutoScalingErrorInvalidNextToken), - @"LimitExceededFault" : @(AWSAutoScalingErrorLimitExceeded), - @"ResourceInUseFault" : @(AWSAutoScalingErrorResourceInUse), - @"ScalingActivityInProgressFault" : @(AWSAutoScalingErrorScalingActivityInProgress), + @"LimitExceeded" : @(AWSAutoScalingErrorLimitExceeded), + @"ResourceInUse" : @(AWSAutoScalingErrorResourceInUse), + @"ScalingActivityInProgress" : @(AWSAutoScalingErrorScalingActivityInProgress), }; } @@ -84,7 +84,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSAutoScalingErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -92,12 +92,11 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSAutoScalingErrorDomain code:AWSAutoScalingErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } } - + if (self.outputClass) { responseObject = [MTLJSONAdapter modelOfClass:self.outputClass @@ -117,22 +116,22 @@ @interface AWSAutoScalingRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSAutoScalingRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSAutoScalingErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSAutoScalingErrorIncompleteSignature: case AWSAutoScalingErrorInvalidClientTokenId: case AWSAutoScalingErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -147,15 +146,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSAutoScaling() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -179,25 +177,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceAutoScaling]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceAutoScaling]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSAutoScalingRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -206,16 +204,16 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } networkingRequest.HTTPMethod = HTTPMethod; AWSQueryStringRequestSerializer *requestSerializer = [AWSQueryStringRequestSerializer serializerWithResource:AWSAutoScalingDefinitionFileName actionName:operationName]; - + networkingRequest.requestSerializer = requestSerializer; networkingRequest.responseSerializer = [AWSAutoScalingResponseSerializer serializerWithOutputClass:outputClass @@ -229,16 +227,25 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)attachInstances:(AWSAutoScalingAttachInstancesQuery *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AttachInstances" outputClass:nil]; } +- (BFTask *)completeLifecycleAction:(AWSAutoScalingCompleteLifecycleActionType *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"CompleteLifecycleAction" + outputClass:[AWSAutoScalingCompleteLifecycleActionAnswer class]]; +} + - (BFTask *)createAutoScalingGroup:(AWSAutoScalingCreateAutoScalingGroupType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateAutoScalingGroup" @@ -247,7 +254,7 @@ - (BFTask *)createAutoScalingGroup:(AWSAutoScalingCreateAutoScalingGroupType *)r - (BFTask *)createLaunchConfiguration:(AWSAutoScalingCreateLaunchConfigurationType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateLaunchConfiguration" @@ -256,7 +263,7 @@ - (BFTask *)createLaunchConfiguration:(AWSAutoScalingCreateLaunchConfigurationTy - (BFTask *)createOrUpdateTags:(AWSAutoScalingCreateOrUpdateTagsType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateOrUpdateTags" @@ -265,7 +272,7 @@ - (BFTask *)createOrUpdateTags:(AWSAutoScalingCreateOrUpdateTagsType *)request { - (BFTask *)deleteAutoScalingGroup:(AWSAutoScalingDeleteAutoScalingGroupType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteAutoScalingGroup" @@ -274,16 +281,25 @@ - (BFTask *)deleteAutoScalingGroup:(AWSAutoScalingDeleteAutoScalingGroupType *)r - (BFTask *)deleteLaunchConfiguration:(AWSAutoScalingLaunchConfigurationNameType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteLaunchConfiguration" outputClass:nil]; } +- (BFTask *)deleteLifecycleHook:(AWSAutoScalingDeleteLifecycleHookType *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"DeleteLifecycleHook" + outputClass:[AWSAutoScalingDeleteLifecycleHookAnswer class]]; +} + - (BFTask *)deleteNotificationConfiguration:(AWSAutoScalingDeleteNotificationConfigurationType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteNotificationConfiguration" @@ -292,7 +308,7 @@ - (BFTask *)deleteNotificationConfiguration:(AWSAutoScalingDeleteNotificationCon - (BFTask *)deletePolicy:(AWSAutoScalingDeletePolicyType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeletePolicy" @@ -301,7 +317,7 @@ - (BFTask *)deletePolicy:(AWSAutoScalingDeletePolicyType *)request { - (BFTask *)deleteScheduledAction:(AWSAutoScalingDeleteScheduledActionType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteScheduledAction" @@ -310,7 +326,7 @@ - (BFTask *)deleteScheduledAction:(AWSAutoScalingDeleteScheduledActionType *)req - (BFTask *)deleteTags:(AWSAutoScalingDeleteTagsType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteTags" @@ -319,7 +335,7 @@ - (BFTask *)deleteTags:(AWSAutoScalingDeleteTagsType *)request { - (BFTask *)describeAccountLimits:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAccountLimits" @@ -328,7 +344,7 @@ - (BFTask *)describeAccountLimits:(AWSRequest *)request { - (BFTask *)describeAdjustmentTypes:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAdjustmentTypes" @@ -337,7 +353,7 @@ - (BFTask *)describeAdjustmentTypes:(AWSRequest *)request { - (BFTask *)describeAutoScalingGroups:(AWSAutoScalingAutoScalingGroupNamesType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAutoScalingGroups" @@ -346,7 +362,7 @@ - (BFTask *)describeAutoScalingGroups:(AWSAutoScalingAutoScalingGroupNamesType * - (BFTask *)describeAutoScalingInstances:(AWSAutoScalingDescribeAutoScalingInstancesType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAutoScalingInstances" @@ -355,7 +371,7 @@ - (BFTask *)describeAutoScalingInstances:(AWSAutoScalingDescribeAutoScalingInsta - (BFTask *)describeAutoScalingNotificationTypes:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAutoScalingNotificationTypes" @@ -364,16 +380,34 @@ - (BFTask *)describeAutoScalingNotificationTypes:(AWSRequest *)request { - (BFTask *)describeLaunchConfigurations:(AWSAutoScalingLaunchConfigurationNamesType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeLaunchConfigurations" outputClass:[AWSAutoScalingLaunchConfigurationsType class]]; } +- (BFTask *)describeLifecycleHookTypes:(AWSRequest *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"DescribeLifecycleHookTypes" + outputClass:[AWSAutoScalingDescribeLifecycleHookTypesAnswer class]]; +} + +- (BFTask *)describeLifecycleHooks:(AWSAutoScalingDescribeLifecycleHooksType *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"DescribeLifecycleHooks" + outputClass:[AWSAutoScalingDescribeLifecycleHooksAnswer class]]; +} + - (BFTask *)describeMetricCollectionTypes:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeMetricCollectionTypes" @@ -382,7 +416,7 @@ - (BFTask *)describeMetricCollectionTypes:(AWSRequest *)request { - (BFTask *)describeNotificationConfigurations:(AWSAutoScalingDescribeNotificationConfigurationsType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeNotificationConfigurations" @@ -391,7 +425,7 @@ - (BFTask *)describeNotificationConfigurations:(AWSAutoScalingDescribeNotificati - (BFTask *)describePolicies:(AWSAutoScalingDescribePoliciesType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribePolicies" @@ -400,7 +434,7 @@ - (BFTask *)describePolicies:(AWSAutoScalingDescribePoliciesType *)request { - (BFTask *)describeScalingActivities:(AWSAutoScalingDescribeScalingActivitiesType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeScalingActivities" @@ -409,7 +443,7 @@ - (BFTask *)describeScalingActivities:(AWSAutoScalingDescribeScalingActivitiesTy - (BFTask *)describeScalingProcessTypes:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeScalingProcessTypes" @@ -418,7 +452,7 @@ - (BFTask *)describeScalingProcessTypes:(AWSRequest *)request { - (BFTask *)describeScheduledActions:(AWSAutoScalingDescribeScheduledActionsType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeScheduledActions" @@ -427,7 +461,7 @@ - (BFTask *)describeScheduledActions:(AWSAutoScalingDescribeScheduledActionsType - (BFTask *)describeTags:(AWSAutoScalingDescribeTagsType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeTags" @@ -436,16 +470,25 @@ - (BFTask *)describeTags:(AWSAutoScalingDescribeTagsType *)request { - (BFTask *)describeTerminationPolicyTypes:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeTerminationPolicyTypes" outputClass:[AWSAutoScalingDescribeTerminationPolicyTypesAnswer class]]; } +- (BFTask *)detachInstances:(AWSAutoScalingDetachInstancesQuery *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"DetachInstances" + outputClass:[AWSAutoScalingDetachInstancesAnswer class]]; +} + - (BFTask *)disableMetricsCollection:(AWSAutoScalingDisableMetricsCollectionQuery *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DisableMetricsCollection" @@ -454,25 +497,52 @@ - (BFTask *)disableMetricsCollection:(AWSAutoScalingDisableMetricsCollectionQuer - (BFTask *)enableMetricsCollection:(AWSAutoScalingEnableMetricsCollectionQuery *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"EnableMetricsCollection" outputClass:nil]; } +- (BFTask *)enterStandby:(AWSAutoScalingEnterStandbyQuery *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"EnterStandby" + outputClass:[AWSAutoScalingEnterStandbyAnswer class]]; +} + - (BFTask *)executePolicy:(AWSAutoScalingExecutePolicyType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ExecutePolicy" outputClass:nil]; } +- (BFTask *)exitStandby:(AWSAutoScalingExitStandbyQuery *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"ExitStandby" + outputClass:[AWSAutoScalingExitStandbyAnswer class]]; +} + +- (BFTask *)putLifecycleHook:(AWSAutoScalingPutLifecycleHookType *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"PutLifecycleHook" + outputClass:[AWSAutoScalingPutLifecycleHookAnswer class]]; +} + - (BFTask *)putNotificationConfiguration:(AWSAutoScalingPutNotificationConfigurationType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"PutNotificationConfiguration" @@ -481,7 +551,7 @@ - (BFTask *)putNotificationConfiguration:(AWSAutoScalingPutNotificationConfigura - (BFTask *)putScalingPolicy:(AWSAutoScalingPutScalingPolicyType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"PutScalingPolicy" @@ -490,16 +560,25 @@ - (BFTask *)putScalingPolicy:(AWSAutoScalingPutScalingPolicyType *)request { - (BFTask *)putScheduledUpdateGroupAction:(AWSAutoScalingPutScheduledUpdateGroupActionType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"PutScheduledUpdateGroupAction" outputClass:nil]; } +- (BFTask *)recordLifecycleActionHeartbeat:(AWSAutoScalingRecordLifecycleActionHeartbeatType *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"RecordLifecycleActionHeartbeat" + outputClass:[AWSAutoScalingRecordLifecycleActionHeartbeatAnswer class]]; +} + - (BFTask *)resumeProcesses:(AWSAutoScalingScalingProcessQuery *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ResumeProcesses" @@ -508,7 +587,7 @@ - (BFTask *)resumeProcesses:(AWSAutoScalingScalingProcessQuery *)request { - (BFTask *)setDesiredCapacity:(AWSAutoScalingSetDesiredCapacityType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetDesiredCapacity" @@ -517,7 +596,7 @@ - (BFTask *)setDesiredCapacity:(AWSAutoScalingSetDesiredCapacityType *)request { - (BFTask *)setInstanceHealth:(AWSAutoScalingSetInstanceHealthQuery *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetInstanceHealth" @@ -526,7 +605,7 @@ - (BFTask *)setInstanceHealth:(AWSAutoScalingSetInstanceHealthQuery *)request { - (BFTask *)suspendProcesses:(AWSAutoScalingScalingProcessQuery *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SuspendProcesses" @@ -535,7 +614,7 @@ - (BFTask *)suspendProcesses:(AWSAutoScalingScalingProcessQuery *)request { - (BFTask *)terminateInstanceInAutoScalingGroup:(AWSAutoScalingTerminateInstanceInAutoScalingGroupType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"TerminateInstanceInAutoScalingGroup" @@ -544,7 +623,7 @@ - (BFTask *)terminateInstanceInAutoScalingGroup:(AWSAutoScalingTerminateInstance - (BFTask *)updateAutoScalingGroup:(AWSAutoScalingUpdateAutoScalingGroupType *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"UpdateAutoScalingGroup" diff --git a/AutoScaling/AWSAutoScalingModel.h b/AutoScaling/AWSAutoScalingModel.h index da7e22aef42..d0b0ab4e546 100644 --- a/AutoScaling/AWSAutoScalingModel.h +++ b/AutoScaling/AWSAutoScalingModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSAutoScalingErrorDomain; @@ -34,10 +34,18 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingErrorType) { typedef NS_ENUM(NSInteger, AWSAutoScalingLifecycleState) { AWSAutoScalingLifecycleStateUnknown, AWSAutoScalingLifecycleStatePending, + AWSAutoScalingLifecycleStatePendingWait, + AWSAutoScalingLifecycleStatePendingProceed, AWSAutoScalingLifecycleStateQuarantined, AWSAutoScalingLifecycleStateInService, AWSAutoScalingLifecycleStateTerminating, + AWSAutoScalingLifecycleStateTerminatingWait, + AWSAutoScalingLifecycleStateTerminatingProceed, AWSAutoScalingLifecycleStateTerminated, + AWSAutoScalingLifecycleStateDetaching, + AWSAutoScalingLifecycleStateDetached, + AWSAutoScalingLifecycleStateEnteringStandby, + AWSAutoScalingLifecycleStateStandby, }; typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @@ -47,6 +55,8 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { AWSAutoScalingScalingActivityStatusCodeWaitingForInstanceId, AWSAutoScalingScalingActivityStatusCodePreInService, AWSAutoScalingScalingActivityStatusCodeInProgress, + AWSAutoScalingScalingActivityStatusCodeWaitingForELBConnectionDraining, + AWSAutoScalingScalingActivityStatusCodeMidLifecycleAction, AWSAutoScalingScalingActivityStatusCodeSuccessful, AWSAutoScalingScalingActivityStatusCodeFailed, AWSAutoScalingScalingActivityStatusCodeCancelled, @@ -64,10 +74,14 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @class AWSAutoScalingAutoScalingInstanceDetails; @class AWSAutoScalingAutoScalingInstancesType; @class AWSAutoScalingBlockDeviceMapping; +@class AWSAutoScalingCompleteLifecycleActionAnswer; +@class AWSAutoScalingCompleteLifecycleActionType; @class AWSAutoScalingCreateAutoScalingGroupType; @class AWSAutoScalingCreateLaunchConfigurationType; @class AWSAutoScalingCreateOrUpdateTagsType; @class AWSAutoScalingDeleteAutoScalingGroupType; +@class AWSAutoScalingDeleteLifecycleHookAnswer; +@class AWSAutoScalingDeleteLifecycleHookType; @class AWSAutoScalingDeleteNotificationConfigurationType; @class AWSAutoScalingDeletePolicyType; @class AWSAutoScalingDeleteScheduledActionType; @@ -76,6 +90,9 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @class AWSAutoScalingDescribeAdjustmentTypesAnswer; @class AWSAutoScalingDescribeAutoScalingInstancesType; @class AWSAutoScalingDescribeAutoScalingNotificationTypesAnswer; +@class AWSAutoScalingDescribeLifecycleHookTypesAnswer; +@class AWSAutoScalingDescribeLifecycleHooksAnswer; +@class AWSAutoScalingDescribeLifecycleHooksType; @class AWSAutoScalingDescribeMetricCollectionTypesAnswer; @class AWSAutoScalingDescribeNotificationConfigurationsAnswer; @class AWSAutoScalingDescribeNotificationConfigurationsType; @@ -84,11 +101,17 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @class AWSAutoScalingDescribeScheduledActionsType; @class AWSAutoScalingDescribeTagsType; @class AWSAutoScalingDescribeTerminationPolicyTypesAnswer; +@class AWSAutoScalingDetachInstancesAnswer; +@class AWSAutoScalingDetachInstancesQuery; @class AWSAutoScalingDisableMetricsCollectionQuery; @class AWSAutoScalingEbs; @class AWSAutoScalingEnableMetricsCollectionQuery; @class AWSAutoScalingEnabledMetric; +@class AWSAutoScalingEnterStandbyAnswer; +@class AWSAutoScalingEnterStandbyQuery; @class AWSAutoScalingExecutePolicyType; +@class AWSAutoScalingExitStandbyAnswer; +@class AWSAutoScalingExitStandbyQuery; @class AWSAutoScalingFilter; @class AWSAutoScalingInstance; @class AWSAutoScalingInstanceMonitoring; @@ -96,6 +119,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @class AWSAutoScalingLaunchConfigurationNameType; @class AWSAutoScalingLaunchConfigurationNamesType; @class AWSAutoScalingLaunchConfigurationsType; +@class AWSAutoScalingLifecycleHook; @class AWSAutoScalingMetricCollectionType; @class AWSAutoScalingMetricGranularityType; @class AWSAutoScalingNotificationConfiguration; @@ -103,9 +127,13 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @class AWSAutoScalingPolicyARNType; @class AWSAutoScalingProcessType; @class AWSAutoScalingProcessesType; +@class AWSAutoScalingPutLifecycleHookAnswer; +@class AWSAutoScalingPutLifecycleHookType; @class AWSAutoScalingPutNotificationConfigurationType; @class AWSAutoScalingPutScalingPolicyType; @class AWSAutoScalingPutScheduledUpdateGroupActionType; +@class AWSAutoScalingRecordLifecycleActionHeartbeatAnswer; +@class AWSAutoScalingRecordLifecycleActionHeartbeatType; @class AWSAutoScalingScalingPolicy; @class AWSAutoScalingScalingProcessQuery; @class AWSAutoScalingScheduledActionsType; @@ -123,7 +151,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The output for the DescribeScalingActivities action.

* Required parameters: [Activities] */ -@interface AWSAutoScalingActivitiesType : AZModel +@interface AWSAutoScalingActivitiesType : AWSModel /** @@ -139,10 +167,10 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end /** - *

A scaling Activity is a long-running process thatrepresents a change to your AutoScalingGroup,such as changing the size of the group.It can also be a process to replace an instance,or a process to perform any other long-running operationssupported by the API.

+ *

A scaling Activity is a long-running process that represents a change to your AutoScalingGroup, such as changing the size of the group. It can also be a process to replace an instance, or a process to perform any other long-running operations supported by the API.

* Required parameters: [ActivityId, AutoScalingGroupName, Cause, StartTime, StatusCode] */ -@interface AWSAutoScalingActivity : AZModel +@interface AWSAutoScalingActivity : AWSModel /** @@ -159,11 +187,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

Contains the reason the activity was begun.

*/ @property (nonatomic, strong) NSString *cause; - -/** - *

Contains a friendly, more verbose description of the scaling activity.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

Contains details of the scaling activity.

@@ -200,7 +224,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The output for the TerminateInstanceInAutoScalingGroup action.

*/ -@interface AWSAutoScalingActivityType : AZModel +@interface AWSAutoScalingActivityType : AWSModel /** @@ -211,9 +235,9 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end /** - *

Specifies whether the PutScalingPolicyScalingAdjustment parameter isan absolute number or a percentage of the current capacity.

+ *

Specifies whether the PutScalingPolicyScalingAdjustment parameter is an absolute number or a percentage of the current capacity.

*/ -@interface AWSAutoScalingAdjustmentType : AZModel +@interface AWSAutoScalingAdjustmentType : AWSModel /** @@ -226,7 +250,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The Alarm data type.

*/ -@interface AWSAutoScalingAlarm : AZModel +@interface AWSAutoScalingAlarm : AWSModel /** @@ -245,12 +269,12 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

The name of the Auto Scaling group to which to attach the specified instance(s).

+ *

The name of the Auto Scaling group to which to attach the specified instance(s).

*/ @property (nonatomic, strong) NSString *autoScalingGroupName; /** - *

One or more IDs of the Amazon EC2 instances to attach to the specified Auto Scaling group.You must specify at least one instance ID.

+ *

One or more IDs of the Amazon EC2 instances to attach to the specified Auto Scaling group. You must specify at least one instance ID.

*/ @property (nonatomic, strong) NSArray *instanceIds; @@ -260,7 +284,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The AutoScalingGroup data type.

* Required parameters: [AutoScalingGroupName, LaunchConfigurationName, MinSize, MaxSize, DesiredCapacity, DefaultCooldown, AvailabilityZones, HealthCheckType, CreatedTime] */ -@interface AWSAutoScalingAutoScalingGroup : AZModel +@interface AWSAutoScalingAutoScalingGroup : AWSModel /** @@ -334,12 +358,12 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *minSize; /** - *

The name of the cluster placement group, if applicable. For more information, go to Using Cluster Instances in the Amazon EC2 User Guide.

+ *

The name of the cluster placement group, if applicable. For more information, go to Using Cluster Instances in the Amazon EC2 User Guide.

*/ @property (nonatomic, strong) NSString *placementGroup; /** - *

The current state of the Auto Scaling group when a DeleteAutoScalingGroup action is in progress.

+ *

The current state of the Auto Scaling group when a DeleteAutoScalingGroup action is in progress.

*/ @property (nonatomic, strong) NSString *status; @@ -354,12 +378,12 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSArray *tags; /** - *

A standalone termination policy or a list of termination policies for this Auto Scaling group.

+ *

A standalone termination policy or a list of termination policies for this Auto Scaling group.

*/ @property (nonatomic, strong) NSArray *terminationPolicies; /** - *

The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in acomma-separated list.

When you specify VPCZoneIdentifier with AvailabilityZones, ensure that thesubnets' Availability Zones match the values you specify for AvailabilityZones.

+ *

The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in a comma-separated list.

When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the subnets' Availability Zones match the values you specify for AvailabilityZones.

*/ @property (nonatomic, strong) NSString *VPCZoneIdentifier; @@ -372,7 +396,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

A list of Auto Scaling group names.

+ *

A list of Auto Scaling group names.

*/ @property (nonatomic, strong) NSArray *autoScalingGroupNames; @@ -392,7 +416,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The AutoScalingGroupsType data type.

* Required parameters: [AutoScalingGroups] */ -@interface AWSAutoScalingAutoScalingGroupsType : AZModel +@interface AWSAutoScalingAutoScalingGroupsType : AWSModel /** @@ -411,7 +435,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The AutoScalingInstanceDetails data type.

* Required parameters: [InstanceId, AutoScalingGroupName, AvailabilityZone, LifecycleState, HealthStatus, LaunchConfigurationName] */ -@interface AWSAutoScalingAutoScalingInstanceDetails : AZModel +@interface AWSAutoScalingAutoScalingInstanceDetails : AWSModel /** @@ -425,7 +449,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *availabilityZone; /** - *

The health status of this instance."Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy. Auto Scaling should terminate and replace it.

+ *

The health status of this instance. "Healthy" means that the instance is healthy and should remain in service. "Unhealthy" means that the instance is unhealthy. Auto Scaling should terminate and replace it.

*/ @property (nonatomic, strong) NSString *healthStatus; @@ -449,7 +473,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The AutoScalingInstancesType data type.

*/ -@interface AWSAutoScalingAutoScalingInstancesType : AZModel +@interface AWSAutoScalingAutoScalingInstancesType : AWSModel /** @@ -468,7 +492,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The BlockDeviceMapping data type.

* Required parameters: [DeviceName] */ -@interface AWSAutoScalingBlockDeviceMapping : AZModel +@interface AWSAutoScalingBlockDeviceMapping : AWSModel /** @@ -482,7 +506,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) AWSAutoScalingEbs *ebs; /** - *

Suppresses the device mapping.

If NoDevice is set to true for the root device, the instance might fail the EC2 health check.Auto Scaling launches a replacement instance if the instance fails the health check. + *

Suppresses the device mapping.

*/ @property (nonatomic, strong) NSNumber *noDevice; @@ -493,6 +517,39 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end +/** + *

The output of the CompleteLifecycleAction.

+ */ +@interface AWSAutoScalingCompleteLifecycleActionAnswer : AWSModel + + +@end + +@interface AWSAutoScalingCompleteLifecycleActionType : AWSRequest + + +/** + *

The name of the Auto Scaling group to which the lifecycle hook belongs.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

The action the Auto Scaling group should take. The value for this parameter can be either CONTINUE or ABANDON.

+ */ +@property (nonatomic, strong) NSString *lifecycleActionResult; + +/** + *

A universally unique identifier (UUID) that identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook.

+ */ +@property (nonatomic, strong) NSString *lifecycleActionToken; + +/** + *

The name of the lifecycle hook.

+ */ +@property (nonatomic, strong) NSString *lifecycleHookName; + +@end + /** *

* Required parameters: [AutoScalingGroupName, MinSize, MaxSize] @@ -511,37 +568,37 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSArray *availabilityZones; /** - *

The amount of time, in seconds, between a successful scaling activity and the succeeding scaling activity.

If a DefaultCooldown period is not specified, Auto Scaling uses the default value of 300 as the default cool down period for the Auto Scaling group. For more information,see Cooldown Period

+ *

The amount of time, in seconds, between a successful scaling activity and the succeeding scaling activity.

If a DefaultCooldown period is not specified, Auto Scaling uses the default value of 300 as the default cool down period for the Auto Scaling group. For more information, see Cooldown Period

*/ @property (nonatomic, strong) NSNumber *defaultCooldown; /** - *

The number of Amazon EC2 instances that should be running in the group. The desired capacity must be greater than or equal to the minimum size and less than orequal to the maximum size specified for the Auto Scaling group.

+ *

The number of Amazon EC2 instances that should be running in the group. The desired capacity must be greater than or equal to the minimum size and less than or equal to the maximum size specified for the Auto Scaling group.

*/ @property (nonatomic, strong) NSNumber *desiredCapacity; /** - *

Length of time in seconds after a new Amazon EC2 instance comes into service that Auto Scaling starts checking its health. During this time any health check failure for the that instance is ignored.

This is required if you are adding ELB health check. Frequently, new instances need to warm up, briefly,before they can pass a health check. To provide ample warm-up time, set the health check grace period of the group tomatch the expected startup period of your application.

+ *

Length of time in seconds after a new Amazon EC2 instance comes into service that Auto Scaling starts checking its health. During this time any health check failure for the that instance is ignored.

This is required if you are adding ELB health check. Frequently, new instances need to warm up, briefly, before they can pass a health check. To provide ample warm-up time, set the health check grace period of the group to match the expected startup period of your application.

For more information, see Add an Elastic Load Balancing Health Check.

*/ @property (nonatomic, strong) NSNumber *healthCheckGracePeriod; /** - *

The service you want the health checks from, Amazon EC2 or Elastic Load Balancer. Valid values are EC2 or ELB.

By default, the Auto Scaling health check uses the results of Amazon EC2 instance status checks to determine the health of an instance. For more information,see Health Check.

+ *

The service you want the health checks from, Amazon EC2 or Elastic Load Balancer. Valid values are EC2 or ELB.

By default, the Auto Scaling health check uses the results of Amazon EC2 instance status checks to determine the health of an instance. For more information, see Health Check.

*/ @property (nonatomic, strong) NSString *healthCheckType; /** - *

The ID of the Amazon EC2 instance you want to use to create the Auto Scaling group. Use this attribute if you want to create an Auto Scaling group using an EC2 instance instead of a launch configuration.

When you use an instance to create an Auto Scaling group, a new launch configuration is first createdand then associated with the Auto Scaling group. The new launch configuration derivesall its attributes from the instance that is used to create the Auto Scaling group,with the exception of BlockDeviceMapping.

For more information, see Create an Auto Scaling Group Using EC2 Instance in the Auto Scaling Developer Guide.

+ *

The ID of the Amazon EC2 instance you want to use to create the Auto Scaling group. Use this attribute if you want to create an Auto Scaling group using an EC2 instance instead of a launch configuration.

When you use an instance to create an Auto Scaling group, a new launch configuration is first created and then associated with the Auto Scaling group. The new launch configuration derives all its attributes from the instance that is used to create the Auto Scaling group, with the exception of BlockDeviceMapping.

For more information, see Create an Auto Scaling Group Using EC2 Instance in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSString *instanceId; /** - *

The name of an existing launch configuration to use to launch new instances. Use this attributeif you want to create an Auto Scaling group using an existing launch configuration instead of an EC2 instance.

+ *

The name of an existing launch configuration to use to launch new instances. Use this attribute if you want to create an Auto Scaling group using an existing launch configuration instead of an EC2 instance.

*/ @property (nonatomic, strong) NSString *launchConfigurationName; /** - *

A list of existing Elastic Load Balancing load balancers to use. The load balancers must be associated with the AWS account.

For information on using load balancers, see Use Load Balancer to Load Balance Your Auto Scaling Group in the Auto Scaling Developer Guide.

+ *

A list of existing Elastic Load Balancing load balancers to use. The load balancers must be associated with the AWS account.

For information on using load balancers, see Load Balance Your Auto Scaling Group in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSArray *loadBalancerNames; @@ -556,22 +613,22 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *minSize; /** - *

Physical location of an existing cluster placement group into which you want to launch your instances. For information about cluster placement group, seeUsing Cluster Instances

+ *

Physical location of an existing cluster placement group into which you want to launch your instances. For information about cluster placement group, see Using Cluster Instances

*/ @property (nonatomic, strong) NSString *placementGroup; /** - *

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value,and a propagate flag. Valid values: key=value, value=value, propagate=true or false.Value and propagate are optional parameters.

For information about using tags, see Tag Your Auto Scaling Groups and Amazon EC2 Instances in the Auto Scaling Developer Guide.

+ *

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. Valid values: key=value, value=value, propagate=true or false. Value and propagate are optional parameters.

For information about using tags, see Tag Your Auto Scaling Groups and Amazon EC2 Instances in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSArray *tags; /** - *

A standalone termination policy or a list of termination policies used to select the instance to terminate.The policies are executed in the order that they are listed.

For more information on configuring a termination policy for your Auto Scaling group, seeInstance Termination Policy for Your Auto Scaling Group inthe Auto Scaling Developer Guide.

+ *

A standalone termination policy or a list of termination policies used to select the instance to terminate. The policies are executed in the order that they are listed.

For more information on configuring a termination policy for your Auto Scaling group, see Instance Termination Policy for Your Auto Scaling Group in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSArray *terminationPolicies; /** - *

A comma-separated list of subnet identifiers of Amazon Virtual Private Clouds (Amazon VPCs).

If you specify subnets and Availability Zones with this call, ensure that the subnets' Availability Zonesmatch the Availability Zones specified.

For information on launching your Auto Scaling group into Amazon VPC subnets, see Launch Auto Scaling Instances into Amazon VPC in the Auto Scaling Developer Guide .

+ *

A comma-separated list of subnet identifiers of Amazon Virtual Private Clouds (Amazon VPCs).

If you specify subnets and Availability Zones with this call, ensure that the subnets' Availability Zones match the Availability Zones specified.

For information on launching your Auto Scaling group into Amazon VPC subnets, see Auto Scaling in Amazon Virtual Private Cloud in the Auto Scaling Developer Guide .

*/ @property (nonatomic, strong) NSString *VPCZoneIdentifier; @@ -585,7 +642,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

Used for Auto Scaling groups that launch instances into an Amazon Virtual Private Cloud (Amazon VPC). Specifies whether to assign a public IP address to each instance launched in a Amazon VPC.

If you specify a value for this parameter, be sure to specify at least one VPC subnet using the VPCZoneIdentifier parameter when you create your Auto Scaling group.

Default: If the instance is launched into a default subnet in a default VPC, the default is true.If the instance is launched into a nondefault subnet in a VPC, the default is false. For information about the platforms supported by Auto Scaling, seeGet Started with Auto Scaling Using the Command Line Interface.

+ *

Used for Auto Scaling groups that launch instances into an Amazon Virtual Private Cloud (Amazon VPC). Specifies whether to assign a public IP address to each instance launched in a Amazon VPC. For more information, see Auto Scaling in Amazon Virtual Private Cloud.

Default: If the instance is launched into a default subnet in a default VPC, the default is true. If the instance is launched into a nondefault subnet in a VPC, the default is false. For information about default VPC and VPC platforms, see Supported Platforms.

*/ @property (nonatomic, strong) NSNumber *associatePublicIpAddress; @@ -595,27 +652,27 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSArray *blockDeviceMappings; /** - *

Whether the instance is optimized for EBS I/O.The optimization providesdedicated throughput to Amazon EBS and an optimized configuration stack to provideoptimal EBS I/O performance. This optimization is not available with all instancetypes. Additional usage charges apply when using an EBS Optimized instance.By default the instance is not optimized for EBS I/O.For information about EBS-optimized instances, go to EBS-Optimized Instancesin the Amazon Elastic Compute Cloud User Guide.

+ *

Whether the instance is optimized for EBS I/O. The optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization is not available with all instance types. Additional usage charges apply when using an EBS Optimized instance. By default the instance is not optimized for EBS I/O. For information about EBS-optimized instances, go to EBS-Optimized Instances in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSNumber *ebsOptimized; /** - *

The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

Amazon EC2 instances launched with an IAM role willautomatically have AWS security credentials available. You can use IAM roles with Auto Scaling to automatically enable applications running on your Amazon EC2 instancesto securely access other AWS resources. For information on launching EC2 instances with an IAM role, go to Launching Auto Scaling Instances With an IAM Role in the Auto Scaling Developer Guide.

+ *

The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

Amazon EC2 instances launched with an IAM role will automatically have AWS security credentials available. You can use IAM roles with Auto Scaling to automatically enable applications running on your Amazon EC2 instances to securely access other AWS resources. For information on launching EC2 instances with an IAM role, go to Launching Auto Scaling Instances With an IAM Role in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSString *iamInstanceProfile; /** - *

Unique ID of the Amazon Machine Image (AMI) you want to use to launch your EC2 instances. For information about finding Amazon EC2 AMIs,see Finding a Suitable AMI in the Amazon Elastic Compute Cloud User Guide.

+ *

Unique ID of the Amazon Machine Image (AMI) you want to use to launch your EC2 instances. For information about finding Amazon EC2 AMIs, see Finding a Suitable AMI in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSString *imageId; /** - *

The ID of the Amazon EC2 instance you want to use to create the launch configuration. Use this attribute if you wantthe launch configuration to derive its attributes from an EC2 instance.

When you use an instance to create a launch configuration, all you need to specify is the InstanceId.The new launch configuration, by default, derives all the attributes from the specified instance with the exceptionof BlockDeviceMapping.

If you want to create a launch configuration with BlockDeviceMapping or override any other instanceattributes, specify them as part of the same request.

For more information on using an InstanceID to create a launch configuration, seeCreate a Launch Configuration Using an Amazon EC2 Instance inthe Auto Scaling Developer Guide.

+ *

The ID of the Amazon EC2 instance you want to use to create the launch configuration. Use this attribute if you want the launch configuration to derive its attributes from an EC2 instance.

When you use an instance to create a launch configuration, all you need to specify is the InstanceId. The new launch configuration, by default, derives all the attributes from the specified instance with the exception of BlockDeviceMapping.

If you want to create a launch configuration with BlockDeviceMapping or override any other instance attributes, specify them as part of the same request.

For more information on using an InstanceID to create a launch configuration, see Create a Launch Configuration Using an Amazon EC2 Instance in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSString *instanceId; /** - *

Enables detailed monitoring if it is disabled. Detailed monitoring is enabled by default.

When detailed monitoring is enabled, Amazon Cloudwatch will generate metrics every minute and your account will be charged a fee.When you disable detailed monitoring, by specifying False, Cloudwatch will generate metrics every 5 minutes.For more information, see Monitor Your Auto Scaling Instances. For information about Amazon CloudWatch, see the Amazon CloudWatch Developer Guide.

+ *

Enables detailed monitoring if it is disabled. Detailed monitoring is enabled by default.

When detailed monitoring is enabled, Amazon Cloudwatch will generate metrics every minute and your account will be charged a fee. When you disable detailed monitoring, by specifying False, Cloudwatch will generate metrics every 5 minutes. For more information, see Monitor Your Auto Scaling Instances. For information about Amazon CloudWatch, see the Amazon CloudWatch Developer Guide.

*/ @property (nonatomic, strong) AWSAutoScalingInstanceMonitoring *instanceMonitoring; @@ -630,7 +687,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *kernelId; /** - *

The name of the Amazon EC2 key pair.For more information, see Getting a Key Pair in the Amazon Elastic Compute Cloud User Guide.

+ *

The name of the Amazon EC2 key pair. For more information, see Getting a Key Pair in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSString *keyName; @@ -640,7 +697,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *launchConfigurationName; /** - *

The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware and can only be launched into a VPC.

For more information, see Auto Scaling in Amazon Virtual Private Cloud in the Auto Scaling Developer Guide.

Valid values: default | dedicated

+ *

The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware and can only be launched in a VPC.

You must set the value of this parameter to dedicated if want to launch Dedicated Instances in a shared tenancy VPC (VPC with instance placement tenancy attribute set to default).

If you specify a value for this parameter, be sure to specify at least one VPC subnet using the VPCZoneIdentifier parameter when you create your Auto Scaling group.

For more information, see Auto Scaling in Amazon Virtual Private Cloud in the Auto Scaling Developer Guide.

Valid values: default | dedicated

*/ @property (nonatomic, strong) NSString *placementTenancy; @@ -650,17 +707,17 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *ramdiskId; /** - *

The security groups with which to associate Amazon EC2 or Amazon VPCinstances.

If your instances are launched in EC2, you can either specify Amazon EC2 security group names or the security group IDs. For more information about Amazon EC2 security groups, see Using Security Groupsin the Amazon Elastic Compute Cloud User Guide.

If your instances are launched within VPC, specify Amazon VPC security group IDs.For more information about Amazon VPC security groups, see Security Groups in the Amazon Virtual Private Cloud User Guide.

+ *

The security groups with which to associate Amazon EC2 or Amazon VPC instances.

If your instances are launched in EC2, you can either specify Amazon EC2 security group names or the security group IDs. For more information about Amazon EC2 security groups, see Using Security Groups in the Amazon Elastic Compute Cloud User Guide.

If your instances are launched within VPC, specify Amazon VPC security group IDs. For more information about Amazon VPC security groups, see Security Groups in the Amazon Virtual Private Cloud User Guide.

*/ @property (nonatomic, strong) NSArray *securityGroups; /** - *

The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when theprice you specify exceeds the current Spot market price. For more information on launching Spot Instances, see Using Auto Scaling to Launch Spot Instances in the Auto Scaling Developer Guide.

+ *

The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when the price you specify exceeds the current Spot market price. For more information on launching Spot Instances, see Using Auto Scaling to Launch Spot Instances in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSString *spotPrice; /** - *

The user data to make available to the launched Amazon EC2 instances. For more information about Amazon EC2 user data, seeUser Data Retrieval in the Amazon Elastic Compute Cloud User Guide.

At this time, Auto Scaling launch configurations don't support compressed(e.g. zipped) user data files. + *

The user data to make available to the launched Amazon EC2 instances. For more information about Amazon EC2 user data, see User Data Retrieval in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSString *userData; @@ -674,7 +731,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value,and a propagate flag. The resource type and resource ID identify the type and name of resource for which thetag is created. Currently, auto-scaling-group is the only supported resource type. The validvalue for the resource ID is groupname.

The PropagateAtLaunch flag defines whether the new tag will be applied to instances launched bythe Auto Scaling group. Valid values are true or false. However, instances that are alreadyrunning will not get the new or updated tag. Likewise, when you modify a tag, the updated version will beapplied only to new instances launched by the Auto Scaling group after the change. Running instances that hadthe previous version of the tag will continue to have the older tag.

When you create a tag and a tag of the same name already exists, the operation overwrites the previous tagdefinition, but you will not get an error message.

+ *

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. The resource type and resource ID identify the type and name of resource for which the tag is created. Currently, auto-scaling-group is the only supported resource type. The valid value for the resource ID is groupname.

The PropagateAtLaunch flag defines whether the new tag will be applied to instances launched by the Auto Scaling group. Valid values are true or false. However, instances that are already running will not get the new or updated tag. Likewise, when you modify a tag, the updated version will be applied only to new instances launched by the Auto Scaling group after the change. Running instances that had the previous version of the tag will continue to have the older tag.

When you create a tag and a tag of the same name already exists, the operation overwrites the previous tag definition, but you will not get an error message.

*/ @property (nonatomic, strong) NSArray *tags; @@ -693,12 +750,35 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *autoScalingGroupName; /** - *

Starting with API version 2011-01-01, specifies that the Auto Scaling group will be deleted along with all instancesassociated with the group, without waiting for all instances to be terminated.

+ *

Starting with API version 2011-01-01, specifies that the Auto Scaling group will be deleted along with all instances associated with the group, without waiting for all instances to be terminated. This parameter also deletes any lifecycle actions associated with the group.

*/ @property (nonatomic, strong) NSNumber *forceDelete; @end +/** + *

The output of the DeleteLifecycleHook action.

+ */ +@interface AWSAutoScalingDeleteLifecycleHookAnswer : AWSModel + + +@end + +@interface AWSAutoScalingDeleteLifecycleHookType : AWSRequest + + +/** + *

The name of the Auto Scaling group to which the lifecycle hook belongs.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

The name of the lifecycle hook.

+ */ +@property (nonatomic, strong) NSString *lifecycleHookName; + +@end + /** *

* Required parameters: [AutoScalingGroupName, TopicARN] @@ -764,16 +844,16 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag.Valid values are: Resource type = auto-scaling-group, Resource ID = AutoScalingGroupName,key=value, value=value, propagate=true or false.

+ *

Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. Valid values are: Resource type = auto-scaling-group, Resource ID = AutoScalingGroupName, key=value, value=value, propagate=true or false.

*/ @property (nonatomic, strong) NSArray *tags; @end /** - *

The output of the DescribeAccountLimitsResult action.

+ *

The output of the DescribeAccountLimitsResult action.

*/ -@interface AWSAutoScalingDescribeAccountLimitsAnswer : AZModel +@interface AWSAutoScalingDescribeAccountLimitsAnswer : AWSModel /** @@ -791,7 +871,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The output of the DescribeAdjustmentTypes action.

*/ -@interface AWSAutoScalingDescribeAdjustmentTypesAnswer : AZModel +@interface AWSAutoScalingDescribeAdjustmentTypesAnswer : AWSModel /** @@ -805,7 +885,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

The list of Auto Scaling instances to describe.If this list is omitted, all auto scaling instances are described.The list of requested instances cannot contain more than 50 items. If unknown instances are requested, they are ignored with no error.

+ *

The list of Auto Scaling instances to describe. If this list is omitted, all auto scaling instances are described. The list of requested instances cannot contain more than 50 items. If unknown instances are requested, they are ignored with no error.

*/ @property (nonatomic, strong) NSArray *instanceIds; @@ -815,7 +895,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *maxRecords; /** - *

The token returned by a previous callto indicate that there is more data available.

+ *

The token returned by a previous call to indicate that there is more data available.

*/ @property (nonatomic, strong) NSString *nextToken; @@ -824,20 +904,58 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The AutoScalingNotificationTypes data type.

*/ -@interface AWSAutoScalingDescribeAutoScalingNotificationTypesAnswer : AZModel +@interface AWSAutoScalingDescribeAutoScalingNotificationTypesAnswer : AWSModel /** - *

Returns a list of all notification types supported by Auto Scaling. They are:

  • autoscaling:EC2_INSTANCE_LAUNCH

  • autoscaling:EC2_INSTANCE_LAUNCH_ERROR

  • autoscaling:EC2_INSTANCE_TERMINATE

  • autoscaling:EC2_INSTANCE_TERMINATE_ERROR

  • autoscaling:TEST_NOTIFICATION

+ *

Returns a list of all notification types supported by Auto Scaling. They are:

  • autoscaling:EC2_INSTANCE_LAUNCH

  • autoscaling:EC2_INSTANCE_LAUNCH_ERROR

  • autoscaling:EC2_INSTANCE_TERMINATE

  • autoscaling:EC2_INSTANCE_TERMINATE_ERROR

  • autoscaling:TEST_NOTIFICATION

*/ @property (nonatomic, strong) NSArray *autoScalingNotificationTypes; @end +@interface AWSAutoScalingDescribeLifecycleHookTypesAnswer : AWSModel + + +/** + *

Returns a list of all notification types supported by Auto Scaling. They are:

  • autoscaling:EC2_INSTANCE_LAUNCHING

  • autoscaling:EC2_INSTANCE_TERMINATING

+ */ +@property (nonatomic, strong) NSArray *lifecycleHookTypes; + +@end + +/** + *

The output of the DescribeLifecycleHooks action.

+ */ +@interface AWSAutoScalingDescribeLifecycleHooksAnswer : AWSModel + + +/** + *

A list describing the lifecycle hooks that belong to the specified Auto Scaling group.

+ */ +@property (nonatomic, strong) NSArray *lifecycleHooks; + +@end + +@interface AWSAutoScalingDescribeLifecycleHooksType : AWSRequest + + +/** + *

The name of one or more Auto Scaling groups.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

The name of one or more lifecycle hooks.

+ */ +@property (nonatomic, strong) NSArray *lifecycleHookNames; + +@end + /** *

The output of the DescribeMetricCollectionTypes action.

*/ -@interface AWSAutoScalingDescribeMetricCollectionTypesAnswer : AZModel +@interface AWSAutoScalingDescribeMetricCollectionTypesAnswer : AWSModel /** @@ -846,7 +964,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSArray *granularities; /** - *

The list of Metrics collected. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

+ *

The list of Metrics collected. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupStandbyInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

*/ @property (nonatomic, strong) NSArray *metrics; @@ -856,7 +974,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The output of the DescribeNotificationConfigurations action.

* Required parameters: [NotificationConfigurations] */ -@interface AWSAutoScalingDescribeNotificationConfigurationsAnswer : AZModel +@interface AWSAutoScalingDescribeNotificationConfigurationsAnswer : AWSModel /** @@ -923,7 +1041,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

A list containing the activity IDs of the desired scaling activities. If this list is omitted, all activities are described.If an AutoScalingGroupName is provided, the results are limited to that group. The list of requested activities cannot contain more than 50 items. If unknown activities are requested, they are ignored with no error.

+ *

A list containing the activity IDs of the desired scaling activities. If this list is omitted, all activities are described. If an AutoScalingGroupName is provided, the results are limited to that group. The list of requested activities cannot contain more than 50 items. If unknown activities are requested, they are ignored with no error.

*/ @property (nonatomic, strong) NSArray *activityIds; @@ -986,7 +1104,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

The value of the filter type used to identify the tagsto be returned. For example, you can filter so that tags are returnedaccording to Auto Scaling group, the key and value, or whetherthe new tag will be applied to instances launched after thetag is created (PropagateAtLaunch).

+ *

The value of the filter type used to identify the tags to be returned. For example, you can filter so that tags are returned according to Auto Scaling group, the key and value, or whether the new tag will be applied to instances launched after the tag is created (PropagateAtLaunch).

*/ @property (nonatomic, strong) NSArray *filters; @@ -996,7 +1114,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *maxRecords; /** - *

A string that marks the start of the next batchof returned results.

+ *

A string that marks the start of the next batch of returned results.

*/ @property (nonatomic, strong) NSString *nextToken; @@ -1005,16 +1123,49 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The TerminationPolicyTypes data type.

*/ -@interface AWSAutoScalingDescribeTerminationPolicyTypesAnswer : AZModel +@interface AWSAutoScalingDescribeTerminationPolicyTypesAnswer : AWSModel /** - *

Termination policies supported by Auto Scaling. They are:OldestInstance, OldestLaunchConfiguration, NewestInstance, ClosestToNextInstanceHour, Default

+ *

Termination policies supported by Auto Scaling. They are: OldestInstance, OldestLaunchConfiguration, NewestInstance, ClosestToNextInstanceHour, Default

*/ @property (nonatomic, strong) NSArray *terminationPolicyTypes; @end +/** + *

The output of the DetachInstances action.

+ */ +@interface AWSAutoScalingDetachInstancesAnswer : AWSModel + + +/** + *

A list describing the activities related to detaching the instances from the Auto Scaling group.

+ */ +@property (nonatomic, strong) NSArray *activities; + +@end + +@interface AWSAutoScalingDetachInstancesQuery : AWSRequest + + +/** + *

The name of the Auto Scaling group from which to detach instances.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

A list of instances to detach from the Auto Scaling group. You must specify at least one instance ID.

+ */ +@property (nonatomic, strong) NSArray *instanceIds; + +/** + *

Specifies if the detached instance should decrement the desired capacity value for the Auto Scaling group. If set to True, the Auto Scaling group decrements the desired capacity value by the number of instances detached.

+ */ +@property (nonatomic, strong) NSNumber *shouldDecrementDesiredCapacity; + +@end + @interface AWSAutoScalingDisableMetricsCollectionQuery : AWSRequest @@ -1024,7 +1175,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *autoScalingGroupName; /** - *

The list of metrics to disable. If no metrics are specified, all metrics are disabled. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

+ *

The list of metrics to disable. If no metrics are specified, all metrics are disabled. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupStandbyInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

*/ @property (nonatomic, strong) NSArray *metrics; @@ -1033,7 +1184,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The Ebs data type.

*/ -@interface AWSAutoScalingEbs : AZModel +@interface AWSAutoScalingEbs : AWSModel /** @@ -1077,7 +1228,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *granularity; /** - *

The list of metrics to collect. If no metrics are specified, all metrics are enabled. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

+ *

The list of metrics to collect. If no metrics are specified, all metrics are enabled. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupStandbyInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

*/ @property (nonatomic, strong) NSArray *metrics; @@ -1086,11 +1237,11 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The EnabledMetric data type.

*/ -@interface AWSAutoScalingEnabledMetric : AZModel +@interface AWSAutoScalingEnabledMetric : AWSModel /** - *

The granularity of the enabled metric.

+ *

The granularity of the enabled metric.

*/ @property (nonatomic, strong) NSString *granularity; @@ -1101,6 +1252,39 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end +/** + *

The output of the EnterStandby action.

+ */ +@interface AWSAutoScalingEnterStandbyAnswer : AWSModel + + +/** + *

A list describing the activities related to moving instances into Standby mode.

+ */ +@property (nonatomic, strong) NSArray *activities; + +@end + +@interface AWSAutoScalingEnterStandbyQuery : AWSRequest + + +/** + *

The name of the Auto Scaling group from which to move instances into Standby mode.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

The instances to move into Standby mode. You must specify at least one instance ID.

+ */ +@property (nonatomic, strong) NSArray *instanceIds; + +/** + *

Specifies whether the instances moved to Standby mode count as part of the Auto Scaling group's desired capacity. If set, the desired capacity for the Auto Scaling group decrements by the number of instances moved to Standby mode.

+ */ +@property (nonatomic, strong) NSNumber *shouldDecrementDesiredCapacity; + +@end + @interface AWSAutoScalingExecutePolicyType : AWSRequest @@ -1110,7 +1294,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *autoScalingGroupName; /** - *

Set to True if you want Auto Scaling to waitfor the cooldown period associated with the Auto Scaling groupto complete before executing the policy.

Set to False if you want Auto Scaling to circumvent the cooldown period associated with the Auto Scaling group and execute the policy before the cooldown period ends.

For information about cooldown period, see Cooldown Periodin the Auto Scaling Developer Guide.

+ *

Set to True if you want Auto Scaling to wait for the cooldown period associated with the Auto Scaling group to complete before executing the policy.

Set to False if you want Auto Scaling to circumvent the cooldown period associated with the Auto Scaling group and execute the policy before the cooldown period ends.

For information about cooldown period, see Cooldown Period in the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSNumber *honorCooldown; @@ -1121,14 +1305,42 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end +/** + *

The output of the ExitStandby action.

+ */ +@interface AWSAutoScalingExitStandbyAnswer : AWSModel + + +/** + *

A list describing the activities related to moving instances out of Standby mode.

+ */ +@property (nonatomic, strong) NSArray *activities; + +@end + +@interface AWSAutoScalingExitStandbyQuery : AWSRequest + + +/** + *

The name of the Auto Scaling group from which to move instances out of Standby mode.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

A list of instances to move out of Standby mode. You must specify at least one instance ID.

+ */ +@property (nonatomic, strong) NSArray *instanceIds; + +@end + /** *

The Filter data type.

*/ -@interface AWSAutoScalingFilter : AZModel +@interface AWSAutoScalingFilter : AWSModel /** - *

The name of the filter. Valid Name values are:"auto-scaling-group", "key", "value", and "propagate-at-launch".

+ *

The name of the filter. Valid Name values are: "auto-scaling-group", "key", "value", and "propagate-at-launch".

*/ @property (nonatomic, strong) NSString *name; @@ -1143,7 +1355,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The Instance data type.

* Required parameters: [InstanceId, AvailabilityZone, LifecycleState, HealthStatus, LaunchConfigurationName] */ -@interface AWSAutoScalingInstance : AZModel +@interface AWSAutoScalingInstance : AWSModel /** @@ -1167,7 +1379,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *launchConfigurationName; /** - *

Contains a description of the current lifecycle state.

The Quarantined lifecycle state is currently not used.

+ *

Contains a description of the current lifecycle state.

*/ @property (nonatomic, assign) AWSAutoScalingLifecycleState lifecycleState; @@ -1176,7 +1388,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The InstanceMonitoring data type.

*/ -@interface AWSAutoScalingInstanceMonitoring : AZModel +@interface AWSAutoScalingInstanceMonitoring : AWSModel /** @@ -1190,7 +1402,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The LaunchConfiguration data type.

* Required parameters: [LaunchConfigurationName, ImageId, InstanceType, CreatedTime] */ -@interface AWSAutoScalingLaunchConfiguration : AZModel +@interface AWSAutoScalingLaunchConfiguration : AWSModel /** @@ -1214,7 +1426,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *ebsOptimized; /** - *

Provides the name or the Amazon Resource Name (ARN) of theinstance profile associated with the IAM role for the instance.The instance profile contains the IAM role.

+ *

Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.

*/ @property (nonatomic, strong) NSString *iamInstanceProfile; @@ -1254,7 +1466,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *launchConfigurationName; /** - *

Specifies the tenancy of the instance. It can be either default or dedicated.An instance with dedicated tenancy runs in an isolated, single-tenant hardware and it can only be launched in a VPC.

+ *

Specifies the tenancy of the instance. It can be either default or dedicated. An instance with dedicated tenancy runs in an isolated, single-tenant hardware and it can only be launched in a VPC.

*/ @property (nonatomic, strong) NSString *placementTenancy; @@ -1321,7 +1533,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The LaunchConfigurationsType data type.

* Required parameters: [LaunchConfigurations] */ -@interface AWSAutoScalingLaunchConfigurationsType : AZModel +@interface AWSAutoScalingLaunchConfigurationsType : AWSModel /** @@ -1336,10 +1548,63 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end +/** + *

A lifecycle hook tells Auto Scaling that you want to perform an action when an instance launches or terminates. When you have a lifecycle hook in place, the Auto Scaling group will either:

  • Pause the instance after it launches, but before it is put into service
  • Pause the instance as it terminates, but before it is fully terminated

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

+ */ +@interface AWSAutoScalingLifecycleHook : AWSModel + + +/** + *

The name of the Auto Scaling group to which the lifecycle action belongs.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The value for this parameter can be either CONTINUE or ABANDON. The default value for this parameter is CONTINUE.

+ */ +@property (nonatomic, strong) NSString *defaultResult; + +/** + *

The maximum length of time an instance can remain in a Pending:Wait or Terminating:Wait state. Currently, this value is set at 48 hours.

+ */ +@property (nonatomic, strong) NSNumber *globalTimeout; + +/** + *

Defines the amount of time that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat.

+ */ +@property (nonatomic, strong) NSNumber *heartbeatTimeout; + +/** + *

The name of the lifecycle action hook.

+ */ +@property (nonatomic, strong) NSString *lifecycleHookName; + +/** + *

The Amazon EC2 instance state to which you want to attach the lifecycle hook. See DescribeLifecycleHooks for a list of available lifecycle hook types.

+ */ +@property (nonatomic, strong) NSString *lifecycleTransition; + +/** + *

Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.

+ */ +@property (nonatomic, strong) NSString *notificationMetadata; + +/** + *

The ARN of the notification target that Auto Scaling will use to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic. The notification message sent to the target will include:

  • Lifecycle action token
  • User account ID
  • Name of the Auto Scaling group
  • Lifecycle hook name
  • EC2 instance ID
  • Lifecycle transition
  • Notification metadata
+ */ +@property (nonatomic, strong) NSString *notificationTargetARN; + +/** + *

The ARN of the Amazon IAM role that allows the Auto Scaling group to publish to the specified notification target.

+ */ +@property (nonatomic, strong) NSString *roleARN; + +@end + /** *

The MetricCollectionType data type.

*/ -@interface AWSAutoScalingMetricCollectionType : AZModel +@interface AWSAutoScalingMetricCollectionType : AWSModel @property (nonatomic, strong) NSString *metric; @@ -1348,7 +1613,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The MetricGranularityType data type.

*/ -@interface AWSAutoScalingMetricGranularityType : AZModel +@interface AWSAutoScalingMetricGranularityType : AWSModel /** @@ -1361,7 +1626,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The NotificationConfiguration data type.

*/ -@interface AWSAutoScalingNotificationConfiguration : AZModel +@interface AWSAutoScalingNotificationConfiguration : AWSModel /** @@ -1384,11 +1649,11 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The PoliciesType data type.

*/ -@interface AWSAutoScalingPoliciesType : AZModel +@interface AWSAutoScalingPoliciesType : AWSModel /** - *

A string that marks the start of the next batch of returned results.

+ *

A string that marks the start of the next batch of returned results.

*/ @property (nonatomic, strong) NSString *nextToken; @@ -1402,7 +1667,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The PolicyARNType data type.

*/ -@interface AWSAutoScalingPolicyARNType : AZModel +@interface AWSAutoScalingPolicyARNType : AWSModel /** @@ -1413,10 +1678,10 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end /** - *

There are two primary Auto Scaling process types--Launch and Terminate. The Launch process creates a new Amazon EC2 instance for an Auto Scaling group, and the Terminate process removes an existing Amazon EC2 instance.

The remaining Auto Scaling process types relate to specific Auto Scaling features:

  • AddToLoadBalancer
  • AlarmNotification
  • AZRebalance
  • HealthCheck
  • ReplaceUnhealthy
  • ScheduledActions

If you suspend Launch or Terminate, all other process types are affected to varying degrees. The following descriptions discuss how each process type is affected by a suspension of Launch or Terminate.

The AddToLoadBalancer process type adds instances to the load balancerwhen the instances are launched. If you suspend this process, Auto Scaling will launchthe instances but will not add them to the load balancer. If you resume theAddToLoadBalancer process, Auto Scaling will also resume adding new instances to the loadbalancer when they are launched. However, Auto Scaling will not add running instances that were launched while the process was suspended; those instances must be added manually using thethe RegisterInstancesWithLoadBalancer call in the Elastic Load Balancing API Reference.

The AlarmNotification process type accepts notifications from Amazon CloudWatch alarms that are associated with the Auto Scaling group. If you suspend the AlarmNotification process type, Auto Scaling will not automatically execute scaling policies that would be triggered by alarms.

Although the AlarmNotification process type is not directly affected by a suspension of Launch or Terminate, alarm notifications are often used to signal that a change in the size of the Auto Scaling group is warranted. If you suspend Launch or Terminate, Auto Scaling might not be able to implement the alarm's associated policy.

The AZRebalance process type seeks to maintain a balanced number ofinstances across Availability Zones within a Region. If you remove an Availability Zone from your Auto Scaling group or an Availability Zone otherwise becomes unhealthy or unavailable, Auto Scaling launches new instances in anunaffected Availability Zone before terminating the unhealthy or unavailable instances.When the unhealthy Availability Zone returns to a healthy state, Auto Scaling automatically redistributes the application instances evenly across all of the designated Availability Zones.

If you call SuspendProcesses on the launch process type, the AZRebalance process will neither launch new instances nor terminate existing instances.This is because the AZRebalance process terminates existing instances only after launching the replacement instances.

If you call SuspendProcesses on the terminate process type, the AZRebalance process can cause your Auto Scaling group to grow up to ten percent larger than the maximum size. This is because Auto Scaling allows groups to temporarily grow larger than the maximum size during rebalancing activities. If Auto Scaling cannot terminate instances, your Auto Scaling group could remain up to ten percent larger than the maximum size until you resume the terminate process type.

The HealthCheck process type checks the health of the instances. Auto Scaling marks an instance as unhealthy if Amazon EC2 or Elastic Load Balancinginforms Auto Scaling that the instance is unhealthy. The HealthCheck process can override the health status of an instance that you set with SetInstanceHealth.

The ReplaceUnhealthy process type terminates instances that are marked as unhealthy and subsequently creates new instances to replace them. This process calls both of the primary process types--first Terminate and then Launch.

The HealthCheck process type works in conjunction with theReplaceUnhealthly process type to provide health check functionality. If you suspend either Launch or Terminate, the ReplaceUnhealthy process type will not function properly.

The ScheduledActions process type performs scheduled actions that you create with PutScheduledUpdateGroupAction. Scheduled actions often involve launching new instances or terminating existing instances. If you suspend eitherLaunch or Terminate, your scheduled actions might not function as expected.

+ *

There are two primary Auto Scaling process types--Launch and Terminate. The Launch process creates a new Amazon EC2 instance for an Auto Scaling group, and the Terminate process removes an existing Amazon EC2 instance.

The remaining Auto Scaling process types relate to specific Auto Scaling features:

  • AddToLoadBalancer
  • AlarmNotification
  • AZRebalance
  • HealthCheck
  • ReplaceUnhealthy
  • ScheduledActions

If you suspend Launch or Terminate, all other process types are affected to varying degrees. The following descriptions discuss how each process type is affected by a suspension of Launch or Terminate.

The AddToLoadBalancer process type adds instances to the load balancer when the instances are launched. If you suspend this process, Auto Scaling will launch the instances but will not add them to the load balancer. If you resume the AddToLoadBalancer process, Auto Scaling will also resume adding new instances to the load balancer when they are launched. However, Auto Scaling will not add running instances that were launched while the process was suspended; those instances must be added manually using the the RegisterInstancesWithLoadBalancer call in the Elastic Load Balancing API Reference.

The AlarmNotification process type accepts notifications from Amazon CloudWatch alarms that are associated with the Auto Scaling group. If you suspend the AlarmNotification process type, Auto Scaling will not automatically execute scaling policies that would be triggered by alarms.

Although the AlarmNotification process type is not directly affected by a suspension of Launch or Terminate, alarm notifications are often used to signal that a change in the size of the Auto Scaling group is warranted. If you suspend Launch or Terminate, Auto Scaling might not be able to implement the alarm's associated policy.

The AZRebalance process type seeks to maintain a balanced number of instances across Availability Zones within a Region. If you remove an Availability Zone from your Auto Scaling group or an Availability Zone otherwise becomes unhealthy or unavailable, Auto Scaling launches new instances in an unaffected Availability Zone before terminating the unhealthy or unavailable instances. When the unhealthy Availability Zone returns to a healthy state, Auto Scaling automatically redistributes the application instances evenly across all of the designated Availability Zones.

If you call SuspendProcesses on the launch process type, the AZRebalance process will neither launch new instances nor terminate existing instances. This is because the AZRebalance process terminates existing instances only after launching the replacement instances.

If you call SuspendProcesses on the terminate process type, the AZRebalance process can cause your Auto Scaling group to grow up to ten percent larger than the maximum size. This is because Auto Scaling allows groups to temporarily grow larger than the maximum size during rebalancing activities. If Auto Scaling cannot terminate instances, your Auto Scaling group could remain up to ten percent larger than the maximum size until you resume the terminate process type.

The HealthCheck process type checks the health of the instances. Auto Scaling marks an instance as unhealthy if Amazon EC2 or Elastic Load Balancing informs Auto Scaling that the instance is unhealthy. The HealthCheck process can override the health status of an instance that you set with SetInstanceHealth.

The ReplaceUnhealthy process type terminates instances that are marked as unhealthy and subsequently creates new instances to replace them. This process calls both of the primary process types--first Terminate and then Launch.

The HealthCheck process type works in conjunction with the ReplaceUnhealthly process type to provide health check functionality. If you suspend either Launch or Terminate, the ReplaceUnhealthy process type will not function properly.

The ScheduledActions process type performs scheduled actions that you create with PutScheduledUpdateGroupAction. Scheduled actions often involve launching new instances or terminating existing instances. If you suspend either Launch or Terminate, your scheduled actions might not function as expected.

* Required parameters: [ProcessName] */ -@interface AWSAutoScalingProcessType : AZModel +@interface AWSAutoScalingProcessType : AWSModel /** @@ -1429,7 +1694,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The output of the DescribeScalingProcessTypes action.

*/ -@interface AWSAutoScalingProcessesType : AZModel +@interface AWSAutoScalingProcessesType : AWSModel /** @@ -1439,6 +1704,59 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end +/** + *

The output of the PutLifecycleHook action.

+ */ +@interface AWSAutoScalingPutLifecycleHookAnswer : AWSModel + + +@end + +@interface AWSAutoScalingPutLifecycleHookType : AWSRequest + + +/** + *

The name of the Auto Scaling group to which you want to assign the lifecycle hook.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The value for this parameter can be either CONTINUE or ABANDON. The default value for this parameter is ABANDON.

+ */ +@property (nonatomic, strong) NSString *defaultResult; + +/** + *

Defines the amount of time, in seconds, that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat. The default value for this parameter is 3600 seconds (1 hour).

+ */ +@property (nonatomic, strong) NSNumber *heartbeatTimeout; + +/** + *

The name of the lifecycle hook.

+ */ +@property (nonatomic, strong) NSString *lifecycleHookName; + +/** + *

The Amazon EC2 instance state to which you want to attach the lifecycle hook. See DescribeLifecycleHookTypes for a list of available lifecycle hook types.

+ */ +@property (nonatomic, strong) NSString *lifecycleTransition; + +/** + *

Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.

+ */ +@property (nonatomic, strong) NSString *notificationMetadata; + +/** + *

The ARN of the notification target that Auto Scaling will use to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic.

The notification message sent to the target will include:

  • LifecycleActionToken. The Lifecycle action token.
  • AccountId. The user account ID.
  • AutoScalingGroupName. The name of the Auto Scaling group.
  • LifecycleHookName. The lifecycle hook name.
  • EC2InstanceId. The EC2 instance ID.
  • LifecycleTransition. The lifecycle transition.
  • NotificationMetadata. The notification metadata.

This operation uses the JSON format when sending notifications to an Amazon SQS queue, and an email key/value pair format when sending notifications to an Amazon SNS topic.

When you call this operation, a test message is sent to the notification target. This test message contains an additional key/value pair: Event:autoscaling:TEST_NOTIFICATION.

+ */ +@property (nonatomic, strong) NSString *notificationTargetARN; + +/** + *

The ARN of the Amazon IAM role that allows the Auto Scaling group to publish to the specified notification target.

+ */ +@property (nonatomic, strong) NSString *roleARN; + +@end + @interface AWSAutoScalingPutNotificationConfigurationType : AWSRequest @@ -1448,7 +1766,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *autoScalingGroupName; /** - *

The type of event that will cause the notification to be sent. For detailsabout notification types supported by Auto Scaling, see DescribeAutoScalingNotificationTypes.

+ *

The type of event that will cause the notification to be sent. For details about notification types supported by Auto Scaling, see DescribeAutoScalingNotificationTypes.

*/ @property (nonatomic, strong) NSArray *notificationTypes; @@ -1463,7 +1781,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

Specifies whether the ScalingAdjustment isan absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

For more information about the adjustment types supported by Auto Scaling, see Scale Based on Demand.

+ *

Specifies whether the ScalingAdjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

For more information about the adjustment types supported by Auto Scaling, see Scale Based on Demand.

*/ @property (nonatomic, strong) NSString *adjustmentType; @@ -1473,12 +1791,12 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *autoScalingGroupName; /** - *

The amount of time, in seconds, after a scalingactivity completes and before the next scaling activity can start.

For more information, see Cooldown Period

+ *

The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.

For more information, see Cooldown Period

*/ @property (nonatomic, strong) NSNumber *cooldown; /** - *

Used with AdjustmentType with the value PercentChangeInCapacity,the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least the number of instances specified in the value.

You will get a ValidationError if you use MinAdjustmentStep on a policy with an AdjustmentTypeother than PercentChangeInCapacity.

+ *

Used with AdjustmentType with the value PercentChangeInCapacity, the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least the number of instances specified in the value.

You will get a ValidationError if you use MinAdjustmentStep on a policy with an AdjustmentType other than PercentChangeInCapacity.

*/ @property (nonatomic, strong) NSNumber *minAdjustmentStep; @@ -1488,7 +1806,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *policyName; /** - *

The number of instances by which to scale.AdjustmentType determines the interpretation of this number (e.g., as an absolute number or as a percentage of the existing Auto Scaling group size). A positive increment adds to the current capacity and a negative value removes from the current capacity.

+ *

The number of instances by which to scale. AdjustmentType determines the interpretation of this number (e.g., as an absolute number or as a percentage of the existing Auto Scaling group size). A positive increment adds to the current capacity and a negative value removes from the current capacity.

*/ @property (nonatomic, strong) NSNumber *scalingAdjustment; @@ -1523,7 +1841,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *minSize; /** - *

The time when recurring future actions will start. Start time is specified by the user following the Unix cron syntax format. For information about cron syntax, go to Wikipedia, The Free Encyclopedia.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurringaction will start and stop.

+ *

The time when recurring future actions will start. Start time is specified by the user following the Unix cron syntax format. For information about cron syntax, go to Wikipedia, The Free Encyclopedia.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop.

*/ @property (nonatomic, strong) NSString *recurrence; @@ -1538,20 +1856,48 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSDate *startTime; /** - *

Time is deprecated.

The time for this action to start. Time is an alias for StartTimeand can be specified instead of StartTime,or vice versa. If both Time and StartTime are specified,their values should be identical. Otherwise, PutScheduledUpdateGroupAction will return an error.

+ *

Time is deprecated.

The time for this action to start. Time is an alias for StartTime and can be specified instead of StartTime, or vice versa. If both Time and StartTime are specified, their values should be identical. Otherwise, PutScheduledUpdateGroupAction will return an error.

*/ @property (nonatomic, strong) NSDate *time; @end +/** + *

The output of the RecordLifecycleActionHeartbeat action.

+ */ +@interface AWSAutoScalingRecordLifecycleActionHeartbeatAnswer : AWSModel + + +@end + +@interface AWSAutoScalingRecordLifecycleActionHeartbeatType : AWSRequest + + +/** + *

The name of the Auto Scaling group to which the hook belongs.

+ */ +@property (nonatomic, strong) NSString *autoScalingGroupName; + +/** + *

A token that uniquely identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook.

+ */ +@property (nonatomic, strong) NSString *lifecycleActionToken; + +/** + *

The name of the lifecycle hook.

+ */ +@property (nonatomic, strong) NSString *lifecycleHookName; + +@end + /** *

The ScalingPolicy data type.

*/ -@interface AWSAutoScalingScalingPolicy : AZModel +@interface AWSAutoScalingScalingPolicy : AWSModel /** - *

Specifies whether the ScalingAdjustment isan absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

+ *

Specifies whether the ScalingAdjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

*/ @property (nonatomic, strong) NSString *adjustmentType; @@ -1571,7 +1917,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *cooldown; /** - *

Changes the DesiredCapacity of the Auto Scaling group by at least the specified number of instances.

+ *

Changes the DesiredCapacity of the Auto Scaling group by at least the specified number of instances.

*/ @property (nonatomic, strong) NSNumber *minAdjustmentStep; @@ -1586,7 +1932,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *policyName; /** - *

The number associated with the specifiedadjustment type. A positive value adds to the current capacity and a negative value removes from the current capacity.

+ *

The number associated with the specified adjustment type. A positive value adds to the current capacity and a negative value removes from the current capacity.

*/ @property (nonatomic, strong) NSNumber *scalingAdjustment; @@ -1608,9 +1954,9 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @end /** - *

A scaling action that is scheduled for a future time and date. An action can be scheduled up to thirty days in advance.

Starting with API version 2011-01-01, you can use recurrence to specify that a scaling action occurs regularly on a schedule.

+ *

A scaling action that is scheduled for a future time and date. An action can be scheduled up to thirty days in advance.

Starting with API version 2011-01-01, you can use recurrence to specify that a scaling action occurs regularly on a schedule.

*/ -@interface AWSAutoScalingScheduledActionsType : AZModel +@interface AWSAutoScalingScheduledActionsType : AWSModel /** @@ -1628,7 +1974,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

This data type stores information about a scheduled update to an Auto Scaling group.

*/ -@interface AWSAutoScalingScheduledUpdateGroupAction : AZModel +@interface AWSAutoScalingScheduledUpdateGroupAction : AWSModel /** @@ -1701,7 +2047,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *desiredCapacity; /** - *

By default, SetDesiredCapacity overrides any cooldown period associated with the Auto Scaling group. Set toTrue if you want Auto Scaling to wait for the cooldownperiod associated with the Auto Scaling group to complete beforeinitiating a scaling activity to set your Auto Scaling group to the new capacity setting.

+ *

By default, SetDesiredCapacity overrides any cooldown period associated with the Auto Scaling group. Set to True if you want Auto Scaling to wait for the cooldown period associated with the Auto Scaling group to complete before initiating a scaling activity to set your Auto Scaling group to the new capacity setting.

*/ @property (nonatomic, strong) NSNumber *honorCooldown; @@ -1711,7 +2057,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** - *

The health status of the instance.Set to Healthy if you want the instance to remain in service. Set to Unhealthy if you want the instance to be out of service. Auto Scaling will terminate and replace the unhealthy instance.

+ *

The health status of the instance. Set to Healthy if you want the instance to remain in service. Set to Unhealthy if you want the instance to be out of service. Auto Scaling will terminate and replace the unhealthy instance.

*/ @property (nonatomic, strong) NSString *healthStatus; @@ -1721,7 +2067,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *instanceId; /** - *

If the Auto Scaling group of the specified instance has a HealthCheckGracePeriodspecified for the group, by default, this call will respect the grace period. Set thisto False, if you do not want the call to respect the grace period associatedwith the group.

For more information, see the HealthCheckGracePeriod parameter description in theCreateAutoScalingGroup action.

+ *

If the Auto Scaling group of the specified instance has a HealthCheckGracePeriod specified for the group, by default, this call will respect the grace period. Set this to False, if you do not want the call to respect the grace period associated with the group.

For more information, see the HealthCheckGracePeriod parameter description in the CreateAutoScalingGroup action.

*/ @property (nonatomic, strong) NSNumber *shouldRespectGracePeriod; @@ -1730,7 +2076,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

An Auto Scaling process that has been suspended. For more information, see ProcessType.

*/ -@interface AWSAutoScalingSuspendedProcess : AZModel +@interface AWSAutoScalingSuspendedProcess : AWSModel /** @@ -1749,7 +2095,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { *

The tag applied to an Auto Scaling group.

* Required parameters: [Key] */ -@interface AWSAutoScalingTag : AZModel +@interface AWSAutoScalingTag : AWSModel /** @@ -1758,7 +2104,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *key; /** - *

Specifies whether the new tag will be applied to instances launched afterthe tag is created. The same behavior applies to updates: If you change atag, the changed tag will be applied to all instances launched after you madethe change.

+ *

Specifies whether the new tag will be applied to instances launched after the tag is created. The same behavior applies to updates: If you change a tag, the changed tag will be applied to all instances launched after you made the change.

*/ @property (nonatomic, strong) NSNumber *propagateAtLaunch; @@ -1768,12 +2114,12 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *resourceId; /** - *

The kind of resource to which the tag is applied. Currently, Auto Scalingsupports the auto-scaling-group resource type.

+ *

The kind of resource to which the tag is applied. Currently, Auto Scaling supports the auto-scaling-group resource type.

*/ @property (nonatomic, strong) NSString *resourceType; /** - *

The value of the tag.

+ *

The value of the tag.

*/ @property (nonatomic, strong) NSString *value; @@ -1782,7 +2128,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

The tag applied to an Auto Scaling group.

*/ -@interface AWSAutoScalingTagDescription : AZModel +@interface AWSAutoScalingTagDescription : AWSModel /** @@ -1791,7 +2137,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *key; /** - *

Specifies whether the new tag will be applied to instances launched afterthe tag is created. The same behavior applies to updates: If you change atag, the changed tag will be applied to all instances launched after you madethe change.

+ *

Specifies whether the new tag will be applied to instances launched after the tag is created. The same behavior applies to updates: If you change a tag, the changed tag will be applied to all instances launched after you made the change.

*/ @property (nonatomic, strong) NSNumber *propagateAtLaunch; @@ -1801,7 +2147,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSString *resourceId; /** - *

The kind of resource to which the tag is applied. Currently, Auto Scalingsupports the auto-scaling-group resource type.

+ *

The kind of resource to which the tag is applied. Currently, Auto Scaling supports the auto-scaling-group resource type.

*/ @property (nonatomic, strong) NSString *resourceType; @@ -1815,16 +2161,16 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { /** *

*/ -@interface AWSAutoScalingTagsType : AZModel +@interface AWSAutoScalingTagsType : AWSModel /** - *

A string used to mark the start of the next batch of returned results.

+ *

A string used to mark the start of the next batch of returned results.

*/ @property (nonatomic, strong) NSString *nextToken; /** - *

The list of tags.

+ *

The list of tags.

*/ @property (nonatomic, strong) NSArray *tags; @@ -1867,7 +2213,7 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSArray *availabilityZones; /** - *

The amount of time, in seconds, after a scaling activitycompletes before any further scaling activities can start. For more information,see Cooldown Period.

+ *

The amount of time, in seconds, after a scaling activity completes before any further scaling activities can start. For more information, see Cooldown Period.

*/ @property (nonatomic, strong) NSNumber *defaultCooldown; @@ -1877,12 +2223,12 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *desiredCapacity; /** - *

The length of time that Auto Scaling waits before checking an instance's health status. The grace period begins when the instance passes System Status and the Instance Status checks from Amazon EC2. For more information, seeDescribeInstanceStatus.

+ *

The length of time that Auto Scaling waits before checking an instance's health status. The grace period begins when the instance passes System Status and the Instance Status checks from Amazon EC2. For more information, see DescribeInstanceStatus.

*/ @property (nonatomic, strong) NSNumber *healthCheckGracePeriod; /** - *

The type of health check for the instances in the Auto Scaling group.The health check type can either be EC2 for Amazon EC2 or ELB for Elastic Load Balancing.

+ *

The type of health check for the instances in the Auto Scaling group. The health check type can either be EC2 for Amazon EC2 or ELB for Elastic Load Balancing.

*/ @property (nonatomic, strong) NSString *healthCheckType; @@ -1902,17 +2248,17 @@ typedef NS_ENUM(NSInteger, AWSAutoScalingScalingActivityStatusCode) { @property (nonatomic, strong) NSNumber *minSize; /** - *

The name of the cluster placement group, if applicable. For more information, go to Using Cluster Instances in the Amazon EC2 User Guide.

+ *

The name of the cluster placement group, if applicable. For more information, go to Using Cluster Instances in the Amazon EC2 User Guide.

*/ @property (nonatomic, strong) NSString *placementGroup; /** - *

A standalone termination policy or a list of termination policies used to select the instance to terminate.The policies are executed in the order that they are listed.

For more information on creating a termination policy for your Auto Scaling group, go toInstance Termination Policy for Your Auto Scaling Group in thethe Auto Scaling Developer Guide.

+ *

A standalone termination policy or a list of termination policies used to select the instance to terminate. The policies are executed in the order that they are listed.

For more information on creating a termination policy for your Auto Scaling group, go to Instance Termination Policy for Your Auto Scaling Group in the the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSArray *terminationPolicies; /** - *

The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in acomma-separated list.

When you specify VPCZoneIdentifier with AvailabilityZones, ensure that thesubnets' Availability Zones match the values you specify for AvailabilityZones.

For more information on creating your Auto Scaling group in Amazon VPC by specifying subnets, seeLaunch Auto Scaling Instances into Amazon VPC in thethe Auto Scaling Developer Guide.

+ *

The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in a comma-separated list.

When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the subnets' Availability Zones match the values you specify for AvailabilityZones.

For more information on creating your Auto Scaling group in Amazon VPC by specifying subnets, see Launch Auto Scaling Instances into Amazon VPC in the the Auto Scaling Developer Guide.

*/ @property (nonatomic, strong) NSString *VPCZoneIdentifier; diff --git a/AutoScaling/AWSAutoScalingModel.m b/AutoScaling/AWSAutoScalingModel.m index 1e471492ae1..04c1c2bb042 100644 --- a/AutoScaling/AWSAutoScalingModel.m +++ b/AutoScaling/AWSAutoScalingModel.m @@ -14,7 +14,7 @@ */ #import "AWSAutoScalingModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSAutoScalingErrorDomain = @"com.amazonaws.AWSAutoScalingErrorDomain"; @@ -40,7 +40,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"activityId" : @"ActivityId", @"autoScalingGroupName" : @"AutoScalingGroupName", @"cause" : @"Cause", - @"description" : @"Description", + @"detail" : @"Description", @"details" : @"Details", @"endTime" : @"EndTime", @"progress" : @"Progress", @@ -52,17 +52,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)endTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -83,6 +83,12 @@ + (NSValueTransformer *)statusCodeJSONTransformer { if ([value isEqualToString:@"InProgress"]) { return @(AWSAutoScalingScalingActivityStatusCodeInProgress); } + if ([value isEqualToString:@"WaitingForELBConnectionDraining"]) { + return @(AWSAutoScalingScalingActivityStatusCodeWaitingForELBConnectionDraining); + } + if ([value isEqualToString:@"MidLifecycleAction"]) { + return @(AWSAutoScalingScalingActivityStatusCodeMidLifecycleAction); + } if ([value isEqualToString:@"Successful"]) { return @(AWSAutoScalingScalingActivityStatusCodeSuccessful); } @@ -105,6 +111,10 @@ + (NSValueTransformer *)statusCodeJSONTransformer { return @"PreInService"; case AWSAutoScalingScalingActivityStatusCodeInProgress: return @"InProgress"; + case AWSAutoScalingScalingActivityStatusCodeWaitingForELBConnectionDraining: + return @"WaitingForELBConnectionDraining"; + case AWSAutoScalingScalingActivityStatusCodeMidLifecycleAction: + return @"MidLifecycleAction"; case AWSAutoScalingScalingActivityStatusCodeSuccessful: return @"Successful"; case AWSAutoScalingScalingActivityStatusCodeFailed: @@ -195,9 +205,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)createdTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -293,6 +303,23 @@ + (NSValueTransformer *)ebsJSONTransformer { @end +@implementation AWSAutoScalingCompleteLifecycleActionAnswer + +@end + +@implementation AWSAutoScalingCompleteLifecycleActionType + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"lifecycleActionResult" : @"LifecycleActionResult", + @"lifecycleActionToken" : @"LifecycleActionToken", + @"lifecycleHookName" : @"LifecycleHookName", + }; +} + +@end + @implementation AWSAutoScalingCreateAutoScalingGroupType + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -379,6 +406,21 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSAutoScalingDeleteLifecycleHookAnswer + +@end + +@implementation AWSAutoScalingDeleteLifecycleHookType + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"lifecycleHookName" : @"LifecycleHookName", + }; +} + +@end + @implementation AWSAutoScalingDeleteNotificationConfigurationType + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -473,6 +515,41 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSAutoScalingDescribeLifecycleHookTypesAnswer + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"lifecycleHookTypes" : @"LifecycleHookTypes", + }; +} + +@end + +@implementation AWSAutoScalingDescribeLifecycleHooksAnswer + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"lifecycleHooks" : @"LifecycleHooks", + }; +} + ++ (NSValueTransformer *)lifecycleHooksJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSAutoScalingLifecycleHook class]]; +} + +@end + +@implementation AWSAutoScalingDescribeLifecycleHooksType + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"lifecycleHookNames" : @"LifecycleHookNames", + }; +} + +@end + @implementation AWSAutoScalingDescribeMetricCollectionTypesAnswer + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -560,17 +637,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)endTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -602,6 +679,32 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSAutoScalingDetachInstancesAnswer + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"activities" : @"Activities", + }; +} + ++ (NSValueTransformer *)activitiesJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSAutoScalingActivity class]]; +} + +@end + +@implementation AWSAutoScalingDetachInstancesQuery + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"instanceIds" : @"InstanceIds", + @"shouldDecrementDesiredCapacity" : @"ShouldDecrementDesiredCapacity", + }; +} + +@end + @implementation AWSAutoScalingDisableMetricsCollectionQuery + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -650,6 +753,32 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSAutoScalingEnterStandbyAnswer + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"activities" : @"Activities", + }; +} + ++ (NSValueTransformer *)activitiesJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSAutoScalingActivity class]]; +} + +@end + +@implementation AWSAutoScalingEnterStandbyQuery + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"instanceIds" : @"InstanceIds", + @"shouldDecrementDesiredCapacity" : @"ShouldDecrementDesiredCapacity", + }; +} + +@end + @implementation AWSAutoScalingExecutePolicyType + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -662,6 +791,31 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSAutoScalingExitStandbyAnswer + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"activities" : @"Activities", + }; +} + ++ (NSValueTransformer *)activitiesJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSAutoScalingActivity class]]; +} + +@end + +@implementation AWSAutoScalingExitStandbyQuery + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"instanceIds" : @"InstanceIds", + }; +} + +@end + @implementation AWSAutoScalingFilter + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -690,6 +844,12 @@ + (NSValueTransformer *)lifecycleStateJSONTransformer { if ([value isEqualToString:@"Pending"]) { return @(AWSAutoScalingLifecycleStatePending); } + if ([value isEqualToString:@"Pending:Wait"]) { + return @(AWSAutoScalingLifecycleStatePendingWait); + } + if ([value isEqualToString:@"Pending:Proceed"]) { + return @(AWSAutoScalingLifecycleStatePendingProceed); + } if ([value isEqualToString:@"Quarantined"]) { return @(AWSAutoScalingLifecycleStateQuarantined); } @@ -699,22 +859,56 @@ + (NSValueTransformer *)lifecycleStateJSONTransformer { if ([value isEqualToString:@"Terminating"]) { return @(AWSAutoScalingLifecycleStateTerminating); } + if ([value isEqualToString:@"Terminating:Wait"]) { + return @(AWSAutoScalingLifecycleStateTerminatingWait); + } + if ([value isEqualToString:@"Terminating:Proceed"]) { + return @(AWSAutoScalingLifecycleStateTerminatingProceed); + } if ([value isEqualToString:@"Terminated"]) { return @(AWSAutoScalingLifecycleStateTerminated); } + if ([value isEqualToString:@"Detaching"]) { + return @(AWSAutoScalingLifecycleStateDetaching); + } + if ([value isEqualToString:@"Detached"]) { + return @(AWSAutoScalingLifecycleStateDetached); + } + if ([value isEqualToString:@"EnteringStandby"]) { + return @(AWSAutoScalingLifecycleStateEnteringStandby); + } + if ([value isEqualToString:@"Standby"]) { + return @(AWSAutoScalingLifecycleStateStandby); + } return @(AWSAutoScalingLifecycleStateUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { case AWSAutoScalingLifecycleStatePending: return @"Pending"; + case AWSAutoScalingLifecycleStatePendingWait: + return @"Pending:Wait"; + case AWSAutoScalingLifecycleStatePendingProceed: + return @"Pending:Proceed"; case AWSAutoScalingLifecycleStateQuarantined: return @"Quarantined"; case AWSAutoScalingLifecycleStateInService: return @"InService"; case AWSAutoScalingLifecycleStateTerminating: return @"Terminating"; + case AWSAutoScalingLifecycleStateTerminatingWait: + return @"Terminating:Wait"; + case AWSAutoScalingLifecycleStateTerminatingProceed: + return @"Terminating:Proceed"; case AWSAutoScalingLifecycleStateTerminated: return @"Terminated"; + case AWSAutoScalingLifecycleStateDetaching: + return @"Detaching"; + case AWSAutoScalingLifecycleStateDetached: + return @"Detached"; + case AWSAutoScalingLifecycleStateEnteringStandby: + return @"EnteringStandby"; + case AWSAutoScalingLifecycleStateStandby: + return @"Standby"; case AWSAutoScalingLifecycleStateUnknown: default: return nil; @@ -764,9 +958,9 @@ + (NSValueTransformer *)blockDeviceMappingsJSONTransformer { + (NSValueTransformer *)createdTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -813,6 +1007,24 @@ + (NSValueTransformer *)launchConfigurationsJSONTransformer { @end +@implementation AWSAutoScalingLifecycleHook + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"defaultResult" : @"DefaultResult", + @"globalTimeout" : @"GlobalTimeout", + @"heartbeatTimeout" : @"HeartbeatTimeout", + @"lifecycleHookName" : @"LifecycleHookName", + @"lifecycleTransition" : @"LifecycleTransition", + @"notificationMetadata" : @"NotificationMetadata", + @"notificationTargetARN" : @"NotificationTargetARN", + @"roleARN" : @"RoleARN", + }; +} + +@end + @implementation AWSAutoScalingMetricCollectionType + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -894,6 +1106,27 @@ + (NSValueTransformer *)processesJSONTransformer { @end +@implementation AWSAutoScalingPutLifecycleHookAnswer + +@end + +@implementation AWSAutoScalingPutLifecycleHookType + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"defaultResult" : @"DefaultResult", + @"heartbeatTimeout" : @"HeartbeatTimeout", + @"lifecycleHookName" : @"LifecycleHookName", + @"lifecycleTransition" : @"LifecycleTransition", + @"notificationMetadata" : @"NotificationMetadata", + @"notificationTargetARN" : @"NotificationTargetARN", + @"roleARN" : @"RoleARN", + }; +} + +@end + @implementation AWSAutoScalingPutNotificationConfigurationType + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -939,30 +1172,46 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)endTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)timeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @end +@implementation AWSAutoScalingRecordLifecycleActionHeartbeatAnswer + +@end + +@implementation AWSAutoScalingRecordLifecycleActionHeartbeatType + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"autoScalingGroupName" : @"AutoScalingGroupName", + @"lifecycleActionToken" : @"LifecycleActionToken", + @"lifecycleHookName" : @"LifecycleHookName", + }; +} + +@end + @implementation AWSAutoScalingScalingPolicy + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -1029,25 +1278,25 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)endTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)timeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } diff --git a/AutoScaling/Resources/autoscaling-2011-01-01.json b/AutoScaling/Resources/autoscaling-2011-01-01.json index 05e316b2d33..efd3115b0a1 100644 --- a/AutoScaling/Resources/autoscaling-2011-01-01.json +++ b/AutoScaling/Resources/autoscaling-2011-01-01.json @@ -7,7 +7,7 @@ "xmlNamespace":"http://autoscaling.amazonaws.com/doc/2011-01-01/", "protocol":"query" }, - "documentation":"Auto Scaling\n \n

\n Auto Scaling is a web service designed\n to automatically launch or terminate Amazon Elastic Compute Cloud (Amazon EC2) instances based on\n user-defined policies, schedules, and health checks. \n This service is used in conjunction with Amazon CloudWatch \n and Elastic Load Balancing services.\n

\n \n

Auto Scaling provides APIs that you can call by submitting a Query Request. \n Query requests are HTTP or HTTPS requests that use the HTTP verbs GET or POST and a Query parameter named Action\n or Operation that specifies the API you are calling. Action is used throughout this documentation, although Operation \n is also supported for backward compatibility with other Amazon Web Services (AWS) Query APIs.

\n

Calling the API using a Query request is the most direct way to access the web service, but requires that your application handle\n low-level details such as generating the hash to sign the request and error handling. The benefit of calling the service using a \n Query request is that you are assured of having access to the complete functionality of the API. For information about signing a \n a query request, see Use Query Requests to Call Auto Scaling APIs

\n

\n This guide provides detailed information \n about Auto Scaling actions, data types, parameters, and errors. For detailed information \n about Auto Scaling features and their associated API actions, go to the \n Auto Scaling Developer Guide.\n

\n \n

This reference is based on the current WSDL, which is available at:

\n

http://autoscaling.amazonaws.com/doc/2011-01-01/AutoScaling.wsdl\n

\n

Endpoints

\n

The examples in this guide assume that your instances are launched in the US East (Northern Virginia) region and use us-east-1 as the endpoint.

\n

You can set up your Auto Scaling infrastructure in other AWS regions. For information about this product's regions and endpoints, see\n Regions and Endpoints \n in the Amazon Web Services General Reference.\n

", + "documentation":"Auto Scaling

Auto Scaling is a web service designed to automatically launch or terminate Amazon Elastic Compute Cloud (Amazon EC2) instances based on user-defined policies, schedules, and health checks. This service is used in conjunction with Amazon CloudWatch and Elastic Load Balancing services.

Auto Scaling provides APIs that you can call by submitting a Query Request. Query requests are HTTP or HTTPS requests that use the HTTP verbs GET or POST and a Query parameter named Action or Operation that specifies the API you are calling. Action is used throughout this documentation, although Operation is also supported for backward compatibility with other Amazon Web Services (AWS) Query APIs.

Calling the API using a Query request is the most direct way to access the web service, but requires that your application handle low-level details such as generating the hash to sign the request and error handling. The benefit of calling the service using a Query request is that you are assured of having access to the complete functionality of the API. For information about signing a a query request, see Use Query Requests to Call Auto Scaling APIs

This guide provides detailed information about Auto Scaling actions, data types, parameters, and errors. For detailed information about Auto Scaling features and their associated API actions, go to the Auto Scaling Developer Guide.

This reference is based on the current WSDL, which is available at:

http://autoscaling.amazonaws.com/doc/2011-01-01/AutoScaling.wsdl

Endpoints

The examples in this guide assume that your instances are launched in the US East (Northern Virginia) region and use us-east-1 as the endpoint.

You can set up your Auto Scaling infrastructure in other AWS regions. For information about this product's regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

", "operations":{ "AttachInstances":{ "name":"AttachInstances", @@ -16,7 +16,21 @@ "requestUri":"/" }, "input":{"shape":"AttachInstancesQuery"}, - "documentation":"

\n Attaches one or more Amazon EC2 instances to an existing Auto Scaling group. \n After the instance(s) is attached, it becomes a part of the Auto Scaling group.\n

\n

For more information, see Attach Amazon EC2 Instance(s) to Your Existing Auto Scaling Group\n in the Auto Scaling Developer Guide.

" + "documentation":"

Attaches one or more Amazon EC2 instances to an existing Auto Scaling group. After the instance(s) is attached, it becomes a part of the Auto Scaling group.

For more information, see Attach Amazon EC2 Instances to Your Existing Auto Scaling Group in the Auto Scaling Developer Guide.

" + }, + "CompleteLifecycleAction":{ + "name":"CompleteLifecycleAction", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CompleteLifecycleActionType"}, + "output":{ + "shape":"CompleteLifecycleActionAnswer", + "documentation":"

The output of the CompleteLifecycleAction.

", + "resultWrapper":"CompleteLifecycleActionResult" + }, + "documentation":"

Completes the lifecycle action for the associated token initiated under the given lifecycle hook with the specified result.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

" }, "CreateAutoScalingGroup":{ "name":"CreateAutoScalingGroup", @@ -26,7 +40,7 @@ }, "input":{ "shape":"CreateAutoScalingGroupType", - "documentation":"

\n\n

" + "documentation":"

" }, "errors":[ { @@ -37,7 +51,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The named Auto Scaling group or launch configuration already exists.\n

" + "documentation":"

The named Auto Scaling group or launch configuration already exists.

" }, { "shape":"LimitExceededFault", @@ -47,10 +61,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The quota for capacity groups or launch configurations\n for this customer has already been reached.\n

" + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" } ], - "documentation":"

\n Creates a new Auto Scaling group with the specified name and other attributes.\n When the creation request is completed,\n the Auto Scaling group is ready to be used in other calls.\n

\n \n The Auto Scaling group name must be unique within \n the scope of your AWS account.\n \n \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&AvailabilityZones.member.1=us-east-1a\n&AvailabilityZones.member.2=us-east-1b\n&MinSize=2\n&MaxSize=10\n&DesiredCapacity=2\n&LoadBalancerNames.member.1=my-test-asg-loadbalancer\n&HealthCheckType=ELB\n&HealthCheckGracePeriod=120\n&LaunchConfigurationName=my-test-lc\n&Version=2011-01-01\n&Action=CreateAutoScalingGroup\n&AUTHPARAMS \n\n\n8d798a29-f083-11e1-bdfb-cb223EXAMPLE\n\n \n " + "documentation":"

Creates a new Auto Scaling group with the specified name and other attributes. When the creation request is completed, the Auto Scaling group is ready to be used in other calls.

" }, "CreateLaunchConfiguration":{ "name":"CreateLaunchConfiguration", @@ -60,7 +74,7 @@ }, "input":{ "shape":"CreateLaunchConfigurationType", - "documentation":"

\n\n

" + "documentation":"

" }, "errors":[ { @@ -71,7 +85,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The named Auto Scaling group or launch configuration already exists.\n

" + "documentation":"

The named Auto Scaling group or launch configuration already exists.

" }, { "shape":"LimitExceededFault", @@ -81,10 +95,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The quota for capacity groups or launch configurations\n for this customer has already been reached.\n

" + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" } ], - "documentation":"

\n Creates a new launch configuration. The launch configuration name \n must be unique within the scope of the client's AWS account. The maximum limit\n of launch configurations, which by default is 100, must not yet have been met; otherwise, \n the call will fail. When created, the new launch configuration \n is available for immediate use.\n

\n \n \n https://autoscaling.amazonaws.com/?LaunchConfigurationName=my-test-lc\n&AssociatePublicIpAddress=true\n&ImageId=ami-0078da69\n&InstanceType=m1.small\n&Action=CreateLaunchConfiguration\n&AUTHPARAMS \n \n\n 7c6e177f-f082-11e1-ac58-3714bEXAMPLE\n\n \n " + "documentation":"

Creates a new launch configuration. The launch configuration name must be unique within the scope of the client's AWS account. The maximum limit of launch configurations, which by default is 100, must not yet have been met; otherwise, the call will fail. When created, the new launch configuration is available for immediate use.

" }, "CreateOrUpdateTags":{ "name":"CreateOrUpdateTags", @@ -94,7 +108,7 @@ }, "input":{ "shape":"CreateOrUpdateTagsType", - "documentation":"

\n

" + "documentation":"

" }, "errors":[ { @@ -105,7 +119,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The quota for capacity groups or launch configurations\n for this customer has already been reached.\n

" + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" }, { "shape":"AlreadyExistsFault", @@ -115,10 +129,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The named Auto Scaling group or launch configuration already exists.\n

" + "documentation":"

The named Auto Scaling group or launch configuration already exists.

" } ], - "documentation":"

\n Creates new tags or updates existing tags for an Auto Scaling group.\n

\n \n A tag's definition is composed of a resource ID, resource type, key and value, and the propagate flag. \n Value and the propagate flag are optional parameters. See the Request Parameters for more information.\n \n \n

For information on creating tags for your Auto Scaling group, see Tag Your Auto Scaling Groups and Amazon EC2 Instances.

\n \n https://autoscaling.amazonaws.com/?Tags.member.1.ResourceId=my-test-asg\n&Tags.member.1.ResourceType=auto-scaling-group\n&Tags.member.1.Key=version\n&Tags.member.1.Value=1.0\n&Tags.member.1.PropagateAtLaunch=true\n&Version=2011-01-01\n&Action=CreateOrUpdateTags\n&AUTHPARAMS \n \n \n b0203919-bf1b-11e2-8a01-13263EXAMPLE\n \n\n \n " + "documentation":"

Creates new tags or updates existing tags for an Auto Scaling group.

For information on creating tags for your Auto Scaling group, see Tag Your Auto Scaling Groups and Amazon EC2 Instances.

" }, "DeleteAutoScalingGroup":{ "name":"DeleteAutoScalingGroup", @@ -128,7 +142,7 @@ }, "input":{ "shape":"DeleteAutoScalingGroupType", - "documentation":"

\n\n

" + "documentation":"

" }, "errors":[ { @@ -139,7 +153,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n You cannot delete an Auto Scaling group\n while there are scaling activities in progress for that group.\n

" + "documentation":"

You cannot delete an Auto Scaling group while there are scaling activities in progress for that group.

" }, { "shape":"ResourceInUseFault", @@ -149,10 +163,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n This is returned when you cannot delete a launch\n configuration or Auto Scaling group because it is being used.\n

" + "documentation":"

This is returned when you cannot delete a launch configuration or Auto Scaling group because it is being used.

" } ], - "documentation":"

\n Deletes the specified Auto Scaling group if the group has no\n instances and no scaling activities in progress.\n

\n \n To remove all instances before calling DeleteAutoScalingGroup,\n you can call UpdateAutoScalingGroup to set the minimum and \n maximum size of the AutoScalingGroup to zero.\n \n \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&ForceDelete=true\n&Version=2011-01-01\n&Action=DeleteAutoScalingGroup\n&AUTHPARAMS \n \n \n 70a76d42-9665-11e2-9fdf-211deEXAMPLE\n \n \n " + "documentation":"

Deletes the specified Auto Scaling group if the group has no instances and no scaling activities in progress.

" }, "DeleteLaunchConfiguration":{ "name":"DeleteLaunchConfiguration", @@ -162,7 +176,7 @@ }, "input":{ "shape":"LaunchConfigurationNameType", - "documentation":"

\n\n

" + "documentation":"

" }, "errors":[ { @@ -173,10 +187,24 @@ "senderFault":true }, "exception":true, - "documentation":"

\n This is returned when you cannot delete a launch\n configuration or Auto Scaling group because it is being used.\n

" + "documentation":"

This is returned when you cannot delete a launch configuration or Auto Scaling group because it is being used.

" } ], - "documentation":"

\n Deletes the specified LaunchConfiguration.\n

\n

\n The specified launch configuration must not be \n attached to an Auto Scaling group. When this call completes,\n the launch configuration is no longer available for use.\n

\n \n https://autoscaling.amazonaws.com/?LaunchConfigurationName=my-test-lc\n&Version=2011-01-01\n&Action=DeleteLaunchConfiguration\n&AUTHPARAMS \n \n \n 7347261f-97df-11e2-8756-35eEXAMPLE\n \n \n " + "documentation":"

Deletes the specified LaunchConfiguration.

The specified launch configuration must not be attached to an Auto Scaling group. When this call completes, the launch configuration is no longer available for use.

" + }, + "DeleteLifecycleHook":{ + "name":"DeleteLifecycleHook", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteLifecycleHookType"}, + "output":{ + "shape":"DeleteLifecycleHookAnswer", + "documentation":"

The output of the DeleteLifecycleHook action.

", + "resultWrapper":"DeleteLifecycleHookResult" + }, + "documentation":"

Deletes the specified lifecycle hook. If there are any outstanding lifecycle actions, they are completed first (ABANDON for launching instances, CONTINUE for terminating instances).

" }, "DeleteNotificationConfiguration":{ "name":"DeleteNotificationConfiguration", @@ -222,7 +250,7 @@ }, "input":{ "shape":"DeleteTagsType", - "documentation":"

\n \n

" + "documentation":"

" }, "documentation":"

Removes the specified tags or a set of tags from a set of resources.

" }, @@ -234,10 +262,10 @@ }, "output":{ "shape":"DescribeAccountLimitsAnswer", - "documentation":"

\n The output of the DescribeAccountLimitsResult action.\n

", + "documentation":"

The output of the DescribeAccountLimitsResult action.

", "resultWrapper":"DescribeAccountLimitsResult" }, - "documentation":"

\n Returns the limits for the Auto Scaling resources currently allowed for your AWS account.\n

\n

Your AWS account comes with default limits on resources for Auto Scaling. \n There is a default limit of 20 Auto Scaling groups and 100\n launch configurations per region.

\n

If you reach the limits for the number of Auto Scaling groups or the launch configurations,\n you can go to the Support Center and place a \n request to raise the limits.

\n \n https://autoscaling.amazonaws.com/?Version=2011-01-01\n&Action=DescribeAccountLimits\n&AUTHPARAMS \n \n \n 100\n 20\n \n \n a32bd184-519d-11e3-a8a4-c1c467cbcc3b\n \n \n " + "documentation":"

Returns the limits for the Auto Scaling resources currently allowed for your AWS account.

Your AWS account comes with default limits on resources for Auto Scaling. There is a default limit of 20 Auto Scaling groups and 100 launch configurations per region.

If you reach the limits for the number of Auto Scaling groups or the launch configurations, you can go to the Support Center and place a request to raise the limits.

" }, "DescribeAdjustmentTypes":{ "name":"DescribeAdjustmentTypes", @@ -247,10 +275,10 @@ }, "output":{ "shape":"DescribeAdjustmentTypesAnswer", - "documentation":"

\n The output of the DescribeAdjustmentTypes action.\n

", + "documentation":"

The output of the DescribeAdjustmentTypes action.

", "resultWrapper":"DescribeAdjustmentTypesResult" }, - "documentation":"

\n Returns policy adjustment types for use in the PutScalingPolicy action.\n

\n \n https://autoscaling.amazonaws.com/?Version=2011-01-01\n&Action=DescribeAdjustmentTypes\n&AUTHPARAMS \n \n \n \n \n ChangeInCapacity\n \n \n ExactCapacity\n \n \n PercentChangeInCapacity\n \n \n \n \n cc5f0337-b694-11e2-afc0-6544dEXAMPLE\n \n \n " + "documentation":"

Returns policy adjustment types for use in the PutScalingPolicy action.

" }, "DescribeAutoScalingGroups":{ "name":"DescribeAutoScalingGroups", @@ -260,11 +288,11 @@ }, "input":{ "shape":"AutoScalingGroupNamesType", - "documentation":"

\n The AutoScalingGroupNamesType data type.\n

" + "documentation":"

The AutoScalingGroupNamesType data type.

" }, "output":{ "shape":"AutoScalingGroupsType", - "documentation":"

\n The AutoScalingGroupsType data type.\n

", + "documentation":"

The AutoScalingGroupsType data type.

", "resultWrapper":"DescribeAutoScalingGroupsResult" }, "errors":[ @@ -276,10 +304,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Returns a full description of each Auto Scaling group in the given list. \n This includes all Amazon EC2 instances that are members of the group. \n If a list of names is not provided, the service returns the\n full details of all Auto Scaling groups.\n

\n

\n This action supports pagination by returning a token if there are more pages to retrieve.\n To get the next page, call this action again with the returned token as the NextToken parameter.\n

\n \n https://autoscaling.amazonaws.com/?AutoScalingGroupNames.member.1=my-test-asg-lbs\n&MaxRecords=20\n&Version=2011-01-01\n&Action=DescribeAutoScalingGroups\n&AUTHPARAMS \n \n\n \n \n \n \n my-test-asg-lbs\n ELB\n 2013-05-06T17:47:15.107Z\n \n my-test-lc\n \n 2\n \n us-east-1b\n us-east-1a\n \n \n my-test-asg-loadbalancer\n \n 2\n \n 120\n 300\n arn:aws:autoscaling:us-east-1:803981987763:autoScalingGroup:ca861182-c8f9-4ca7-b1eb-cd35505f5ebb\n :autoScalingGroupName/my-test-asg-lbs\n \n Default\n \n 10\n \n \n \n \n 0f02a07d-b677-11e2-9eb0-dd50EXAMPLE\n \n \n " + "documentation":"

Returns a full description of each Auto Scaling group in the given list. This includes all Amazon EC2 instances that are members of the group. If a list of names is not provided, the service returns the full details of all Auto Scaling groups.

This action supports pagination by returning a token if there are more pages to retrieve. To get the next page, call this action again with the returned token as the NextToken parameter.

" }, "DescribeAutoScalingInstances":{ "name":"DescribeAutoScalingInstances", @@ -290,7 +318,7 @@ "input":{"shape":"DescribeAutoScalingInstancesType"}, "output":{ "shape":"AutoScalingInstancesType", - "documentation":"

\n The AutoScalingInstancesType data type.\n

", + "documentation":"

The AutoScalingInstancesType data type.

", "resultWrapper":"DescribeAutoScalingInstancesResult" }, "errors":[ @@ -302,10 +330,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Returns a description of each Auto Scaling instance in the InstanceIds list.\n If a list is not provided, the service returns the full details of all instances up to a maximum of 50. \n By default, the service returns a list of 20 items.\n

\n

\n This action supports pagination by returning a token if there are more pages to retrieve.\n To get the next page, call this action again with the returned token as the NextToken parameter.\n

\n \n https://autoscaling.amazonaws.com/?MaxRecords=20\n&InstanceIds.member.1=i-78e0d40b\n&Version=2011-01-01\n&Action=DescribeAutoScalingInstances\n&AUTHPARAMS \n \n \n \n \n HEALTHY\n my-test-asg\n us-east-1e\n i-78e0d40b\n my-test-lc\n InService\n \n \n \n \n df992dc3-b72f-11e2-81e1-750aa6EXAMPLE\n \n\n \n " + "documentation":"

Returns a description of each Auto Scaling instance in the InstanceIds list. If a list is not provided, the service returns the full details of all instances up to a maximum of 50. By default, the service returns a list of 20 items.

This action supports pagination by returning a token if there are more pages to retrieve. To get the next page, call this action again with the returned token as the NextToken parameter.

" }, "DescribeAutoScalingNotificationTypes":{ "name":"DescribeAutoScalingNotificationTypes", @@ -318,7 +346,7 @@ "documentation":"

The AutoScalingNotificationTypes data type.

", "resultWrapper":"DescribeAutoScalingNotificationTypesResult" }, - "documentation":"

\n Returns a list of all notification types that are supported by Auto Scaling.\n \n

" + "documentation":"

Returns a list of all notification types that are supported by Auto Scaling.

" }, "DescribeLaunchConfigurations":{ "name":"DescribeLaunchConfigurations", @@ -328,11 +356,11 @@ }, "input":{ "shape":"LaunchConfigurationNamesType", - "documentation":"

\n The LaunchConfigurationNamesType data type.\n

" + "documentation":"

The LaunchConfigurationNamesType data type.

" }, "output":{ "shape":"LaunchConfigurationsType", - "documentation":"

\n The LaunchConfigurationsType data type.\n

", + "documentation":"

The LaunchConfigurationsType data type.

", "resultWrapper":"DescribeLaunchConfigurationsResult" }, "errors":[ @@ -344,10 +372,36 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Returns a full description of the launch configurations, or the specified launch configurations,\n if they exist.\n

\n

\n If no name is specified, then the full details of\n all launch configurations are returned.\n

\n \n https://autoscaling.amazonaws.com/?LaunchConfigurationNames.member.1=my-test-lc\n&MaxRecords=20\n&Version=2011-01-01\n&Action=DescribeLaunchConfigurations\n&AUTHPARAMS \n \n \n \n \n true\n \n dedicated\n 2013-01-21T23:04:42.200Z\n \n my-test-lc\n \n m1.small\n arn:aws:autoscaling:us-east-1:803981987763:launchConfiguration:\n 9dbbbf87-6141-428a-a409-0752edbe6cad:launchConfigurationName/my-test-lc\n \n ami-514ac838\n \n \n \n true\n \n false\n \n \n \n \n d05a22f8-b690-11e2-bf8e-2113fEXAMPLE\n \n \n " + "documentation":"

Returns a full description of the launch configurations, or the specified launch configurations, if they exist.

If no name is specified, then the full details of all launch configurations are returned.

" + }, + "DescribeLifecycleHookTypes":{ + "name":"DescribeLifecycleHookTypes", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "output":{ + "shape":"DescribeLifecycleHookTypesAnswer", + "resultWrapper":"DescribeLifecycleHookTypesResult" + }, + "documentation":"

Describes the available types of lifecycle hooks.

" + }, + "DescribeLifecycleHooks":{ + "name":"DescribeLifecycleHooks", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeLifecycleHooksType"}, + "output":{ + "shape":"DescribeLifecycleHooksAnswer", + "documentation":"

The output of the DescribeLifecycleHooks action.

", + "resultWrapper":"DescribeLifecycleHooksResult" + }, + "documentation":"

Describes the lifecycle hooks that currently belong to the specified Auto Scaling group.

" }, "DescribeMetricCollectionTypes":{ "name":"DescribeMetricCollectionTypes", @@ -360,7 +414,7 @@ "documentation":"

The output of the DescribeMetricCollectionTypes action.

", "resultWrapper":"DescribeMetricCollectionTypesResult" }, - "documentation":"

\n Returns a list of metrics and a corresponding list \n of granularities for each metric.\n

\n \n https://autoscaling.amazonaws.com/?Version=2011-01-01&Action=DescribeMetricCollectionTypes\n&AUTHPARAMS \n \n \n \n \n GroupMinSize\n \n \n GroupMaxSize\n \n \n GroupDesiredCapacity\n \n \n GroupInServiceInstances\n \n \n GroupPendingInstances\n \n \n GroupTerminatingInstances\n \n \n GroupTotalInstances\n \n \n \n \n 1Minute\n \n \n \n \n 07f3fea2-bf3c-11e2-9b6f-f3cdbb80c073\n \n \n " + "documentation":"

Returns a list of metrics and a corresponding list of granularities for each metric.

" }, "DescribeNotificationConfigurations":{ "name":"DescribeNotificationConfigurations", @@ -383,10 +437,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Returns a list of notification actions associated with Auto Scaling groups \n for specified events.\n

" + "documentation":"

Returns a list of notification actions associated with Auto Scaling groups for specified events.

" }, "DescribePolicies":{ "name":"DescribePolicies", @@ -397,7 +451,7 @@ "input":{"shape":"DescribePoliciesType"}, "output":{ "shape":"PoliciesType", - "documentation":"

\n The PoliciesType data type.\n

", + "documentation":"

The PoliciesType data type.

", "resultWrapper":"DescribePoliciesResult" }, "errors":[ @@ -409,10 +463,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Returns descriptions of what each policy does.\n This action supports pagination. If the response includes a token, \n there are more records available. To get the additional records, repeat\n the request with the response token as the NextToken parameter.\n

\n \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&MaxRecords=20\n&Version=2011-01-01\n&Action=DescribePolicies\n&AUTHPARAMS \n \n \n \n \n arn:aws:autoscaling:us-east-1:803981987763:scalingPolicy:c322\n761b-3172-4d56-9a21-0ed9d6161d67:autoScalingGroupName/my-test-asg:policyName/MyScaleDownPolicy\n ChangeInCapacity\n -1\n MyScaleDownPolicy\n my-test-asg\n 60\n \n \n TestQueue\n arn:aws:cloudwatch:us-east-1:803981987763:alarm:TestQueue\n \n \n \n \n arn:aws:autoscaling:us-east-1:803981987763:scalingPolicy:c55a5cdd-9be0-435b-b60b-a8dd313159f5:autoScalingGroupName/my-test-asg:policyName/MyScaleUpPolicy\n ChangeInCapacity\n 1\n MyScaleUpPolicy\n my-test-asg\n 60\n \n \n TestQueue\n arn:aws:cloudwatch:us-east-1:803981987763:alarm:TestQueue\n \n \n \n \n \n \n ec3bffad-b739-11e2-b38d-15fbEXAMPLE\n \n \n " + "documentation":"

Returns descriptions of what each policy does. This action supports pagination. If the response includes a token, there are more records available. To get the additional records, repeat the request with the response token as the NextToken parameter.

" }, "DescribeScalingActivities":{ "name":"DescribeScalingActivities", @@ -422,11 +476,11 @@ }, "input":{ "shape":"DescribeScalingActivitiesType", - "documentation":"

\n\n

" + "documentation":"

" }, "output":{ "shape":"ActivitiesType", - "documentation":"

\n The output for the DescribeScalingActivities action.\n

", + "documentation":"

The output for the DescribeScalingActivities action.

", "resultWrapper":"DescribeScalingActivitiesResult" }, "errors":[ @@ -438,10 +492,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Returns the scaling activities for the specified Auto Scaling group.\n

\n

\n If the specified ActivityIds list is empty,\n all the activities from the past six weeks are returned.\n Activities are sorted by the start time.\n Activities still in progress appear first on the list.\n

\n

\n This action supports pagination. If the response includes a token, \n there are more records available. To get the additional records, repeat\n the request with the response token as the NextToken parameter. \n

\n \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&MaxRecords=20\n&Version=2011-01-01\n&Action=DescribeScalingActivities\n&AUTHPARAMS \n \n\n\n \n Failed\n 0\n 063308ae-aa22-4a9b-94f4-9faeEXAMPLE\n 2012-04-12T17:32:07.882Z\n my-test-asg\n At 2012-04-12T17:31:30Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1. At 2012-04-12T17:32:07Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.\n
{}
\n Launching a new EC2 instance. Status Reason: The image id 'ami-4edb0327' does not exist. Launching EC2 instance failed.\n 2012-04-12T17:32:08Z\n The image id 'ami-4edb0327' does not exist. Launching EC2 instance failed.\n
\n
\n
\n \n 7a641adc-84c5-11e1-a8a5-217ebEXAMPLE\n \n
\n
" + "documentation":"

Returns the scaling activities for the specified Auto Scaling group.

If the specified ActivityIds list is empty, all the activities from the past six weeks are returned. Activities are sorted by the start time. Activities still in progress appear first on the list.

This action supports pagination. If the response includes a token, there are more records available. To get the additional records, repeat the request with the response token as the NextToken parameter.

" }, "DescribeScalingProcessTypes":{ "name":"DescribeScalingProcessTypes", @@ -451,10 +505,10 @@ }, "output":{ "shape":"ProcessesType", - "documentation":"

\n The output of the DescribeScalingProcessTypes action.\n

", + "documentation":"

The output of the DescribeScalingProcessTypes action.

", "resultWrapper":"DescribeScalingProcessTypesResult" }, - "documentation":"

Returns scaling process types for use in the ResumeProcesses \n and SuspendProcesses actions.

\n \n https://autoscaling.amazonaws.com/?Version=2011-01-01\n&Action=DescribeScalingProcessTypes\n&AUTHPARAMS \n \n \n \n \n AZRebalance\n \n \n AddToLoadBalancer\n \n \n AlarmNotification\n \n \n HealthCheck\n \n \n Launch\n \n \n ReplaceUnhealthy\n \n \n ScheduledActions\n \n \n Terminate\n \n \n \n \n 27f2eacc-b73f-11e2-ad99-c7aba3a9c963\n \n \n " + "documentation":"

Returns scaling process types for use in the ResumeProcesses and SuspendProcesses actions.

" }, "DescribeScheduledActions":{ "name":"DescribeScheduledActions", @@ -465,7 +519,7 @@ "input":{"shape":"DescribeScheduledActionsType"}, "output":{ "shape":"ScheduledActionsType", - "documentation":"

\n A scaling action that is scheduled for a future time and date.\n An action can be scheduled up to thirty days in advance.\n

\n

\n \tStarting with API version 2011-01-01, you can use recurrence \n \tto specify that a scaling action occurs regularly on a schedule. \n

", + "documentation":"

A scaling action that is scheduled for a future time and date. An action can be scheduled up to thirty days in advance.

Starting with API version 2011-01-01, you can use recurrence to specify that a scaling action occurs regularly on a schedule.

", "resultWrapper":"DescribeScheduledActionsResult" }, "errors":[ @@ -477,10 +531,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Lists all the actions scheduled for your Auto Scaling group that haven't been executed. To see a list of\n actions already executed, see the activity record returned in DescribeScalingActivities. \n

" + "documentation":"

Lists all the actions scheduled for your Auto Scaling group that haven't been executed. To see a list of actions already executed, see the activity record returned in DescribeScalingActivities.

" }, "DescribeTags":{ "name":"DescribeTags", @@ -490,11 +544,11 @@ }, "input":{ "shape":"DescribeTagsType", - "documentation":"

\n

" + "documentation":"

" }, "output":{ "shape":"TagsType", - "documentation":"

\n

", + "documentation":"

", "resultWrapper":"DescribeTagsResult" }, "errors":[ @@ -506,10 +560,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" } ], - "documentation":"

\n Lists the Auto Scaling group tags. \n

\n

\n You can use filters to limit results when describing tags. For example, you can query for \n tags of a particular Auto Scaling group. You can specify multiple values for a filter. A \n tag must match at least one of the specified values for it to be included in the results. \n

\n

\n You can also specify multiple filters. The result includes information for a particular \n tag only if it matches all your filters. If there's no match, no special message is returned.\n

\n \n https://autoscaling.amazonaws.com/?Version=2011-01-01&Action=DescribeTags\n&AUTHPARAMS \n \n \n \n \n my-test-asg\n true\n 1.0\n version\n auto-scaling-group\n \n \n \n \n 086265fd-bf3e-11e2-85fc-fbb1EXAMPLE\n \n \n " + "documentation":"

Lists the Auto Scaling group tags.

You can use filters to limit results when describing tags. For example, you can query for tags of a particular Auto Scaling group. You can specify multiple values for a filter. A tag must match at least one of the specified values for it to be included in the results.

You can also specify multiple filters. The result includes information for a particular tag only if it matches all your filters. If there's no match, no special message is returned.

" }, "DescribeTerminationPolicyTypes":{ "name":"DescribeTerminationPolicyTypes", @@ -522,7 +576,21 @@ "documentation":"

The TerminationPolicyTypes data type.

", "resultWrapper":"DescribeTerminationPolicyTypesResult" }, - "documentation":"

\n Returns a list of all termination policies supported by Auto Scaling. \n

\n \n https://autoscaling.amazonaws.com/?Version=2011-01-01\n&Action=DescribeTerminationPolicyTypes\n&AUTHPARAMS \n \n \n \n ClosestToNextInstanceHour\n Default\n NewestInstance\n OldestInstance\n OldestLaunchConfiguration\n \n \n \n d9a05827-b735-11e2-a40c-c79a5EXAMPLE\n \n \n " + "documentation":"

Returns a list of all termination policies supported by Auto Scaling.

" + }, + "DetachInstances":{ + "name":"DetachInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DetachInstancesQuery"}, + "output":{ + "shape":"DetachInstancesAnswer", + "documentation":"

The output of the DetachInstances action.

", + "resultWrapper":"DetachInstancesResult" + }, + "documentation":"

Using DetachInstances, you can remove an instance from an Auto Scaling group. After the instances are detached, you can manage them independently from the rest of the Auto Scaling group.

To learn more about detaching instances, see Detach Amazon EC2 Instances From Your Auto Scaling Group.

" }, "DisableMetricsCollection":{ "name":"DisableMetricsCollection", @@ -531,7 +599,7 @@ "requestUri":"/" }, "input":{"shape":"DisableMetricsCollectionQuery"}, - "documentation":"

\n Disables monitoring of group metrics for the\n Auto Scaling group specified in AutoScalingGroupName.\n You can specify the list of affected metrics with the\n Metrics parameter.\n

" + "documentation":"

Disables monitoring of group metrics for the Auto Scaling group specified in AutoScalingGroupName. You can specify the list of affected metrics with the Metrics parameter.

" }, "EnableMetricsCollection":{ "name":"EnableMetricsCollection", @@ -540,7 +608,21 @@ "requestUri":"/" }, "input":{"shape":"EnableMetricsCollectionQuery"}, - "documentation":"

\n Enables monitoring of group metrics for the\n Auto Scaling group specified in AutoScalingGroupName.\n You can specify the list of enabled metrics with the\n Metrics parameter.\n

\n

\n Auto Scaling metrics collection can be turned on only \n if the InstanceMonitoring flag, \n in the Auto Scaling group's launch configuration, \n is set to True.\n

" + "documentation":"

Enables monitoring of group metrics for the Auto Scaling group specified in AutoScalingGroupName. You can specify the list of enabled metrics with the Metrics parameter.

Auto Scaling metrics collection can be turned on only if the InstanceMonitoring flag, in the Auto Scaling group's launch configuration, is set to True.

" + }, + "EnterStandby":{ + "name":"EnterStandby", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"EnterStandbyQuery"}, + "output":{ + "shape":"EnterStandbyAnswer", + "documentation":"

The output of the EnterStandby action.

", + "resultWrapper":"EnterStandbyResult" + }, + "documentation":"

Move instances in an Auto Scaling group into a Standby mode.

To learn more about how to put instances into a Standby mode, see Auto Scaling InService State.

" }, "ExecutePolicy":{ "name":"ExecutePolicy", @@ -558,11 +640,51 @@ "senderFault":true }, "exception":true, - "documentation":"

\n You cannot delete an Auto Scaling group\n while there are scaling activities in progress for that group.\n

" + "documentation":"

You cannot delete an Auto Scaling group while there are scaling activities in progress for that group.

" } ], "documentation":"

Executes the specified policy.

" }, + "ExitStandby":{ + "name":"ExitStandby", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ExitStandbyQuery"}, + "output":{ + "shape":"ExitStandbyAnswer", + "documentation":"

The output of the ExitStandby action.

", + "resultWrapper":"ExitStandbyResult" + }, + "documentation":"

Move an instance out of Standby mode.

To learn more about how to put instances that are in a Standby mode back into service, see Auto Scaling InService State.

" + }, + "PutLifecycleHook":{ + "name":"PutLifecycleHook", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"PutLifecycleHookType"}, + "output":{ + "shape":"PutLifecycleHookAnswer", + "documentation":"

The output of the PutLifecycleHook action.

", + "resultWrapper":"PutLifecycleHookResult" + }, + "errors":[ + { + "shape":"LimitExceededFault", + "error":{ + "code":"LimitExceeded", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true, + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" + } + ], + "documentation":"

Creates or updates a lifecycle hook for an Auto Scaling Group.

A lifecycle hook tells Auto Scaling that you want to perform an action on an instance that is not actively in service; for example, either when the instance launches or before the instance terminates.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

" + }, "PutNotificationConfiguration":{ "name":"PutNotificationConfiguration", "http":{ @@ -579,10 +701,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The quota for capacity groups or launch configurations\n for this customer has already been reached.\n

" + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" } ], - "documentation":"

\n Configures an Auto Scaling group to send notifications when \n specified events take place. Subscribers to this topic can have \n messages for events delivered to an endpoint such as a web server \n or email address. \n

\n

For more information see Get Email Notifications When Your Auto Scaling Group Changes

\n

A new PutNotificationConfiguration overwrites an existing configuration.

" + "documentation":"

Configures an Auto Scaling group to send notifications when specified events take place. Subscribers to this topic can have messages for events delivered to an endpoint such as a web server or email address.

For more information see Get Email Notifications When Your Auto Scaling Group Changes

A new PutNotificationConfiguration overwrites an existing configuration.

" }, "PutScalingPolicy":{ "name":"PutScalingPolicy", @@ -593,7 +715,7 @@ "input":{"shape":"PutScalingPolicyType"}, "output":{ "shape":"PolicyARNType", - "documentation":"

\n The PolicyARNType data type.\n

", + "documentation":"

The PolicyARNType data type.

", "resultWrapper":"PutScalingPolicyResult" }, "errors":[ @@ -605,10 +727,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The quota for capacity groups or launch configurations\n for this customer has already been reached.\n

" + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" } ], - "documentation":"

\n Creates or updates a policy for an Auto Scaling group. \n To update an existing policy, use the existing\n policy name and set the parameter(s) you want to change. \n Any existing parameter not changed in an update to an\n existing policy is not changed in this update request.\n

\n \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&ScalingAdjustment=30\n&AdjustmentType=PercentChangeInCapacity\n&PolicyName=my-scaleout-policy\n&Version=2011-01-01\n&Action=PutScalingPolicy\n&AUTHPARAMS \n \n \n arn:aws:autoscaling:us-east-1:803981987763:scalingPolicy:b0dcf5e8\n-02e6-4e31-9719-0675d0dc31ae:autoScalingGroupName/my-test-asg:policyName/my-scal\neout-policy\n \n \n 3cfc6fef-c08b-11e2-a697-2922EXAMPLE\n \n \n " + "documentation":"

Creates or updates a policy for an Auto Scaling group. To update an existing policy, use the existing policy name and set the parameter(s) you want to change. Any existing parameter not changed in an update to an existing policy is not changed in this update request.

" }, "PutScheduledUpdateGroupAction":{ "name":"PutScheduledUpdateGroupAction", @@ -626,7 +748,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The named Auto Scaling group or launch configuration already exists.\n

" + "documentation":"

The named Auto Scaling group or launch configuration already exists.

" }, { "shape":"LimitExceededFault", @@ -636,10 +758,24 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The quota for capacity groups or launch configurations\n for this customer has already been reached.\n

" + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" } ], - "documentation":"

\n Creates or updates a scheduled scaling action for an Auto Scaling group. \n When updating a scheduled scaling action, if you leave a parameter unspecified, the corresponding value \n remains unchanged in the affected Auto Scaling group.\n

\n

For information on creating or updating a scheduled action for your Auto Scaling group, \n see Scale Based on a Schedule.

\n \n

Auto Scaling supports the date and time expressed in \"YYYY-MM-DDThh:mm:ssZ\" format in UTC/GMT only.

\n
\n \n \n Schedule based on a specific date and time \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&ScheduledActionName=ScaleUp\n&StartTime=2013-05-25T08:00:00Z\n&DesiredCapacity=3\n&Version=2011-01-01\n&Action=PutScheduledUpdateGroupAction\n&AUTHPARAMS \n \n \n 3bc8c9bc-6a62-11e2-8a51-4b8a1EXAMPLE\n \n \n \n \n Recurring Schedule \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&ScheduledActionName=scaleup-schedule-year\n&Recurrence=\"30 0 1 1,6,12 *\"\n&DesiredCapacity=3\n&Version=2011-01-01\n&Action=PutScheduledUpdateGroupAction\n&AUTHPARAMS \n \n \n 3bc8c9bc-6a62-11e2-8a51-4b8a1EXAMPLE\n \n \n \n " + "documentation":"

Creates or updates a scheduled scaling action for an Auto Scaling group. When updating a scheduled scaling action, if you leave a parameter unspecified, the corresponding value remains unchanged in the affected Auto Scaling group.

For information on creating or updating a scheduled action for your Auto Scaling group, see Scale Based on a Schedule.

" + }, + "RecordLifecycleActionHeartbeat":{ + "name":"RecordLifecycleActionHeartbeat", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RecordLifecycleActionHeartbeatType"}, + "output":{ + "shape":"RecordLifecycleActionHeartbeatAnswer", + "documentation":"

The output of the RecordLifecycleActionHeartbeat action.

", + "resultWrapper":"RecordLifecycleActionHeartbeatResult" + }, + "documentation":"

Records a heartbeat for the lifecycle action associated with a specific token. This extends the timeout by the length of time defined by the HeartbeatTimeout parameter of the PutLifecycleHook operation.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

" }, "ResumeProcesses":{ "name":"ResumeProcesses", @@ -648,7 +784,7 @@ "requestUri":"/" }, "input":{"shape":"ScalingProcessQuery"}, - "documentation":"

\n Resumes all suspended Auto Scaling processes for an Auto Scaling group.\n For information on suspending and resuming Auto Scaling process, see Suspend and Resume Auto Scaling Process.\n

" + "documentation":"

Resumes all suspended Auto Scaling processes for an Auto Scaling group. For information on suspending and resuming Auto Scaling process, see Suspend and Resume Auto Scaling Process.

" }, "SetDesiredCapacity":{ "name":"SetDesiredCapacity", @@ -658,7 +794,7 @@ }, "input":{ "shape":"SetDesiredCapacityType", - "documentation":"

\n\n

" + "documentation":"

" }, "errors":[ { @@ -669,10 +805,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n You cannot delete an Auto Scaling group\n while there are scaling activities in progress for that group.\n

" + "documentation":"

You cannot delete an Auto Scaling group while there are scaling activities in progress for that group.

" } ], - "documentation":"

\n Sets the desired size of the specified AutoScalingGroup. \n

\n \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg\n&HonorCooldown=false\n&DesiredCapacity=2\n&Version=2011-01-01\n&Action=SetDesiredCapacity\n&AUTHPARAMS \n \n \n 9fb7e2db-6998-11e2-a985-57c82EXAMPLE\n \n \n " + "documentation":"

Sets the desired size of the specified AutoScalingGroup.

" }, "SetInstanceHealth":{ "name":"SetInstanceHealth", @@ -681,7 +817,7 @@ "requestUri":"/" }, "input":{"shape":"SetInstanceHealthQuery"}, - "documentation":"

\n Sets the health status of a specified instance that belongs to any of your Auto Scaling groups. \n

\n

For more information, see Configure Health Checks for Your Auto Scaling group.

" + "documentation":"

Sets the health status of a specified instance that belongs to any of your Auto Scaling groups.

For more information, see Configure Health Checks for Your Auto Scaling group.

" }, "SuspendProcesses":{ "name":"SuspendProcesses", @@ -690,7 +826,7 @@ "requestUri":"/" }, "input":{"shape":"ScalingProcessQuery"}, - "documentation":"

\n Suspends Auto Scaling processes for an Auto Scaling group.\n To suspend specific process types, specify them by name\n with the ScalingProcesses.member.N parameter.\n To suspend all process types, omit the ScalingProcesses.member.N\n parameter. \n

\n \n

\n Suspending either of the two primary process types,\n Launch or Terminate,\n can prevent other process types from functioning\n properly. \n

\n
\n

\n To resume processes that have been suspended,\n use ResumeProcesses For more information on suspending and resuming Auto Scaling process, \n see Suspend and Resume Auto Scaling Process.\n

" + "documentation":"

Suspends Auto Scaling processes for an Auto Scaling group. To suspend specific process types, specify them by name with the ScalingProcesses.member.N parameter. To suspend all process types, omit the ScalingProcesses.member.N parameter.

Suspending either of the two primary process types, Launch or Terminate, can prevent other process types from functioning properly.

To resume processes that have been suspended, use ResumeProcesses For more information on suspending and resuming Auto Scaling process, see Suspend and Resume Auto Scaling Process.

" }, "TerminateInstanceInAutoScalingGroup":{ "name":"TerminateInstanceInAutoScalingGroup", @@ -700,11 +836,11 @@ }, "input":{ "shape":"TerminateInstanceInAutoScalingGroupType", - "documentation":"

\n\n

" + "documentation":"

" }, "output":{ "shape":"ActivityType", - "documentation":"

\n The output for the TerminateInstanceInAutoScalingGroup action.\n

", + "documentation":"

The output for the TerminateInstanceInAutoScalingGroup action.

", "resultWrapper":"TerminateInstanceInAutoScalingGroupResult" }, "errors":[ @@ -716,10 +852,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n You cannot delete an Auto Scaling group\n while there are scaling activities in progress for that group.\n

" + "documentation":"

You cannot delete an Auto Scaling group while there are scaling activities in progress for that group.

" } ], - "documentation":"

\n Terminates the specified instance.\n Optionally, the desired group size can be adjusted.\n

\n \n This call simply registers a termination request.\n The termination of the instance cannot happen immediately.\n " + "documentation":"

Terminates the specified instance. Optionally, the desired group size can be adjusted.

" }, "UpdateAutoScalingGroup":{ "name":"UpdateAutoScalingGroup", @@ -729,7 +865,7 @@ }, "input":{ "shape":"UpdateAutoScalingGroupType", - "documentation":"

\n \n

" + "documentation":"

" }, "errors":[ { @@ -740,10 +876,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n You cannot delete an Auto Scaling group\n while there are scaling activities in progress for that group.\n

" + "documentation":"

You cannot delete an Auto Scaling group while there are scaling activities in progress for that group.

" } ], - "documentation":"

\n Updates the configuration for the specified AutoScalingGroup.\n

\n \n

\n To update an Auto Scaling group with a launch configuration\n that has the InstanceMonitoring flag\n set to False, you must first ensure that collection\n of group metrics is disabled. Otherwise, calls to \n UpdateAutoScalingGroup will fail.\n If you have previously enabled group metrics collection, \n you can disable collection of all group metrics\n by calling DisableMetricsCollection.\n \n

\n
\n

\n The new settings are registered upon the completion of this call.\n Any launch configuration settings take effect on any triggers after\n this call returns.\n Scaling activities that are currently in progress aren't affected.\n

\n \n
    \n
  • \n

    If a new value is specified for MinSize without specifying the value for DesiredCapacity, \n and if the new MinSize is larger than the current size of the Auto Scaling Group, there\n will be an implicit call to SetDesiredCapacity to set the group to the new MinSize.

    \n
  • \n
  • \n

    If a new value is specified for MaxSize without specifying the value for DesiredCapacity, and \n the new MaxSize is smaller than the current size of the Auto Scaling Group, there will \n be an implicit call to SetDesiredCapacity to set the group to the new MaxSize.

    \n
  • \n
  • \n

    All other optional parameters are left unchanged if not passed in the request.

    \n
  • \n
\n
\n \n \n Update existing Auto Scaling group with ELB health check\n https://autoscaling.amazonaws.com/?HealthCheckType=ELB\n&HealthCheckGracePeriod=300\n&AutoScalingGroupName=my-test-asg-lbs\n&Version=2011-01-01\n&Action=UpdateAutoScalingGroup\n&AUTHPARAMS \n \n \n adafead0-ab8a-11e2-ba13-ab0ccEXAMPLE\n \n\n \n \n Update existing Auto Scaling group with a new Availability Zone \n https://autoscaling.amazonaws.com/?AutoScalingGroupName=my-test-asg-lbs\n&AvailabilityZones.member.1=us-east-1a\n&AvailabilityZones.member.2=us-east-1b\n&AvailabilityZones.member.3=us-east-1c\n&MinSize=3\n&Version=2011-01-01\n&Action=UpdateAutoScalingGroup\n&AUTHPARAMS \n \n \n adafead0-ab8a-11e2-ba13-ab0ccEXAMPLE\n \n\n \n " + "documentation":"

Updates the configuration for the specified AutoScalingGroup.

The new settings are registered upon the completion of this call. Any launch configuration settings take effect on any triggers after this call returns. Scaling activities that are currently in progress aren't affected.

" } }, "shapes":{ @@ -757,14 +893,14 @@ "members":{ "Activities":{ "shape":"Activities", - "documentation":"

\n A list of the requested scaling activities.\n

" + "documentation":"

A list of the requested scaling activities.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n Acts as a paging mechanism for large result sets.\n Set to a non-empty string if there are additional\n results waiting to be returned.\n Pass this in to subsequent calls to return additional results.\n

" + "documentation":"

Acts as a paging mechanism for large result sets. Set to a non-empty string if there are additional results waiting to be returned. Pass this in to subsequent calls to return additional results.

" } }, - "documentation":"

\n The output for the DescribeScalingActivities action.\n

" + "documentation":"

The output for the DescribeScalingActivities action.

" }, "Activity":{ "type":"structure", @@ -778,46 +914,46 @@ "members":{ "ActivityId":{ "shape":"XmlString", - "documentation":"

\n Specifies the ID of the activity.\n

" + "documentation":"

Specifies the ID of the activity.

" }, "AutoScalingGroupName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "Description":{ "shape":"XmlString", - "documentation":"

\n Contains a friendly, more verbose description of the scaling activity.\n

" + "documentation":"

Contains a friendly, more verbose description of the scaling activity.

" }, "Cause":{ "shape":"XmlStringMaxLen1023", - "documentation":"

\n Contains the reason the activity was begun.\n

" + "documentation":"

Contains the reason the activity was begun.

" }, "StartTime":{ "shape":"TimestampType", - "documentation":"

\n Provides the start time of this activity.\n

" + "documentation":"

Provides the start time of this activity.

" }, "EndTime":{ "shape":"TimestampType", - "documentation":"

\n Provides the end time of this activity.\n

" + "documentation":"

Provides the end time of this activity.

" }, "StatusCode":{ "shape":"ScalingActivityStatusCode", - "documentation":"

\n Contains the current status of the activity.\n

" + "documentation":"

Contains the current status of the activity.

" }, "StatusMessage":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Contains a friendly, more verbose description of the activity status.\n

" + "documentation":"

Contains a friendly, more verbose description of the activity status.

" }, "Progress":{ "shape":"Progress", - "documentation":"

\n Specifies a value between 0 and 100 that indicates the progress of the\n activity.\n

" + "documentation":"

Specifies a value between 0 and 100 that indicates the progress of the activity.

" }, "Details":{ "shape":"XmlString", - "documentation":"

\n Contains details of the scaling activity.\n

" + "documentation":"

Contains details of the scaling activity.

" } }, - "documentation":"

\n A scaling Activity is a long-running process that \n represents a change to your AutoScalingGroup, \n such as changing the size of the group. \n It can also be a process to replace an instance, \n or a process to perform any other long-running operations \n supported by the API.\n

" + "documentation":"

A scaling Activity is a long-running process that represents a change to your AutoScalingGroup, such as changing the size of the group. It can also be a process to replace an instance, or a process to perform any other long-running operations supported by the API.

" }, "ActivityIds":{ "type":"list", @@ -828,20 +964,20 @@ "members":{ "Activity":{ "shape":"Activity", - "documentation":"

\n A scaling Activity.\n

" + "documentation":"

A scaling Activity.

" } }, - "documentation":"

\n The output for the TerminateInstanceInAutoScalingGroup action.\n

" + "documentation":"

The output for the TerminateInstanceInAutoScalingGroup action.

" }, "AdjustmentType":{ "type":"structure", "members":{ "AdjustmentType":{ "shape":"XmlStringMaxLen255", - "documentation":"

A policy adjustment type. Valid values are ChangeInCapacity,\n ExactCapacity, and PercentChangeInCapacity.

" + "documentation":"

A policy adjustment type. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

" } }, - "documentation":"

\n Specifies whether the PutScalingPolicy \n ScalingAdjustment parameter is \n an absolute number or a percentage of the current\n capacity. \n

" + "documentation":"

Specifies whether the PutScalingPolicy ScalingAdjustment parameter is an absolute number or a percentage of the current capacity.

" }, "AdjustmentTypes":{ "type":"list", @@ -870,7 +1006,7 @@ "members":{ "message":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n\n

" + "documentation":"

" } }, "error":{ @@ -879,7 +1015,13 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The named Auto Scaling group or launch configuration already exists.\n

" + "documentation":"

The named Auto Scaling group or launch configuration already exists.

" + }, + "AsciiStringMaxLen255":{ + "type":"string", + "min":1, + "max":255, + "pattern":"[A-Za-z0-9\\-_\\/]+" }, "AssociatePublicIpAddress":{"type":"boolean"}, "AttachInstancesQuery":{ @@ -888,11 +1030,11 @@ "members":{ "InstanceIds":{ "shape":"InstanceIds", - "documentation":"

\n One or more IDs of the Amazon EC2 instances to attach to the specified Auto Scaling group. \n You must specify at least one instance ID. \n

" + "documentation":"

One or more IDs of the Amazon EC2 instances to attach to the specified Auto Scaling group. You must specify at least one instance ID.

" }, "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the Auto Scaling group to which to attach the specified instance(s). \n

" + "documentation":"

The name of the Auto Scaling group to which to attach the specified instance(s).

" } } }, @@ -912,86 +1054,86 @@ "members":{ "AutoScalingGroupName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Specifies the name of the group.\n

" + "documentation":"

Specifies the name of the group.

" }, "AutoScalingGroupARN":{ "shape":"ResourceName", - "documentation":"

\n The Amazon Resource Name (ARN) of the Auto Scaling group.\n

" + "documentation":"

The Amazon Resource Name (ARN) of the Auto Scaling group.

" }, "LaunchConfigurationName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Specifies the name of the associated LaunchConfiguration.\n

" + "documentation":"

Specifies the name of the associated LaunchConfiguration.

" }, "MinSize":{ "shape":"AutoScalingGroupMinSize", - "documentation":"

\n Contains the minimum size of the Auto Scaling group.\n

" + "documentation":"

Contains the minimum size of the Auto Scaling group.

" }, "MaxSize":{ "shape":"AutoScalingGroupMaxSize", - "documentation":"

\n Contains the maximum size of the Auto Scaling group.\n

" + "documentation":"

Contains the maximum size of the Auto Scaling group.

" }, "DesiredCapacity":{ "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

\n Specifies the desired capacity for the Auto Scaling group.\n

" + "documentation":"

Specifies the desired capacity for the Auto Scaling group.

" }, "DefaultCooldown":{ "shape":"Cooldown", - "documentation":"

\n The number of seconds after a scaling activity completes\n before any further scaling activities can start.\n

" + "documentation":"

The number of seconds after a scaling activity completes before any further scaling activities can start.

" }, "AvailabilityZones":{ "shape":"AvailabilityZones", - "documentation":"

\n Contains a list of Availability Zones for the group.\n

" + "documentation":"

Contains a list of Availability Zones for the group.

" }, "LoadBalancerNames":{ "shape":"LoadBalancerNames", - "documentation":"

\n A list of load balancers associated with this Auto Scaling group.\n

" + "documentation":"

A list of load balancers associated with this Auto Scaling group.

" }, "HealthCheckType":{ "shape":"XmlStringMaxLen32", - "documentation":"

\n The service of interest for the health status check,\n either \"EC2\" for Amazon EC2 or \"ELB\" for Elastic Load Balancing.\n

" + "documentation":"

The service of interest for the health status check, either \"EC2\" for Amazon EC2 or \"ELB\" for Elastic Load Balancing.

" }, "HealthCheckGracePeriod":{ "shape":"HealthCheckGracePeriod", - "documentation":"

\n The length of time that Auto Scaling waits\n before checking an instance's health status.\n The grace period begins when an instance\n comes into service.\n

" + "documentation":"

The length of time that Auto Scaling waits before checking an instance's health status. The grace period begins when an instance comes into service.

" }, "Instances":{ "shape":"Instances", - "documentation":"

\n Provides a summary list of Amazon EC2 instances.\n

" + "documentation":"

Provides a summary list of Amazon EC2 instances.

" }, "CreatedTime":{ "shape":"TimestampType", - "documentation":"

\n Specifies the date and time the Auto Scaling group was created.\n

" + "documentation":"

Specifies the date and time the Auto Scaling group was created.

" }, "SuspendedProcesses":{ "shape":"SuspendedProcesses", - "documentation":"

\n Suspended processes associated with this Auto Scaling group.\n

" + "documentation":"

Suspended processes associated with this Auto Scaling group.

" }, "PlacementGroup":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the cluster placement group, if applicable. For\n more information, go to \n \n Using Cluster Instances in the Amazon EC2 User Guide.\n

" + "documentation":"

The name of the cluster placement group, if applicable. For more information, go to Using Cluster Instances in the Amazon EC2 User Guide.

" }, "VPCZoneIdentifier":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in a \n comma-separated list. \n

\n

\n When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the \n subnets' Availability Zones match the values you specify for AvailabilityZones.\n

" + "documentation":"

The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in a comma-separated list.

When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the subnets' Availability Zones match the values you specify for AvailabilityZones.

" }, "EnabledMetrics":{ "shape":"EnabledMetrics", - "documentation":"

\n A list of metrics enabled for this Auto Scaling group.\n

" + "documentation":"

A list of metrics enabled for this Auto Scaling group.

" }, "Status":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n\t\t The current state of the Auto Scaling group when a DeleteAutoScalingGroup action is in progress.\n

" + "documentation":"

The current state of the Auto Scaling group when a DeleteAutoScalingGroup action is in progress.

" }, "Tags":{ "shape":"TagDescriptionList", - "documentation":"

\n A list of tags for the Auto Scaling group.\n

" + "documentation":"

A list of tags for the Auto Scaling group.

" }, "TerminationPolicies":{ "shape":"TerminationPolicies", - "documentation":"

\n A standalone termination policy or a list of termination policies for this Auto Scaling group.\n

" + "documentation":"

A standalone termination policy or a list of termination policies for this Auto Scaling group.

" } }, - "documentation":"

\n The AutoScalingGroup data type.\n

" + "documentation":"

The AutoScalingGroup data type.

" }, "AutoScalingGroupDesiredCapacity":{"type":"integer"}, "AutoScalingGroupMaxSize":{"type":"integer"}, @@ -1005,18 +1147,18 @@ "members":{ "AutoScalingGroupNames":{ "shape":"AutoScalingGroupNames", - "documentation":"

\n A list of Auto Scaling group names.\n

" + "documentation":"

A list of Auto Scaling group names.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results. \n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n The maximum number of records to return.\n

" + "documentation":"

The maximum number of records to return.

" } }, - "documentation":"

\n The AutoScalingGroupNamesType data type.\n

" + "documentation":"

The AutoScalingGroupNamesType data type.

" }, "AutoScalingGroups":{ "type":"list", @@ -1028,14 +1170,14 @@ "members":{ "AutoScalingGroups":{ "shape":"AutoScalingGroups", - "documentation":"

\n A list of Auto Scaling groups.\n

" + "documentation":"

A list of Auto Scaling groups.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results. \n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" } }, - "documentation":"

\n The AutoScalingGroupsType data type.\n

" + "documentation":"

The AutoScalingGroupsType data type.

" }, "AutoScalingInstanceDetails":{ "type":"structure", @@ -1050,30 +1192,30 @@ "members":{ "InstanceId":{ "shape":"XmlStringMaxLen16", - "documentation":"

\n The instance ID of the Amazon EC2 instance.\n

" + "documentation":"

The instance ID of the Amazon EC2 instance.

" }, "AutoScalingGroupName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the Auto Scaling group associated with this instance.\n

" + "documentation":"

The name of the Auto Scaling group associated with this instance.

" }, "AvailabilityZone":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The Availability Zone in which this instance resides.\n

" + "documentation":"

The Availability Zone in which this instance resides.

" }, "LifecycleState":{ "shape":"XmlStringMaxLen32", - "documentation":"

\n The life cycle state of this instance. for more information, see\n Instance Lifecycle State\n in the Auto Scaling Developer Guide.

" + "documentation":"

The life cycle state of this instance. for more information, see Instance Lifecycle State in the Auto Scaling Developer Guide.

" }, "HealthStatus":{ "shape":"XmlStringMaxLen32", - "documentation":"

\n The health status of this instance. \n \"Healthy\" means that the instance is healthy and should\n remain in service.\n \"Unhealthy\" means that the instance is unhealthy. Auto\n Scaling should terminate and replace it. \n

" + "documentation":"

The health status of this instance. \"Healthy\" means that the instance is healthy and should remain in service. \"Unhealthy\" means that the instance is unhealthy. Auto Scaling should terminate and replace it.

" }, "LaunchConfigurationName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The launch configuration associated with this instance.\n

" + "documentation":"

The launch configuration associated with this instance.

" } }, - "documentation":"

\n The AutoScalingInstanceDetails data type.\n

" + "documentation":"

The AutoScalingInstanceDetails data type.

" }, "AutoScalingInstances":{ "type":"list", @@ -1084,14 +1226,14 @@ "members":{ "AutoScalingInstances":{ "shape":"AutoScalingInstances", - "documentation":"

\n A list of Auto Scaling instances.\n

" + "documentation":"

A list of Auto Scaling instances.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results. \n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" } }, - "documentation":"

\n The AutoScalingInstancesType data type.\n

" + "documentation":"

The AutoScalingInstancesType data type.

" }, "AutoScalingNotificationTypes":{ "type":"list", @@ -1124,27 +1266,60 @@ "members":{ "VirtualName":{ "shape":"XmlStringMaxLen255", - "documentation":"

The virtual name associated with the device.\n

" + "documentation":"

The virtual name associated with the device.

" }, "DeviceName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the device within Amazon EC2 (for example, /dev/sdh or xvdh).\n

" + "documentation":"

The name of the device within Amazon EC2 (for example, /dev/sdh or xvdh).

" }, "Ebs":{ "shape":"Ebs", - "documentation":"

\n The Elastic Block Storage volume information.\n

" + "documentation":"

The Elastic Block Storage volume information.

" }, "NoDevice":{ "shape":"NoDevice", - "documentation":"

\n Suppresses the device mapping. \n

\n If NoDevice is set to true for the root device, the instance might fail the EC2 health check. \n Auto Scaling launches a replacement instance if the instance fails the health check." + "documentation":"

Suppresses the device mapping.

" } }, - "documentation":"

\n The BlockDeviceMapping data type.\n

" + "documentation":"

The BlockDeviceMapping data type.

" }, "BlockDeviceMappings":{ "type":"list", "member":{"shape":"BlockDeviceMapping"} }, + "CompleteLifecycleActionAnswer":{ + "type":"structure", + "members":{ + }, + "documentation":"

The output of the CompleteLifecycleAction.

" + }, + "CompleteLifecycleActionType":{ + "type":"structure", + "required":[ + "LifecycleHookName", + "AutoScalingGroupName", + "LifecycleActionToken", + "LifecycleActionResult" + ], + "members":{ + "LifecycleHookName":{ + "shape":"AsciiStringMaxLen255", + "documentation":"

The name of the lifecycle hook.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group to which the lifecycle hook belongs.

" + }, + "LifecycleActionToken":{ + "shape":"LifecycleActionToken", + "documentation":"

A universally unique identifier (UUID) that identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook.

" + }, + "LifecycleActionResult":{ + "shape":"LifecycleActionResult", + "documentation":"

The action the Auto Scaling group should take. The value for this parameter can be either CONTINUE or ABANDON.

" + } + } + }, "Cooldown":{"type":"integer"}, "CreateAutoScalingGroupType":{ "type":"structure", @@ -1156,66 +1331,66 @@ "members":{ "AutoScalingGroupName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "LaunchConfigurationName":{ "shape":"ResourceName", - "documentation":"

\n The name of an existing launch configuration to use to launch new instances. Use this attribute \n if you want to create an Auto Scaling group using an existing launch configuration instead of an EC2 instance.\n

" + "documentation":"

The name of an existing launch configuration to use to launch new instances. Use this attribute if you want to create an Auto Scaling group using an existing launch configuration instead of an EC2 instance.

" }, "InstanceId":{ "shape":"XmlStringMaxLen16", - "documentation":"

\n The ID of the Amazon EC2 instance you want to use to create the Auto Scaling group. Use this attribute\n if you want to create an Auto Scaling group using an EC2 instance instead of a launch configuration. \n

\n

\n When you use an instance to create an Auto Scaling group, a new launch configuration is first created \n and then associated with the Auto Scaling group. The new launch configuration derives \n all its attributes from the instance that is used to create the Auto Scaling group, \n with the exception of BlockDeviceMapping. \n

\n

For more information, see Create an Auto Scaling Group Using EC2 Instance\n in the Auto Scaling Developer Guide.

" + "documentation":"

The ID of the Amazon EC2 instance you want to use to create the Auto Scaling group. Use this attribute if you want to create an Auto Scaling group using an EC2 instance instead of a launch configuration.

When you use an instance to create an Auto Scaling group, a new launch configuration is first created and then associated with the Auto Scaling group. The new launch configuration derives all its attributes from the instance that is used to create the Auto Scaling group, with the exception of BlockDeviceMapping.

For more information, see Create an Auto Scaling Group Using EC2 Instance in the Auto Scaling Developer Guide.

" }, "MinSize":{ "shape":"AutoScalingGroupMinSize", - "documentation":"

\n The minimum size of the Auto Scaling group.\n

" + "documentation":"

The minimum size of the Auto Scaling group.

" }, "MaxSize":{ "shape":"AutoScalingGroupMaxSize", - "documentation":"

\n The maximum size of the Auto Scaling group.\n

" + "documentation":"

The maximum size of the Auto Scaling group.

" }, "DesiredCapacity":{ "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

\n The number of Amazon EC2 instances that should be\n running in the group. The desired capacity must be greater than or equal to the minimum size and less than or \n equal to the maximum size specified for the Auto Scaling group. \n

" + "documentation":"

The number of Amazon EC2 instances that should be running in the group. The desired capacity must be greater than or equal to the minimum size and less than or equal to the maximum size specified for the Auto Scaling group.

" }, "DefaultCooldown":{ "shape":"Cooldown", - "documentation":"

\n The amount of time, in seconds, between a successful scaling activity and the succeeding scaling activity.

\n

If a DefaultCooldown\n period is not specified, Auto Scaling uses the default value of 300 as the default cool down period for the Auto Scaling group. For more information, \n see Cooldown Period\n

" + "documentation":"

The amount of time, in seconds, between a successful scaling activity and the succeeding scaling activity.

If a DefaultCooldown period is not specified, Auto Scaling uses the default value of 300 as the default cool down period for the Auto Scaling group. For more information, see Cooldown Period

" }, "AvailabilityZones":{ "shape":"AvailabilityZones", - "documentation":"

\n A list of Availability Zones for the Auto Scaling group.\n This is required unless you have specified subnets.\n

" + "documentation":"

A list of Availability Zones for the Auto Scaling group. This is required unless you have specified subnets.

" }, "LoadBalancerNames":{ "shape":"LoadBalancerNames", - "documentation":"

A list of existing Elastic Load Balancing load balancers to use. The load balancers must be associated with the AWS account.

\n

For information on using load balancers, see Use Load Balancer to Load Balance Your Auto Scaling Group\n in the Auto Scaling Developer Guide.

" + "documentation":"

A list of existing Elastic Load Balancing load balancers to use. The load balancers must be associated with the AWS account.

For information on using load balancers, see Load Balance Your Auto Scaling Group in the Auto Scaling Developer Guide.

" }, "HealthCheckType":{ "shape":"XmlStringMaxLen32", - "documentation":"

The service you want the health checks from,\n Amazon EC2 or Elastic Load Balancer. Valid values are EC2 or ELB.

\n

By default, the Auto Scaling health check uses the results of Amazon EC2 instance status checks to determine the health of an instance. For more information, \n see Health Check.

" + "documentation":"

The service you want the health checks from, Amazon EC2 or Elastic Load Balancer. Valid values are EC2 or ELB.

By default, the Auto Scaling health check uses the results of Amazon EC2 instance status checks to determine the health of an instance. For more information, see Health Check.

" }, "HealthCheckGracePeriod":{ "shape":"HealthCheckGracePeriod", - "documentation":"

Length of time in seconds after a new Amazon EC2\n instance comes into service that Auto Scaling\n starts checking its health. During this time any health check failure for the that instance is ignored.

\n

This is required if you are adding ELB health check. Frequently, new instances need to warm up, briefly, \n before they can pass a health check. To provide ample warm-up time, set the health check grace period of the group to \n match the expected startup period of your application.

" + "documentation":"

Length of time in seconds after a new Amazon EC2 instance comes into service that Auto Scaling starts checking its health. During this time any health check failure for the that instance is ignored.

This is required if you are adding ELB health check. Frequently, new instances need to warm up, briefly, before they can pass a health check. To provide ample warm-up time, set the health check grace period of the group to match the expected startup period of your application.

For more information, see Add an Elastic Load Balancing Health Check.

" }, "PlacementGroup":{ "shape":"XmlStringMaxLen255", - "documentation":"

Physical location of an existing cluster placement group\n into which you want to launch your instances. For information about cluster placement group, see \n Using Cluster Instances

" + "documentation":"

Physical location of an existing cluster placement group into which you want to launch your instances. For information about cluster placement group, see Using Cluster Instances

" }, "VPCZoneIdentifier":{ "shape":"XmlStringMaxLen255", - "documentation":"

A comma-separated list of subnet identifiers of Amazon Virtual Private Clouds (Amazon VPCs).

\n

If you specify subnets and Availability Zones with this call, ensure that the subnets' Availability Zones \n match the Availability Zones specified.\n

\n

For information on launching your Auto Scaling group into Amazon VPC subnets, see Launch Auto Scaling Instances into Amazon VPC\n in the Auto Scaling Developer Guide\n .

" + "documentation":"

A comma-separated list of subnet identifiers of Amazon Virtual Private Clouds (Amazon VPCs).

If you specify subnets and Availability Zones with this call, ensure that the subnets' Availability Zones match the Availability Zones specified.

For information on launching your Auto Scaling group into Amazon VPC subnets, see Auto Scaling in Amazon Virtual Private Cloud in the Auto Scaling Developer Guide .

" }, "TerminationPolicies":{ "shape":"TerminationPolicies", - "documentation":"

A standalone termination policy or a list of termination policies used to select the instance to terminate. \n The policies are executed in the order that they are listed.\n

\n

\n For more information on configuring a termination policy for your Auto Scaling group, see \n Instance Termination Policy for Your Auto Scaling Group in \n the Auto Scaling Developer Guide. \n

" + "documentation":"

A standalone termination policy or a list of termination policies used to select the instance to terminate. The policies are executed in the order that they are listed.

For more information on configuring a termination policy for your Auto Scaling group, see Instance Termination Policy for Your Auto Scaling Group in the Auto Scaling Developer Guide.

" }, "Tags":{ "shape":"Tags", - "documentation":"

\n The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, \n and a propagate flag. Valid values: key=value, value=value, propagate=true or false. Value and propagate are optional parameters.

\n

For information about using tags, see Tag Your Auto Scaling Groups and Amazon EC2 Instances\n in the Auto Scaling Developer Guide.\n

" + "documentation":"

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. Valid values: key=value, value=value, propagate=true or false. Value and propagate are optional parameters.

For information about using tags, see Tag Your Auto Scaling Groups and Amazon EC2 Instances in the Auto Scaling Developer Guide.

" } }, - "documentation":"

\n\n

" + "documentation":"

" }, "CreateLaunchConfigurationType":{ "type":"structure", @@ -1223,70 +1398,70 @@ "members":{ "LaunchConfigurationName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the launch configuration to create.\n

" + "documentation":"

The name of the launch configuration to create.

" }, "ImageId":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Unique ID of the Amazon Machine Image (AMI) you want to use to launch your EC2 instances.\n For information about finding Amazon EC2 AMIs,\n see Finding a Suitable AMI\n in the Amazon Elastic Compute Cloud User Guide.

" + "documentation":"

Unique ID of the Amazon Machine Image (AMI) you want to use to launch your EC2 instances. For information about finding Amazon EC2 AMIs, see Finding a Suitable AMI in the Amazon Elastic Compute Cloud User Guide.

" }, "KeyName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the Amazon EC2 key pair. \n For more information, see Getting a Key Pair in the Amazon Elastic Compute Cloud User Guide.\n

" + "documentation":"

The name of the Amazon EC2 key pair. For more information, see Getting a Key Pair in the Amazon Elastic Compute Cloud User Guide.

" }, "SecurityGroups":{ "shape":"SecurityGroups", - "documentation":"

\n The security groups with which to associate Amazon EC2 or Amazon VPC \n instances.

\n

If your instances are launched in EC2, you can either specify Amazon EC2 security group names or the security group IDs.\n For more information about Amazon EC2 security groups, see Using Security Groups \n in the Amazon Elastic Compute Cloud User Guide.

\n

If your instances are launched within VPC, specify Amazon VPC security group IDs. \n For more information about Amazon VPC security groups, see Security Groups\n in the Amazon Virtual Private Cloud User Guide.

" + "documentation":"

The security groups with which to associate Amazon EC2 or Amazon VPC instances.

If your instances are launched in EC2, you can either specify Amazon EC2 security group names or the security group IDs. For more information about Amazon EC2 security groups, see Using Security Groups in the Amazon Elastic Compute Cloud User Guide.

If your instances are launched within VPC, specify Amazon VPC security group IDs. For more information about Amazon VPC security groups, see Security Groups in the Amazon Virtual Private Cloud User Guide.

" }, "UserData":{ "shape":"XmlStringUserData", - "documentation":"

\n The user data to make available to the launched Amazon EC2 instances.\n For more information about Amazon EC2 user data,\n see User Data Retrieval\n in the Amazon Elastic Compute Cloud User Guide.\n

\n \n At this time, Auto Scaling launch configurations don't support compressed \n (e.g. zipped) user data files.\n " + "documentation":"

The user data to make available to the launched Amazon EC2 instances. For more information about Amazon EC2 user data, see User Data Retrieval in the Amazon Elastic Compute Cloud User Guide.

" }, "InstanceId":{ "shape":"XmlStringMaxLen16", - "documentation":"

\n The ID of the Amazon EC2 instance you want to use to create the launch configuration. Use this attribute if you want \n the launch configuration to derive its attributes from an EC2 instance. \n

\n

\n When you use an instance to create a launch configuration, all you need to specify is the InstanceId. \n The new launch configuration, by default, derives all the attributes from the specified instance with the exception \n of BlockDeviceMapping. \n

\n

If you want to create a launch configuration with BlockDeviceMapping or override any other instance \n attributes, specify them as part of the same request.

\n

For more information on using an InstanceID to create a launch configuration, see \n Create a Launch Configuration Using an Amazon EC2 Instance in \n the Auto Scaling Developer Guide.

" + "documentation":"

The ID of the Amazon EC2 instance you want to use to create the launch configuration. Use this attribute if you want the launch configuration to derive its attributes from an EC2 instance.

When you use an instance to create a launch configuration, all you need to specify is the InstanceId. The new launch configuration, by default, derives all the attributes from the specified instance with the exception of BlockDeviceMapping.

If you want to create a launch configuration with BlockDeviceMapping or override any other instance attributes, specify them as part of the same request.

For more information on using an InstanceID to create a launch configuration, see Create a Launch Configuration Using an Amazon EC2 Instance in the Auto Scaling Developer Guide.

" }, "InstanceType":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The instance type of the Amazon EC2 instance.\n For information about available Amazon EC2 instance types,\n see \n Available Instance Types in the Amazon Elastic Cloud Compute User Guide.\n

" + "documentation":"

The instance type of the Amazon EC2 instance. For information about available Amazon EC2 instance types, see Available Instance Types in the Amazon Elastic Cloud Compute User Guide.

" }, "KernelId":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The ID of the kernel associated with the Amazon EC2 AMI.\n

" + "documentation":"

The ID of the kernel associated with the Amazon EC2 AMI.

" }, "RamdiskId":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The ID of the RAM disk associated with the Amazon EC2 AMI.\n

" + "documentation":"

The ID of the RAM disk associated with the Amazon EC2 AMI.

" }, "BlockDeviceMappings":{ "shape":"BlockDeviceMappings", - "documentation":"

\n A list of mappings that specify how block devices are exposed to the instance.\n Each mapping is made up of a VirtualName, a DeviceName,\n and an ebs data structure that contains information about the\n associated Elastic Block Storage volume.\n For more information about Amazon EC2 BlockDeviceMappings,\n go to\n \n Block Device Mapping in the Amazon EC2 product documentation.\n

" + "documentation":"

A list of mappings that specify how block devices are exposed to the instance. Each mapping is made up of a VirtualName, a DeviceName, and an ebs data structure that contains information about the associated Elastic Block Storage volume. For more information about Amazon EC2 BlockDeviceMappings, go to Block Device Mapping in the Amazon EC2 product documentation.

" }, "InstanceMonitoring":{ "shape":"InstanceMonitoring", - "documentation":"

Enables detailed monitoring if it is disabled. Detailed monitoring is enabled by default.

\n

\n When detailed monitoring is enabled, Amazon Cloudwatch will generate metrics every minute and your account will be charged a fee. \n When you disable detailed monitoring, by specifying False, Cloudwatch will generate metrics every 5 minutes. \n For more information, see Monitor Your Auto Scaling Instances.\n For information about Amazon CloudWatch, see the Amazon CloudWatch Developer Guide. \n

" + "documentation":"

Enables detailed monitoring if it is disabled. Detailed monitoring is enabled by default.

When detailed monitoring is enabled, Amazon Cloudwatch will generate metrics every minute and your account will be charged a fee. When you disable detailed monitoring, by specifying False, Cloudwatch will generate metrics every 5 minutes. For more information, see Monitor Your Auto Scaling Instances. For information about Amazon CloudWatch, see the Amazon CloudWatch Developer Guide.

" }, "SpotPrice":{ "shape":"SpotPrice", - "documentation":"

The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when the \n price you specify exceeds the current Spot market price. For more information on launching Spot Instances, see\n Using Auto Scaling to Launch Spot Instances in the Auto Scaling Developer Guide.\n

" + "documentation":"

The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when the price you specify exceeds the current Spot market price. For more information on launching Spot Instances, see Using Auto Scaling to Launch Spot Instances in the Auto Scaling Developer Guide.

" }, "IamInstanceProfile":{ "shape":"XmlStringMaxLen1600", - "documentation":"

The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

\n

Amazon EC2 instances launched with an IAM role will \n automatically have AWS security credentials available. You can use IAM roles with Auto Scaling to automatically enable applications running on your Amazon EC2 instances \n to securely access other AWS resources. For information on launching EC2 instances with an IAM role, go to Launching Auto Scaling Instances With an IAM Role\n in the Auto Scaling Developer Guide.

" + "documentation":"

The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

Amazon EC2 instances launched with an IAM role will automatically have AWS security credentials available. You can use IAM roles with Auto Scaling to automatically enable applications running on your Amazon EC2 instances to securely access other AWS resources. For information on launching EC2 instances with an IAM role, go to Launching Auto Scaling Instances With an IAM Role in the Auto Scaling Developer Guide.

" }, "EbsOptimized":{ "shape":"EbsOptimized", - "documentation":"

\n Whether the instance is optimized for EBS I/O. The optimization provides \n dedicated throughput to Amazon EBS and an optimized configuration stack to provide \n optimal EBS I/O performance. This optimization is not available with all instance \n types. Additional usage charges apply when using an EBS Optimized instance. By default\n the instance is not optimized for EBS I/O. \n For information about EBS-optimized instances, go to EBS-Optimized Instances \n in the Amazon Elastic Compute Cloud User Guide.

" + "documentation":"

Whether the instance is optimized for EBS I/O. The optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization is not available with all instance types. Additional usage charges apply when using an EBS Optimized instance. By default the instance is not optimized for EBS I/O. For information about EBS-optimized instances, go to EBS-Optimized Instances in the Amazon Elastic Compute Cloud User Guide.

" }, "AssociatePublicIpAddress":{ "shape":"AssociatePublicIpAddress", - "documentation":"

Used for Auto Scaling groups that launch instances into an Amazon Virtual Private Cloud (Amazon VPC). Specifies whether to assign a public IP address to each instance launched in a Amazon VPC.

\n \n

If you specify a value for this parameter, be sure to specify at least one VPC subnet \n using the VPCZoneIdentifier parameter when you create your Auto Scaling group.

\n
\n

Default: If the instance is launched into a default subnet in a default VPC, the default is true. \n If the instance is launched into a nondefault subnet in a VPC, the default is false. \n For information about the platforms supported by Auto Scaling, see \n Get Started with Auto Scaling Using the Command Line Interface.

" + "documentation":"

Used for Auto Scaling groups that launch instances into an Amazon Virtual Private Cloud (Amazon VPC). Specifies whether to assign a public IP address to each instance launched in a Amazon VPC. For more information, see Auto Scaling in Amazon Virtual Private Cloud.

Default: If the instance is launched into a default subnet in a default VPC, the default is true. If the instance is launched into a nondefault subnet in a VPC, the default is false. For information about default VPC and VPC platforms, see Supported Platforms.

" }, "PlacementTenancy":{ "shape":"XmlStringMaxLen64", - "documentation":"

The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware and can only be launched into a VPC.

\n

For more information, see Auto Scaling in Amazon Virtual Private Cloud in the Auto Scaling Developer Guide.

\n

Valid values: default | dedicated

" + "documentation":"

The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware and can only be launched in a VPC.

You must set the value of this parameter to dedicated if want to launch Dedicated Instances in a shared tenancy VPC (VPC with instance placement tenancy attribute set to default).

If you specify a value for this parameter, be sure to specify at least one VPC subnet using the VPCZoneIdentifier parameter when you create your Auto Scaling group.

For more information, see Auto Scaling in Amazon Virtual Private Cloud in the Auto Scaling Developer Guide.

Valid values: default | dedicated

" } }, - "documentation":"

\n\n

" + "documentation":"

" }, "CreateOrUpdateTagsType":{ "type":"structure", @@ -1294,10 +1469,10 @@ "members":{ "Tags":{ "shape":"Tags", - "documentation":"

\n The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, \n and a propagate flag. The resource type and resource ID identify the type and name of resource for which the \n tag is created. Currently, auto-scaling-group is the only supported resource type. The valid \n value for the resource ID is groupname.\n

\n \n

The PropagateAtLaunch flag defines whether the new tag will be applied to instances launched by \n the Auto Scaling group. Valid values are true or false. However, instances that are already \n running will not get the new or updated tag. Likewise, when you modify a tag, the updated version will be \n applied only to new instances launched by the Auto Scaling group after the change. Running instances that had \n the previous version of the tag will continue to have the older tag. \n

\n

When you create a tag and a tag of the same name already exists, the operation overwrites the previous tag \n definition, but you will not get an error message.\n

" + "documentation":"

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. The resource type and resource ID identify the type and name of resource for which the tag is created. Currently, auto-scaling-group is the only supported resource type. The valid value for the resource ID is groupname.

The PropagateAtLaunch flag defines whether the new tag will be applied to instances launched by the Auto Scaling group. Valid values are true or false. However, instances that are already running will not get the new or updated tag. Likewise, when you modify a tag, the updated version will be applied only to new instances launched by the Auto Scaling group after the change. Running instances that had the previous version of the tag will continue to have the older tag.

When you create a tag and a tag of the same name already exists, the operation overwrites the previous tag definition, but you will not get an error message.

" } }, - "documentation":"

\n

" + "documentation":"

" }, "DeleteAutoScalingGroupType":{ "type":"structure", @@ -1305,14 +1480,37 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the Auto Scaling group to delete.\n

" + "documentation":"

The name of the Auto Scaling group to delete.

" }, "ForceDelete":{ "shape":"ForceDelete", - "documentation":"

Starting with API version 2011-01-01, specifies that the Auto Scaling group will be deleted along with all instances \n associated with the group, without waiting for all instances to be terminated. \n

" + "documentation":"

Starting with API version 2011-01-01, specifies that the Auto Scaling group will be deleted along with all instances associated with the group, without waiting for all instances to be terminated. This parameter also deletes any lifecycle actions associated with the group.

" } }, - "documentation":"

\n\n

" + "documentation":"

" + }, + "DeleteLifecycleHookAnswer":{ + "type":"structure", + "members":{ + }, + "documentation":"

The output of the DeleteLifecycleHook action.

" + }, + "DeleteLifecycleHookType":{ + "type":"structure", + "required":[ + "LifecycleHookName", + "AutoScalingGroupName" + ], + "members":{ + "LifecycleHookName":{ + "shape":"AsciiStringMaxLen255", + "documentation":"

The name of the lifecycle hook.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group to which the lifecycle hook belongs.

" + } + } }, "DeleteNotificationConfigurationType":{ "type":"structure", @@ -1368,49 +1566,49 @@ "members":{ "Tags":{ "shape":"Tags", - "documentation":"

Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. \n Valid values are: Resource type = auto-scaling-group, Resource ID = AutoScalingGroupName, \n key=value, value=value, propagate=true or false.\n

" + "documentation":"

Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. Valid values are: Resource type = auto-scaling-group, Resource ID = AutoScalingGroupName, key=value, value=value, propagate=true or false.

" } }, - "documentation":"

\n \n

" + "documentation":"

" }, "DescribeAccountLimitsAnswer":{ "type":"structure", "members":{ "MaxNumberOfAutoScalingGroups":{ "shape":"MaxNumberOfAutoScalingGroups", - "documentation":"

\n The maximum number of Auto Scaling groups allowed for your AWS account.\n

" + "documentation":"

The maximum number of Auto Scaling groups allowed for your AWS account.

" }, "MaxNumberOfLaunchConfigurations":{ "shape":"MaxNumberOfLaunchConfigurations", - "documentation":"

\n The maximum number of launch configurations allowed for your AWS account.\n

" + "documentation":"

The maximum number of launch configurations allowed for your AWS account.

" } }, - "documentation":"

\n The output of the DescribeAccountLimitsResult action.\n

" + "documentation":"

The output of the DescribeAccountLimitsResult action.

" }, "DescribeAdjustmentTypesAnswer":{ "type":"structure", "members":{ "AdjustmentTypes":{ "shape":"AdjustmentTypes", - "documentation":"

\n A list of specific policy adjustment types.\n

" + "documentation":"

A list of specific policy adjustment types.

" } }, - "documentation":"

\n The output of the DescribeAdjustmentTypes action.\n

" + "documentation":"

The output of the DescribeAdjustmentTypes action.

" }, "DescribeAutoScalingInstancesType":{ "type":"structure", "members":{ "InstanceIds":{ "shape":"InstanceIds", - "documentation":"

\n The list of Auto Scaling instances to describe. \n If this list is omitted, all auto scaling instances are described. \n The list of requested instances cannot contain more than\n 50 items. If unknown instances are requested,\n they are ignored with no error.\n

" + "documentation":"

The list of Auto Scaling instances to describe. If this list is omitted, all auto scaling instances are described. The list of requested instances cannot contain more than 50 items. If unknown instances are requested, they are ignored with no error.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n The maximum number of Auto Scaling instances to be described\n with each call.\n

" + "documentation":"

The maximum number of Auto Scaling instances to be described with each call.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n The token returned by a previous call \n to indicate that there is more data available.\n

" + "documentation":"

The token returned by a previous call to indicate that there is more data available.

" } } }, @@ -1419,17 +1617,50 @@ "members":{ "AutoScalingNotificationTypes":{ "shape":"AutoScalingNotificationTypes", - "documentation":"

Returns a list of all notification types supported by Auto Scaling. They are:

\n
    \n
  • autoscaling:EC2_INSTANCE_LAUNCH

  • \n
  • autoscaling:EC2_INSTANCE_LAUNCH_ERROR

  • \n
  • autoscaling:EC2_INSTANCE_TERMINATE

  • \n
  • autoscaling:EC2_INSTANCE_TERMINATE_ERROR

  • \n
  • autoscaling:TEST_NOTIFICATION

  • \n
\n \n https://autoscaling.amazonaws.com/?Version=2011-01-01&Action=DescribeAutoScalingNotificationTypes\n&AUTHPARAMS \n \n \n \n autoscaling:EC2_INSTANCE_LAUNCH\n autoscaling:EC2_INSTANCE_LAUNCH_ERROR\n autoscaling:EC2_INSTANCE_TERMINATE\n autoscaling:EC2_INSTANCE_TERMINATE_ERROR\n autoscaling:TEST_NOTIFICATION\n \n \n \n 42fc6794-bf21-11e2-a1cf-ff3dEXAMPLE\n \n\n " + "documentation":"

Returns a list of all notification types supported by Auto Scaling. They are:

  • autoscaling:EC2_INSTANCE_LAUNCH

  • autoscaling:EC2_INSTANCE_LAUNCH_ERROR

  • autoscaling:EC2_INSTANCE_TERMINATE

  • autoscaling:EC2_INSTANCE_TERMINATE_ERROR

  • autoscaling:TEST_NOTIFICATION

" } }, "documentation":"

The AutoScalingNotificationTypes data type.

" }, + "DescribeLifecycleHookTypesAnswer":{ + "type":"structure", + "members":{ + "LifecycleHookTypes":{ + "shape":"AutoScalingNotificationTypes", + "documentation":"

Returns a list of all notification types supported by Auto Scaling. They are:

  • autoscaling:EC2_INSTANCE_LAUNCHING

  • autoscaling:EC2_INSTANCE_TERMINATING

" + } + } + }, + "DescribeLifecycleHooksAnswer":{ + "type":"structure", + "members":{ + "LifecycleHooks":{ + "shape":"LifecycleHooks", + "documentation":"

A list describing the lifecycle hooks that belong to the specified Auto Scaling group.

" + } + }, + "documentation":"

The output of the DescribeLifecycleHooks action.

" + }, + "DescribeLifecycleHooksType":{ + "type":"structure", + "required":["AutoScalingGroupName"], + "members":{ + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of one or more Auto Scaling groups.

" + }, + "LifecycleHookNames":{ + "shape":"LifecycleHookNames", + "documentation":"

The name of one or more lifecycle hooks.

" + } + } + }, "DescribeMetricCollectionTypesAnswer":{ "type":"structure", "members":{ "Metrics":{ "shape":"MetricCollectionTypes", - "documentation":"

The list of Metrics collected. The following metrics are supported:\n

\n
    \n
  • GroupMinSize

  • \n
  • GroupMaxSize

  • \n
  • GroupDesiredCapacity

  • \n
  • GroupInServiceInstances

  • \n
  • GroupPendingInstances

  • \n
  • GroupTerminatingInstances

  • \n
  • GroupTotalInstances

  • \n
" + "documentation":"

The list of Metrics collected. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupStandbyInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

" }, "Granularities":{ "shape":"MetricGranularityTypes", @@ -1448,7 +1679,7 @@ }, "NextToken":{ "shape":"XmlString", - "documentation":"

A string that is used to mark the start of the next\n batch of returned results for pagination.

" + "documentation":"

A string that is used to mark the start of the next batch of returned results for pagination.

" } }, "documentation":"

The output of the DescribeNotificationConfigurations action.

" @@ -1458,15 +1689,15 @@ "members":{ "AutoScalingGroupNames":{ "shape":"AutoScalingGroupNames", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that is used to mark the start of the next\n batch of returned results for pagination.\n

" + "documentation":"

A string that is used to mark the start of the next batch of returned results for pagination.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

Maximum number of records to be returned.\n

" + "documentation":"

Maximum number of records to be returned.

" } } }, @@ -1475,19 +1706,19 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "PolicyNames":{ "shape":"PolicyNames", - "documentation":"

\n A list of policy names or policy ARNs to be\n described. If this list is omitted, all policy names\n are described. If an auto scaling group name is\n provided, the results are limited to that group. The\n list of requested policy names cannot contain more\n than 50 items. If unknown policy names are\n requested, they are ignored with no error.\n

" + "documentation":"

A list of policy names or policy ARNs to be described. If this list is omitted, all policy names are described. If an auto scaling group name is provided, the results are limited to that group. The list of requested policy names cannot contain more than 50 items. If unknown policy names are requested, they are ignored with no error.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that is used to mark the start of the next\n batch of returned results for pagination.\n

" + "documentation":"

A string that is used to mark the start of the next batch of returned results for pagination.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n The maximum number of policies that will be described\n with each call.\n

" + "documentation":"

The maximum number of policies that will be described with each call.

" } } }, @@ -1496,49 +1727,49 @@ "members":{ "ActivityIds":{ "shape":"ActivityIds", - "documentation":"

\n A list containing the activity IDs of the desired scaling activities.\n If this list is omitted, all activities are described. \n If an AutoScalingGroupName is provided, the results\n are limited to that group. The list of requested\n activities cannot contain more than 50 items. If\n unknown activities are requested, they are ignored\n with no error.\n

" + "documentation":"

A list containing the activity IDs of the desired scaling activities. If this list is omitted, all activities are described. If an AutoScalingGroupName is provided, the results are limited to that group. The list of requested activities cannot contain more than 50 items. If unknown activities are requested, they are ignored with no error.

" }, "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the AutoScalingGroup.\n

" + "documentation":"

The name of the AutoScalingGroup.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n The maximum number of scaling activities to return.\n

" + "documentation":"

The maximum number of scaling activities to return.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results for pagination.\n

" + "documentation":"

A string that marks the start of the next batch of returned results for pagination.

" } }, - "documentation":"

\n\n

" + "documentation":"

" }, "DescribeScheduledActionsType":{ "type":"structure", "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "ScheduledActionNames":{ "shape":"ScheduledActionNames", - "documentation":"

\n A list of scheduled actions to be described. If this\n list is omitted, all scheduled actions are described.\n The list of requested scheduled actions cannot\n contain more than 50 items. If an auto scaling\n group name is provided, the results are limited to\n that group. If unknown scheduled actions are\n requested, they are ignored with no error.\n

" + "documentation":"

A list of scheduled actions to be described. If this list is omitted, all scheduled actions are described. The list of requested scheduled actions cannot contain more than 50 items. If an auto scaling group name is provided, the results are limited to that group. If unknown scheduled actions are requested, they are ignored with no error.

" }, "StartTime":{ "shape":"TimestampType", - "documentation":"

\n The earliest scheduled start time to return. If scheduled\n action names are provided, this field will be ignored.\n

" + "documentation":"

The earliest scheduled start time to return. If scheduled action names are provided, this field will be ignored.

" }, "EndTime":{ "shape":"TimestampType", - "documentation":"

\n The latest scheduled start time to return. If scheduled\n action names are provided, this field is ignored.\n

" + "documentation":"

The latest scheduled start time to return. If scheduled action names are provided, this field is ignored.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results.\n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n The maximum number of scheduled actions to return.\n

" + "documentation":"

The maximum number of scheduled actions to return.

" } } }, @@ -1547,29 +1778,60 @@ "members":{ "Filters":{ "shape":"Filters", - "documentation":"

\n The value of the filter type used to identify the tags \n to be returned. For example, you can filter so that tags are returned \n according to Auto Scaling group, the key and value, or whether \n the new tag will be applied to instances launched after the \n tag is created (PropagateAtLaunch). \n

" + "documentation":"

The value of the filter type used to identify the tags to be returned. For example, you can filter so that tags are returned according to Auto Scaling group, the key and value, or whether the new tag will be applied to instances launched after the tag is created (PropagateAtLaunch).

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch \n of returned results.\n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n The maximum number of records to return.\n

" + "documentation":"

The maximum number of records to return.

" } }, - "documentation":"

\n

" + "documentation":"

" }, "DescribeTerminationPolicyTypesAnswer":{ "type":"structure", "members":{ "TerminationPolicyTypes":{ "shape":"TerminationPolicies", - "documentation":"

\n Termination policies supported by Auto Scaling. They are:\n OldestInstance, OldestLaunchConfiguration, NewestInstance, ClosestToNextInstanceHour, \n Default\n

" + "documentation":"

Termination policies supported by Auto Scaling. They are: OldestInstance, OldestLaunchConfiguration, NewestInstance, ClosestToNextInstanceHour, Default

" } }, "documentation":"

The TerminationPolicyTypes data type.

" }, + "DetachInstancesAnswer":{ + "type":"structure", + "members":{ + "Activities":{ + "shape":"Activities", + "documentation":"

A list describing the activities related to detaching the instances from the Auto Scaling group.

" + } + }, + "documentation":"

The output of the DetachInstances action.

" + }, + "DetachInstancesQuery":{ + "type":"structure", + "required":[ + "AutoScalingGroupName", + "ShouldDecrementDesiredCapacity" + ], + "members":{ + "InstanceIds":{ + "shape":"InstanceIds", + "documentation":"

A list of instances to detach from the Auto Scaling group. You must specify at least one instance ID.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group from which to detach instances.

" + }, + "ShouldDecrementDesiredCapacity":{ + "shape":"ShouldDecrementDesiredCapacity", + "documentation":"

Specifies if the detached instance should decrement the desired capacity value for the Auto Scaling group. If set to True, the Auto Scaling group decrements the desired capacity value by the number of instances detached.

" + } + } + }, "DisableMetricsCollectionQuery":{ "type":"structure", "required":["AutoScalingGroupName"], @@ -1580,7 +1842,7 @@ }, "Metrics":{ "shape":"Metrics", - "documentation":"

\n The list of metrics to disable.\n If no metrics are specified, all metrics are disabled.\n The following metrics are supported:\n

\n
    \n
  • GroupMinSize

  • \n
  • GroupMaxSize

  • \n
  • GroupDesiredCapacity

  • \n
  • GroupInServiceInstances

  • \n
  • GroupPendingInstances

  • \n
  • GroupTerminatingInstances

  • \n
  • GroupTotalInstances

  • \n
" + "documentation":"

The list of metrics to disable. If no metrics are specified, all metrics are disabled. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupStandbyInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

" } } }, @@ -1589,23 +1851,23 @@ "members":{ "SnapshotId":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The snapshot ID.\n

" + "documentation":"

The snapshot ID.

" }, "VolumeSize":{ "shape":"BlockDeviceEbsVolumeSize", - "documentation":"

The volume size, in gigabytes.

\n

Valid values: If the volume type is io1, the minimum size of the volume is 10.

\n

Default: If you're creating the volume from a snapshot, and you don't specify a volume size, the default is the snapshot size.

\n

Required: Required when the volume type is io1.

" + "documentation":"

The volume size, in gigabytes.

Valid values: If the volume type is io1, the minimum size of the volume is 10.

Default: If you're creating the volume from a snapshot, and you don't specify a volume size, the default is the snapshot size.

Required: Required when the volume type is io1.

" }, "VolumeType":{ "shape":"BlockDeviceEbsVolumeType", - "documentation":"

The volume type.

\n

Valid values: standard | io1

\n

Default: standard

" + "documentation":"

The volume type.

Valid values: standard | io1

Default: standard

" }, "DeleteOnTermination":{ "shape":"BlockDeviceEbsDeleteOnTermination", - "documentation":"

Indicates whether to delete the volume on instance termination.

\n

Default: true

" + "documentation":"

Indicates whether to delete the volume on instance termination.

Default: true

" }, "Iops":{ "shape":"BlockDeviceEbsIops", - "documentation":"

The number of I/O operations per second (IOPS) that the volume supports.

\n

The maximum ratio of IOPS to volume size is 30.0

\n

Valid Values: Range is 100 to 4000.

\n

Default: None.

" + "documentation":"

The number of I/O operations per second (IOPS) that the volume supports.

The maximum ratio of IOPS to volume size is 30.0

Valid Values: Range is 100 to 4000.

Default: None.

" } }, "documentation":"

The Ebs data type.

" @@ -1624,11 +1886,11 @@ }, "Metrics":{ "shape":"Metrics", - "documentation":"

\n The list of metrics to collect.\n If no metrics are specified, all metrics are enabled.\n The following metrics are supported:\n

\n
    \n
  • GroupMinSize

  • \n
  • GroupMaxSize

  • \n
  • GroupDesiredCapacity

  • \n
  • GroupInServiceInstances

  • \n
  • GroupPendingInstances

  • \n
  • GroupTerminatingInstances

  • \n
  • GroupTotalInstances

  • \n
" + "documentation":"

The list of metrics to collect. If no metrics are specified, all metrics are enabled. The following metrics are supported:

  • GroupMinSize

  • GroupMaxSize

  • GroupDesiredCapacity

  • GroupInServiceInstances

  • GroupPendingInstances

  • GroupStandbyInstances

  • GroupTerminatingInstances

  • GroupTotalInstances

" }, "Granularity":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The granularity to associate with the metrics to collect.\n Currently, the only legal granularity is \"1Minute\".\n

" + "documentation":"

The granularity to associate with the metrics to collect. Currently, the only legal granularity is \"1Minute\".

" } } }, @@ -1637,34 +1899,89 @@ "members":{ "Metric":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the enabled metric.\n

" + "documentation":"

The name of the enabled metric.

" }, "Granularity":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The granularity of the enabled metric. \n

" + "documentation":"

The granularity of the enabled metric.

" } }, - "documentation":"

\n The EnabledMetric data type.\n

" + "documentation":"

The EnabledMetric data type.

" }, "EnabledMetrics":{ "type":"list", "member":{"shape":"EnabledMetric"} }, + "EnterStandbyAnswer":{ + "type":"structure", + "members":{ + "Activities":{ + "shape":"Activities", + "documentation":"

A list describing the activities related to moving instances into Standby mode.

" + } + }, + "documentation":"

The output of the EnterStandby action.

" + }, + "EnterStandbyQuery":{ + "type":"structure", + "required":[ + "AutoScalingGroupName", + "ShouldDecrementDesiredCapacity" + ], + "members":{ + "InstanceIds":{ + "shape":"InstanceIds", + "documentation":"

The instances to move into Standby mode. You must specify at least one instance ID.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group from which to move instances into Standby mode.

" + }, + "ShouldDecrementDesiredCapacity":{ + "shape":"ShouldDecrementDesiredCapacity", + "documentation":"

Specifies whether the instances moved to Standby mode count as part of the Auto Scaling group's desired capacity. If set, the desired capacity for the Auto Scaling group decrements by the number of instances moved to Standby mode.

" + } + } + }, "ExecutePolicyType":{ "type":"structure", "required":["PolicyName"], "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name or the Amazon Resource Name (ARN) of the Auto Scaling group.\n

" + "documentation":"

The name or the Amazon Resource Name (ARN) of the Auto Scaling group.

" }, "PolicyName":{ "shape":"ResourceName", - "documentation":"

\n The name or ARN of the policy you want to run.\n

" + "documentation":"

The name or ARN of the policy you want to run.

" }, "HonorCooldown":{ "shape":"HonorCooldown", - "documentation":"

Set to True if you want Auto Scaling to wait \n for the cooldown period associated with the Auto Scaling group \n to complete before executing the policy.

\n

Set to False if you want Auto Scaling to \n circumvent the cooldown period associated with the \n Auto Scaling group and execute the policy before the \n cooldown period ends. \n

\n

For information about cooldown period, see Cooldown Period \n in the Auto Scaling Developer Guide.

" + "documentation":"

Set to True if you want Auto Scaling to wait for the cooldown period associated with the Auto Scaling group to complete before executing the policy.

Set to False if you want Auto Scaling to circumvent the cooldown period associated with the Auto Scaling group and execute the policy before the cooldown period ends.

For information about cooldown period, see Cooldown Period in the Auto Scaling Developer Guide.

" + } + } + }, + "ExitStandbyAnswer":{ + "type":"structure", + "members":{ + "Activities":{ + "shape":"Activities", + "documentation":"

A list describing the activities related to moving instances out of Standby mode.

" + } + }, + "documentation":"

The output of the ExitStandby action.

" + }, + "ExitStandbyQuery":{ + "type":"structure", + "required":["AutoScalingGroupName"], + "members":{ + "InstanceIds":{ + "shape":"InstanceIds", + "documentation":"

A list of instances to move out of Standby mode. You must specify at least one instance ID.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group from which to move instances out of Standby mode.

" } } }, @@ -1673,11 +1990,11 @@ "members":{ "Name":{ "shape":"XmlString", - "documentation":"

\n The name of the filter. Valid Name values are: \n \"auto-scaling-group\", \"key\", \"value\", and \"propagate-at-launch\".\n

" + "documentation":"

The name of the filter. Valid Name values are: \"auto-scaling-group\", \"key\", \"value\", and \"propagate-at-launch\".

" }, "Values":{ "shape":"Values", - "documentation":"

\n The value of the filter.\n

" + "documentation":"

The value of the filter.

" } }, "documentation":"

The Filter data type.

" @@ -1687,7 +2004,9 @@ "member":{"shape":"Filter"} }, "ForceDelete":{"type":"boolean"}, + "GlobalTimeout":{"type":"integer"}, "HealthCheckGracePeriod":{"type":"integer"}, + "HeartbeatTimeout":{"type":"integer"}, "HonorCooldown":{"type":"boolean"}, "Instance":{ "type":"structure", @@ -1701,26 +2020,26 @@ "members":{ "InstanceId":{ "shape":"XmlStringMaxLen16", - "documentation":"

\n Specifies the ID of the Amazon EC2 instance.\n

" + "documentation":"

Specifies the ID of the Amazon EC2 instance.

" }, "AvailabilityZone":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Availability Zones associated with this instance.\n

" + "documentation":"

Availability Zones associated with this instance.

" }, "LifecycleState":{ "shape":"LifecycleState", - "documentation":"

\n Contains a description of the current lifecycle state. \n

\n \n

The Quarantined lifecycle state is currently not used.

\n
" + "documentation":"

Contains a description of the current lifecycle state.

" }, "HealthStatus":{ "shape":"XmlStringMaxLen32", - "documentation":"

\n The instance's health status.\n

" + "documentation":"

The instance's health status.

" }, "LaunchConfigurationName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The launch configuration associated with this instance.\n

" + "documentation":"

The launch configuration associated with this instance.

" } }, - "documentation":"

\n The Instance data type.\n

" + "documentation":"

The Instance data type.

" }, "InstanceIds":{ "type":"list", @@ -1731,10 +2050,10 @@ "members":{ "Enabled":{ "shape":"MonitoringEnabled", - "documentation":"

\n If True, instance monitoring is enabled.\n

" + "documentation":"

If True, instance monitoring is enabled.

" } }, - "documentation":"

\n The InstanceMonitoring data type.\n

" + "documentation":"

The InstanceMonitoring data type.

" }, "Instances":{ "type":"list", @@ -1745,7 +2064,7 @@ "members":{ "message":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n\n

" + "documentation":"

" } }, "error":{ @@ -1754,7 +2073,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The NextToken value is invalid.\n

" + "documentation":"

The NextToken value is invalid.

" }, "LaunchConfiguration":{ "type":"structure", @@ -1767,47 +2086,47 @@ "members":{ "LaunchConfigurationName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Specifies the name of the launch configuration.\n

" + "documentation":"

Specifies the name of the launch configuration.

" }, "LaunchConfigurationARN":{ "shape":"ResourceName", - "documentation":"

\n The launch configuration's Amazon Resource Name (ARN).\n

" + "documentation":"

The launch configuration's Amazon Resource Name (ARN).

" }, "ImageId":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Provides the unique ID of the Amazon Machine Image (AMI)\n that was assigned during registration.\n

" + "documentation":"

Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.

" }, "KeyName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Provides the name of the Amazon EC2 key pair.\n

" + "documentation":"

Provides the name of the Amazon EC2 key pair.

" }, "SecurityGroups":{ "shape":"SecurityGroups", - "documentation":"

\n A description of the security\n groups to associate with the Amazon EC2 instances.\n

" + "documentation":"

A description of the security groups to associate with the Amazon EC2 instances.

" }, "UserData":{ "shape":"XmlStringUserData", - "documentation":"

\n The user data available to the launched Amazon EC2 instances.\n

" + "documentation":"

The user data available to the launched Amazon EC2 instances.

" }, "InstanceType":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Specifies the instance type of the Amazon EC2 instance.\n

" + "documentation":"

Specifies the instance type of the Amazon EC2 instance.

" }, "KernelId":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Provides the ID of the kernel associated with the Amazon EC2 AMI.\n

" + "documentation":"

Provides the ID of the kernel associated with the Amazon EC2 AMI.

" }, "RamdiskId":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Provides ID of the RAM disk associated with the Amazon EC2 AMI.\n

" + "documentation":"

Provides ID of the RAM disk associated with the Amazon EC2 AMI.

" }, "BlockDeviceMappings":{ "shape":"BlockDeviceMappings", - "documentation":"

\n Specifies how block devices are exposed to the instance.\n Each mapping is made up of a virtualName and a deviceName.\n

" + "documentation":"

Specifies how block devices are exposed to the instance. Each mapping is made up of a virtualName and a deviceName.

" }, "InstanceMonitoring":{ "shape":"InstanceMonitoring", - "documentation":"

\n Controls whether instances in this group are launched with\n detailed monitoring or not. \n

" + "documentation":"

Controls whether instances in this group are launched with detailed monitoring or not.

" }, "SpotPrice":{ "shape":"SpotPrice", @@ -1815,11 +2134,11 @@ }, "IamInstanceProfile":{ "shape":"XmlStringMaxLen1600", - "documentation":"

Provides the name or the Amazon Resource Name (ARN) of the \n instance profile associated with the IAM role for the instance. \n The instance profile contains the IAM role.\n

" + "documentation":"

Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.

" }, "CreatedTime":{ "shape":"TimestampType", - "documentation":"

\n Provides the creation date and time for this launch configuration.\n

" + "documentation":"

Provides the creation date and time for this launch configuration.

" }, "EbsOptimized":{ "shape":"EbsOptimized", @@ -1831,10 +2150,10 @@ }, "PlacementTenancy":{ "shape":"XmlStringMaxLen64", - "documentation":"

Specifies the tenancy of the instance. It can be either default or dedicated. \n An instance with dedicated tenancy runs in an isolated, single-tenant hardware and it can only be launched in a VPC.

" + "documentation":"

Specifies the tenancy of the instance. It can be either default or dedicated. An instance with dedicated tenancy runs in an isolated, single-tenant hardware and it can only be launched in a VPC.

" } }, - "documentation":"

\n The LaunchConfiguration data type.\n

" + "documentation":"

The LaunchConfiguration data type.

" }, "LaunchConfigurationNameType":{ "type":"structure", @@ -1842,10 +2161,10 @@ "members":{ "LaunchConfigurationName":{ "shape":"ResourceName", - "documentation":"

\n The name of the launch configuration.\n

" + "documentation":"

The name of the launch configuration.

" } }, - "documentation":"

\n\n

" + "documentation":"

" }, "LaunchConfigurationNames":{ "type":"list", @@ -1856,18 +2175,18 @@ "members":{ "LaunchConfigurationNames":{ "shape":"LaunchConfigurationNames", - "documentation":"

\n A list of launch configuration names.\n

" + "documentation":"

A list of launch configuration names.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results. \n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n The maximum number of launch configurations. The default is 100.\n

" + "documentation":"

The maximum number of launch configurations. The default is 100.

" } }, - "documentation":"

\n The LaunchConfigurationNamesType data type.\n

" + "documentation":"

The LaunchConfigurationNamesType data type.

" }, "LaunchConfigurations":{ "type":"list", @@ -1879,31 +2198,96 @@ "members":{ "LaunchConfigurations":{ "shape":"LaunchConfigurations", - "documentation":"

\n A list of launch configurations.\n

" + "documentation":"

A list of launch configurations.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results. \n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" + } + }, + "documentation":"

The LaunchConfigurationsType data type.

" + }, + "LifecycleActionResult":{"type":"string"}, + "LifecycleActionToken":{ + "type":"string", + "min":36, + "max":36 + }, + "LifecycleHook":{ + "type":"structure", + "members":{ + "LifecycleHookName":{ + "shape":"AsciiStringMaxLen255", + "documentation":"

The name of the lifecycle action hook.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group to which the lifecycle action belongs.

" + }, + "LifecycleTransition":{ + "shape":"LifecycleTransition", + "documentation":"

The Amazon EC2 instance state to which you want to attach the lifecycle hook. See DescribeLifecycleHooks for a list of available lifecycle hook types.

" + }, + "NotificationTargetARN":{ + "shape":"ResourceName", + "documentation":"

The ARN of the notification target that Auto Scaling will use to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic. The notification message sent to the target will include:

  • Lifecycle action token
  • User account ID
  • Name of the Auto Scaling group
  • Lifecycle hook name
  • EC2 instance ID
  • Lifecycle transition
  • Notification metadata
" + }, + "RoleARN":{ + "shape":"ResourceName", + "documentation":"

The ARN of the Amazon IAM role that allows the Auto Scaling group to publish to the specified notification target.

" + }, + "NotificationMetadata":{ + "shape":"XmlStringMaxLen1023", + "documentation":"

Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.

" + }, + "HeartbeatTimeout":{ + "shape":"HeartbeatTimeout", + "documentation":"

Defines the amount of time that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat.

" + }, + "GlobalTimeout":{ + "shape":"GlobalTimeout", + "documentation":"

The maximum length of time an instance can remain in a Pending:Wait or Terminating:Wait state. Currently, this value is set at 48 hours.

" + }, + "DefaultResult":{ + "shape":"LifecycleActionResult", + "documentation":"

Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The value for this parameter can be either CONTINUE or ABANDON. The default value for this parameter is CONTINUE.

" } }, - "documentation":"

\n The LaunchConfigurationsType data type.\n

" + "documentation":"

A lifecycle hook tells Auto Scaling that you want to perform an action when an instance launches or terminates. When you have a lifecycle hook in place, the Auto Scaling group will either:

  • Pause the instance after it launches, but before it is put into service
  • Pause the instance as it terminates, but before it is fully terminated

To learn more, see Auto Scaling Pending State and Auto Scaling Terminating State.

" + }, + "LifecycleHookNames":{ + "type":"list", + "member":{"shape":"AsciiStringMaxLen255"} + }, + "LifecycleHooks":{ + "type":"list", + "member":{"shape":"LifecycleHook"} }, "LifecycleState":{ "type":"string", "enum":[ "Pending", + "Pending:Wait", + "Pending:Proceed", "Quarantined", "InService", "Terminating", - "Terminated" + "Terminating:Wait", + "Terminating:Proceed", + "Terminated", + "Detaching", + "Detached", + "EnteringStandby", + "Standby" ] }, + "LifecycleTransition":{"type":"string"}, "LimitExceededFault":{ "type":"structure", "members":{ "message":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n\n

" + "documentation":"

" } }, "error":{ @@ -1912,7 +2296,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n The quota for capacity groups or launch configurations\n for this customer has already been reached.\n

" + "documentation":"

The quota for capacity groups or launch configurations for this customer has already been reached.

" }, "LoadBalancerNames":{ "type":"list", @@ -1926,7 +2310,7 @@ "members":{ "Metric":{"shape":"XmlStringMaxLen255"} }, - "documentation":"

\n The MetricCollectionType data type.\n

" + "documentation":"

The MetricCollectionType data type.

" }, "MetricCollectionTypes":{ "type":"list", @@ -1937,10 +2321,10 @@ "members":{ "Granularity":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The granularity of a Metric.\n

" + "documentation":"

The granularity of a Metric.

" } }, - "documentation":"

\n The MetricGranularityType data type.\n

" + "documentation":"

The MetricGranularityType data type.

" }, "MetricGranularityTypes":{ "type":"list", @@ -1958,18 +2342,18 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n Specifies the Auto Scaling group name.\n

" + "documentation":"

Specifies the Auto Scaling group name.

" }, "TopicARN":{ "shape":"ResourceName", - "documentation":"

\n The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.\n

" + "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.

" }, "NotificationType":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The types of events for an action to start.\n

" + "documentation":"

The types of events for an action to start.

" } }, - "documentation":"

\n The NotificationConfiguration data type.\n

" + "documentation":"

The NotificationConfiguration data type.

" }, "NotificationConfigurations":{ "type":"list", @@ -1980,24 +2364,24 @@ "members":{ "ScalingPolicies":{ "shape":"ScalingPolicies", - "documentation":"

\n A list of scaling policies.\n

" + "documentation":"

A list of scaling policies.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results. \n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" } }, - "documentation":"

\n The PoliciesType data type.\n

" + "documentation":"

The PoliciesType data type.

" }, "PolicyARNType":{ "type":"structure", "members":{ "PolicyARN":{ "shape":"ResourceName", - "documentation":"

\n A policy's Amazon Resource Name (ARN).\n

" + "documentation":"

A policy's Amazon Resource Name (ARN).

" } }, - "documentation":"

\n The PolicyARNType data type.\n

" + "documentation":"

The PolicyARNType data type.

" }, "PolicyIncrement":{"type":"integer"}, "PolicyNames":{ @@ -2014,10 +2398,10 @@ "members":{ "ProcessName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of a process.\n

" + "documentation":"

The name of a process.

" } }, - "documentation":"

\n There are two primary Auto Scaling process types--Launch\n and Terminate. The Launch process creates a new\n Amazon EC2 instance for an Auto Scaling group, and the Terminate\n process removes an existing Amazon EC2 instance.\n

\n

\n The remaining Auto Scaling process types relate to specific Auto Scaling features:\n

    \n
  • AddToLoadBalancer
  • \n
  • AlarmNotification
  • \n
  • AZRebalance
  • \n
  • HealthCheck
  • \n
  • ReplaceUnhealthy
  • \n
  • ScheduledActions
  • \n
\n

\n \n

\n If you suspend Launch or Terminate,\n all other process types are affected to varying degrees.\n The following descriptions discuss how each process type\n is affected by a suspension of Launch or\n Terminate.\n

\n
\n

\n The AddToLoadBalancer process type adds instances to the load balancer \n when the instances are launched. If you suspend this process, Auto Scaling will launch \n the instances but will not add them to the load balancer. If you resume the \n AddToLoadBalancer process, Auto Scaling will also resume adding new instances to the load \n balancer when they are launched. However, Auto Scaling will not add running instances that\n were launched while the process was suspended; those instances must be added manually using the \n the \n RegisterInstancesWithLoadBalancer call in the Elastic Load Balancing API Reference.\n

\n

\n The AlarmNotification process type accepts notifications from\n Amazon CloudWatch alarms that are associated with the Auto Scaling group. If you\n suspend the AlarmNotification process type, Auto Scaling will not\n automatically execute scaling policies that would be triggered by alarms.\n

\n

\n Although the AlarmNotification process type is not directly\n affected by a suspension of Launch or Terminate,\n alarm notifications are often used to signal that a change in the size\n of the Auto Scaling group is warranted. If you suspend Launch\n or Terminate, Auto Scaling might not be able to implement the alarm's\n associated policy.\n

\n

\n The AZRebalance process type seeks to maintain a balanced number of \n instances across Availability Zones within a Region. If you remove an Availability\n Zone from your Auto Scaling group or an Availability Zone otherwise\n becomes unhealthy or unavailable, Auto Scaling launches new instances in an \n unaffected Availability Zone before terminating the unhealthy or unavailable instances. \n When the unhealthy Availability Zone returns to a healthy state, Auto Scaling automatically\n redistributes the application instances evenly across all of the designated Availability Zones.\n

\n \n

\n If you call SuspendProcesses on the launch process type, the AZRebalance\n process will neither launch new instances nor terminate existing instances. \n This is because the AZRebalance process terminates existing instances only\n after launching the replacement instances. \n

\n

\n If you call SuspendProcesses on the terminate process type, the AZRebalance\n process can cause your Auto Scaling group to grow up to ten percent larger than\n the maximum size. This is because Auto Scaling allows groups to temporarily grow\n larger than the maximum size during rebalancing activities.\n If Auto Scaling cannot terminate instances, your Auto Scaling group could remain\n up to ten percent larger than the maximum size until you resume the terminate\n process type.\n

\n
\n

\n The HealthCheck process type checks the health of the instances.\n Auto Scaling marks an instance as unhealthy if Amazon EC2 or Elastic Load Balancing \n informs Auto Scaling that the instance is unhealthy. The HealthCheck\n process can override the health status of an instance that you set with SetInstanceHealth.\n

\n

\n The ReplaceUnhealthy process type terminates instances that are marked\n as unhealthy and subsequently creates new instances to replace them. This process\n calls both of the primary process types--first Terminate and\n then Launch. \n

\n \n

\n The HealthCheck process type works in conjunction with the \n ReplaceUnhealthly process type to provide health check functionality.\n If you suspend either Launch or Terminate, the\n ReplaceUnhealthy process type will not function properly.\n

\n
\n

\n The ScheduledActions process type performs scheduled actions that you\n create with PutScheduledUpdateGroupAction. Scheduled actions often involve\n launching new instances or terminating existing instances. If you suspend either \n Launch or Terminate, your scheduled actions might not\n function as expected.\n

" + "documentation":"

There are two primary Auto Scaling process types--Launch and Terminate. The Launch process creates a new Amazon EC2 instance for an Auto Scaling group, and the Terminate process removes an existing Amazon EC2 instance.

The remaining Auto Scaling process types relate to specific Auto Scaling features:

  • AddToLoadBalancer
  • AlarmNotification
  • AZRebalance
  • HealthCheck
  • ReplaceUnhealthy
  • ScheduledActions

If you suspend Launch or Terminate, all other process types are affected to varying degrees. The following descriptions discuss how each process type is affected by a suspension of Launch or Terminate.

The AddToLoadBalancer process type adds instances to the load balancer when the instances are launched. If you suspend this process, Auto Scaling will launch the instances but will not add them to the load balancer. If you resume the AddToLoadBalancer process, Auto Scaling will also resume adding new instances to the load balancer when they are launched. However, Auto Scaling will not add running instances that were launched while the process was suspended; those instances must be added manually using the the RegisterInstancesWithLoadBalancer call in the Elastic Load Balancing API Reference.

The AlarmNotification process type accepts notifications from Amazon CloudWatch alarms that are associated with the Auto Scaling group. If you suspend the AlarmNotification process type, Auto Scaling will not automatically execute scaling policies that would be triggered by alarms.

Although the AlarmNotification process type is not directly affected by a suspension of Launch or Terminate, alarm notifications are often used to signal that a change in the size of the Auto Scaling group is warranted. If you suspend Launch or Terminate, Auto Scaling might not be able to implement the alarm's associated policy.

The AZRebalance process type seeks to maintain a balanced number of instances across Availability Zones within a Region. If you remove an Availability Zone from your Auto Scaling group or an Availability Zone otherwise becomes unhealthy or unavailable, Auto Scaling launches new instances in an unaffected Availability Zone before terminating the unhealthy or unavailable instances. When the unhealthy Availability Zone returns to a healthy state, Auto Scaling automatically redistributes the application instances evenly across all of the designated Availability Zones.

If you call SuspendProcesses on the launch process type, the AZRebalance process will neither launch new instances nor terminate existing instances. This is because the AZRebalance process terminates existing instances only after launching the replacement instances.

If you call SuspendProcesses on the terminate process type, the AZRebalance process can cause your Auto Scaling group to grow up to ten percent larger than the maximum size. This is because Auto Scaling allows groups to temporarily grow larger than the maximum size during rebalancing activities. If Auto Scaling cannot terminate instances, your Auto Scaling group could remain up to ten percent larger than the maximum size until you resume the terminate process type.

The HealthCheck process type checks the health of the instances. Auto Scaling marks an instance as unhealthy if Amazon EC2 or Elastic Load Balancing informs Auto Scaling that the instance is unhealthy. The HealthCheck process can override the health status of an instance that you set with SetInstanceHealth.

The ReplaceUnhealthy process type terminates instances that are marked as unhealthy and subsequently creates new instances to replace them. This process calls both of the primary process types--first Terminate and then Launch.

The HealthCheck process type works in conjunction with the ReplaceUnhealthly process type to provide health check functionality. If you suspend either Launch or Terminate, the ReplaceUnhealthy process type will not function properly.

The ScheduledActions process type performs scheduled actions that you create with PutScheduledUpdateGroupAction. Scheduled actions often involve launching new instances or terminating existing instances. If you suspend either Launch or Terminate, your scheduled actions might not function as expected.

" }, "Processes":{ "type":"list", @@ -2028,13 +2412,60 @@ "members":{ "Processes":{ "shape":"Processes", - "documentation":"

\n A list of ProcessType names.\n

" + "documentation":"

A list of ProcessType names.

" } }, - "documentation":"

\n The output of the DescribeScalingProcessTypes action.\n

" + "documentation":"

The output of the DescribeScalingProcessTypes action.

" }, "Progress":{"type":"integer"}, "PropagateAtLaunch":{"type":"boolean"}, + "PutLifecycleHookAnswer":{ + "type":"structure", + "members":{ + }, + "documentation":"

The output of the PutLifecycleHook action.

" + }, + "PutLifecycleHookType":{ + "type":"structure", + "required":[ + "LifecycleHookName", + "AutoScalingGroupName" + ], + "members":{ + "LifecycleHookName":{ + "shape":"AsciiStringMaxLen255", + "documentation":"

The name of the lifecycle hook.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group to which you want to assign the lifecycle hook.

" + }, + "LifecycleTransition":{ + "shape":"LifecycleTransition", + "documentation":"

The Amazon EC2 instance state to which you want to attach the lifecycle hook. See DescribeLifecycleHookTypes for a list of available lifecycle hook types.

" + }, + "RoleARN":{ + "shape":"ResourceName", + "documentation":"

The ARN of the Amazon IAM role that allows the Auto Scaling group to publish to the specified notification target.

" + }, + "NotificationTargetARN":{ + "shape":"ResourceName", + "documentation":"

The ARN of the notification target that Auto Scaling will use to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic.

The notification message sent to the target will include:

  • LifecycleActionToken. The Lifecycle action token.
  • AccountId. The user account ID.
  • AutoScalingGroupName. The name of the Auto Scaling group.
  • LifecycleHookName. The lifecycle hook name.
  • EC2InstanceId. The EC2 instance ID.
  • LifecycleTransition. The lifecycle transition.
  • NotificationMetadata. The notification metadata.

This operation uses the JSON format when sending notifications to an Amazon SQS queue, and an email key/value pair format when sending notifications to an Amazon SNS topic.

When you call this operation, a test message is sent to the notification target. This test message contains an additional key/value pair: Event:autoscaling:TEST_NOTIFICATION.

" + }, + "NotificationMetadata":{ + "shape":"XmlStringMaxLen1023", + "documentation":"

Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.

" + }, + "HeartbeatTimeout":{ + "shape":"HeartbeatTimeout", + "documentation":"

Defines the amount of time, in seconds, that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat. The default value for this parameter is 3600 seconds (1 hour).

" + }, + "DefaultResult":{ + "shape":"LifecycleActionResult", + "documentation":"

Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The value for this parameter can be either CONTINUE or ABANDON. The default value for this parameter is ABANDON.

" + } + } + }, "PutNotificationConfigurationType":{ "type":"structure", "required":[ @@ -2045,15 +2476,15 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "TopicARN":{ "shape":"ResourceName", - "documentation":"

\n The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.\n

" + "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.

" }, "NotificationTypes":{ "shape":"AutoScalingNotificationTypes", - "documentation":"

The type of event that will cause the notification to be sent. For details \n about notification types supported by Auto Scaling, see DescribeAutoScalingNotificationTypes.

" + "documentation":"

The type of event that will cause the notification to be sent. For details about notification types supported by Auto Scaling, see DescribeAutoScalingNotificationTypes.

" } } }, @@ -2068,7 +2499,7 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name or ARN of the Auto Scaling group.\n

" + "documentation":"

The name or ARN of the Auto Scaling group.

" }, "PolicyName":{ "shape":"XmlStringMaxLen255", @@ -2076,19 +2507,19 @@ }, "ScalingAdjustment":{ "shape":"PolicyIncrement", - "documentation":"

\n The number of instances by which to scale. \n AdjustmentType determines the interpretation\n of this number (e.g., as an absolute number or as\n a percentage of the existing Auto Scaling group\n size). A positive increment adds to the current\n capacity and a negative value removes from the\n current capacity.\n

" + "documentation":"

The number of instances by which to scale. AdjustmentType determines the interpretation of this number (e.g., as an absolute number or as a percentage of the existing Auto Scaling group size). A positive increment adds to the current capacity and a negative value removes from the current capacity.

" }, "AdjustmentType":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Specifies whether the ScalingAdjustment is \n an absolute number or a percentage of the current\n capacity. Valid values are ChangeInCapacity,\n ExactCapacity, and PercentChangeInCapacity.\n

\n

For more information about the adjustment types supported by Auto Scaling, see Scale Based on Demand.

" + "documentation":"

Specifies whether the ScalingAdjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

For more information about the adjustment types supported by Auto Scaling, see Scale Based on Demand.

" }, "Cooldown":{ "shape":"Cooldown", - "documentation":"

\n The amount of time, in seconds, after a scaling \n activity completes and before the next scaling activity can start.\n

\n

For more information, see Cooldown Period

" + "documentation":"

The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.

For more information, see Cooldown Period

" }, "MinAdjustmentStep":{ "shape":"MinAdjustmentStep", - "documentation":"

\n Used with AdjustmentType with the value PercentChangeInCapacity, \n the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least the number of instances specified in the value.\n

\n

\n You will get a ValidationError if you use MinAdjustmentStep on a policy with an AdjustmentType\n other than PercentChangeInCapacity.\n

" + "documentation":"

Used with AdjustmentType with the value PercentChangeInCapacity, the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least the number of instances specified in the value.

You will get a ValidationError if you use MinAdjustmentStep on a policy with an AdjustmentType other than PercentChangeInCapacity.

" } } }, @@ -2101,19 +2532,19 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name or ARN of the Auto Scaling group.\n

" + "documentation":"

The name or ARN of the Auto Scaling group.

" }, "ScheduledActionName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of this scaling action.\n

" + "documentation":"

The name of this scaling action.

" }, "Time":{ "shape":"TimestampType", - "documentation":"

Time is deprecated.

\n

The time for this action to start. Time is an alias for StartTime \n and can be specified instead of StartTime, \n or vice versa. If both Time and StartTime are specified, \n their values should be identical. Otherwise,\n PutScheduledUpdateGroupAction will return an error.

" + "documentation":"

Time is deprecated.

The time for this action to start. Time is an alias for StartTime and can be specified instead of StartTime, or vice versa. If both Time and StartTime are specified, their values should be identical. Otherwise, PutScheduledUpdateGroupAction will return an error.

" }, "StartTime":{ "shape":"TimestampType", - "documentation":"

The time for this action to start, as in --start-time 2010-06-01T00:00:00Z.

\n

If you try to schedule your action in the past, Auto Scaling returns an error message.

\n

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring\n action will start and stop.

" + "documentation":"

The time for this action to start, as in --start-time 2010-06-01T00:00:00Z.

If you try to schedule your action in the past, Auto Scaling returns an error message.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop.

" }, "EndTime":{ "shape":"TimestampType", @@ -2121,19 +2552,47 @@ }, "Recurrence":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n\t\tThe time when recurring future actions will start. Start time is specified by the user following the Unix cron syntax format. For information \n\t\tabout cron syntax, go to Wikipedia, The Free Encyclopedia.

\n

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring\n action will start and stop.

" + "documentation":"

The time when recurring future actions will start. Start time is specified by the user following the Unix cron syntax format. For information about cron syntax, go to Wikipedia, The Free Encyclopedia.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop.

" }, "MinSize":{ "shape":"AutoScalingGroupMinSize", - "documentation":"

\n The minimum size for the new Auto Scaling group.\n

" + "documentation":"

The minimum size for the new Auto Scaling group.

" }, "MaxSize":{ "shape":"AutoScalingGroupMaxSize", - "documentation":"

\n The maximum size for the Auto Scaling group.\n

" + "documentation":"

The maximum size for the Auto Scaling group.

" }, "DesiredCapacity":{ "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

\n The number of Amazon EC2 instances that should be running in the group.\n

" + "documentation":"

The number of Amazon EC2 instances that should be running in the group.

" + } + } + }, + "RecordLifecycleActionHeartbeatAnswer":{ + "type":"structure", + "members":{ + }, + "documentation":"

The output of the RecordLifecycleActionHeartbeat action.

" + }, + "RecordLifecycleActionHeartbeatType":{ + "type":"structure", + "required":[ + "LifecycleHookName", + "AutoScalingGroupName", + "LifecycleActionToken" + ], + "members":{ + "LifecycleHookName":{ + "shape":"AsciiStringMaxLen255", + "documentation":"

The name of the lifecycle hook.

" + }, + "AutoScalingGroupName":{ + "shape":"ResourceName", + "documentation":"

The name of the Auto Scaling group to which the hook belongs.

" + }, + "LifecycleActionToken":{ + "shape":"LifecycleActionToken", + "documentation":"

A token that uniquely identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook.

" } } }, @@ -2142,7 +2601,7 @@ "members":{ "message":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n\n

" + "documentation":"

" } }, "error":{ @@ -2151,7 +2610,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n This is returned when you cannot delete a launch\n configuration or Auto Scaling group because it is being used.\n

" + "documentation":"

This is returned when you cannot delete a launch configuration or Auto Scaling group because it is being used.

" }, "ResourceName":{ "type":"string", @@ -2164,7 +2623,7 @@ "members":{ "message":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n\n

" + "documentation":"

" } }, "error":{ @@ -2173,7 +2632,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n You cannot delete an Auto Scaling group\n while there are scaling activities in progress for that group.\n

" + "documentation":"

You cannot delete an Auto Scaling group while there are scaling activities in progress for that group.

" }, "ScalingActivityStatusCode":{ "type":"string", @@ -2183,6 +2642,8 @@ "WaitingForInstanceId", "PreInService", "InProgress", + "WaitingForELBConnectionDraining", + "MidLifecycleAction", "Successful", "Failed", "Cancelled" @@ -2197,38 +2658,38 @@ "members":{ "AutoScalingGroupName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the Auto Scaling group associated with this scaling policy.\n

" + "documentation":"

The name of the Auto Scaling group associated with this scaling policy.

" }, "PolicyName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the scaling policy.\n

" + "documentation":"

The name of the scaling policy.

" }, "ScalingAdjustment":{ "shape":"PolicyIncrement", - "documentation":"

\n The number associated with the specified \n adjustment type.\n A positive value adds to the current capacity\n and a negative value removes from the current capacity.\n

" + "documentation":"

The number associated with the specified adjustment type. A positive value adds to the current capacity and a negative value removes from the current capacity.

" }, "AdjustmentType":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n Specifies whether the ScalingAdjustment is \n an absolute number or a percentage of the current\n capacity. Valid values are ChangeInCapacity,\n ExactCapacity, and PercentChangeInCapacity.\n

" + "documentation":"

Specifies whether the ScalingAdjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

" }, "Cooldown":{ "shape":"Cooldown", - "documentation":"

\n The amount of time, in seconds, after a scaling activity\n completes before any further trigger-related scaling activities\n can start.\n

" + "documentation":"

The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.

" }, "PolicyARN":{ "shape":"ResourceName", - "documentation":"

\n The Amazon Resource Name (ARN) of the policy.\n

" + "documentation":"

The Amazon Resource Name (ARN) of the policy.

" }, "Alarms":{ "shape":"Alarms", - "documentation":"

\n A list of CloudWatch Alarms related to the policy.\n

" + "documentation":"

A list of CloudWatch Alarms related to the policy.

" }, "MinAdjustmentStep":{ "shape":"MinAdjustmentStep", - "documentation":"

\n Changes the DesiredCapacity of the Auto Scaling group by at least the specified number of instances.\n

" + "documentation":"

Changes the DesiredCapacity of the Auto Scaling group by at least the specified number of instances.

" } }, - "documentation":"

\n The ScalingPolicy data type.\n

" + "documentation":"

The ScalingPolicy data type.

" }, "ScalingProcessQuery":{ "type":"structure", @@ -2236,11 +2697,11 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name or Amazon Resource Name (ARN) of the Auto Scaling group.\n

" + "documentation":"

The name or Amazon Resource Name (ARN) of the Auto Scaling group.

" }, "ScalingProcesses":{ "shape":"ProcessNames", - "documentation":"

\n The processes that you want to suspend or resume,\n which can include one or more of the following:\n

\n
    \n
  • Launch
  • \n
  • Terminate
  • \n
  • HealthCheck
  • \n
  • ReplaceUnhealthy
  • \n
  • AZRebalance
  • \n
  • AlarmNotification
  • \n
  • ScheduledActions
  • \n
  • AddToLoadBalancer
  • \n
\n

\n To suspend all process types, omit this parameter.\n

" + "documentation":"

The processes that you want to suspend or resume, which can include one or more of the following:

  • Launch
  • Terminate
  • HealthCheck
  • ReplaceUnhealthy
  • AZRebalance
  • AlarmNotification
  • ScheduledActions
  • AddToLoadBalancer

To suspend all process types, omit this parameter.

" } } }, @@ -2253,60 +2714,60 @@ "members":{ "ScheduledUpdateGroupActions":{ "shape":"ScheduledUpdateGroupActions", - "documentation":"

\n A list of scheduled actions designed to update an Auto Scaling group.\n

" + "documentation":"

A list of scheduled actions designed to update an Auto Scaling group.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string that marks the start of the next batch of returned results.\n

" + "documentation":"

A string that marks the start of the next batch of returned results.

" } }, - "documentation":"

\n A scaling action that is scheduled for a future time and date.\n An action can be scheduled up to thirty days in advance.\n

\n

\n \tStarting with API version 2011-01-01, you can use recurrence \n \tto specify that a scaling action occurs regularly on a schedule. \n

" + "documentation":"

A scaling action that is scheduled for a future time and date. An action can be scheduled up to thirty days in advance.

Starting with API version 2011-01-01, you can use recurrence to specify that a scaling action occurs regularly on a schedule.

" }, "ScheduledUpdateGroupAction":{ "type":"structure", "members":{ "AutoScalingGroupName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the Auto Scaling group to be updated.\n

" + "documentation":"

The name of the Auto Scaling group to be updated.

" }, "ScheduledActionName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of this scheduled action.\n

" + "documentation":"

The name of this scheduled action.

" }, "ScheduledActionARN":{ "shape":"ResourceName", - "documentation":"

\n The Amazon Resource Name (ARN) of this scheduled action.\n

" + "documentation":"

The Amazon Resource Name (ARN) of this scheduled action.

" }, "Time":{ "shape":"TimestampType", - "documentation":"

\n Time is deprecated.

\n

The time that the action is scheduled to begin.\n Time is an alias for StartTime.\n

" + "documentation":"

Time is deprecated.

The time that the action is scheduled to begin. Time is an alias for StartTime.

" }, "StartTime":{ "shape":"TimestampType", - "documentation":"

\n The time that the action is scheduled to begin.\n This value can be up to one month in the future.\n

\n

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring\n action will start and stop.

" + "documentation":"

The time that the action is scheduled to begin. This value can be up to one month in the future.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop.

" }, "EndTime":{ "shape":"TimestampType", - "documentation":"

\n The time that the action is scheduled to end.\n This value can be up to one month in the future.\n

" + "documentation":"

The time that the action is scheduled to end. This value can be up to one month in the future.

" }, "Recurrence":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The regular schedule that an action occurs.\n

" + "documentation":"

The regular schedule that an action occurs.

" }, "MinSize":{ "shape":"AutoScalingGroupMinSize", - "documentation":"

\n The minimum size of the Auto Scaling group.\n

" + "documentation":"

The minimum size of the Auto Scaling group.

" }, "MaxSize":{ "shape":"AutoScalingGroupMaxSize", - "documentation":"

\n The maximum size of the Auto Scaling group.\n

" + "documentation":"

The maximum size of the Auto Scaling group.

" }, "DesiredCapacity":{ "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

\n The number of instances you prefer to maintain in your\n Auto Scaling group. \n

" + "documentation":"

The number of instances you prefer to maintain in your Auto Scaling group.

" } }, - "documentation":"

\n This data type stores information about a\n scheduled update to an Auto Scaling group.\n

" + "documentation":"

This data type stores information about a scheduled update to an Auto Scaling group.

" }, "ScheduledUpdateGroupActions":{ "type":"list", @@ -2325,18 +2786,18 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "DesiredCapacity":{ "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

\n The new capacity setting for the Auto Scaling group.\n

" + "documentation":"

The new capacity setting for the Auto Scaling group.

" }, "HonorCooldown":{ "shape":"HonorCooldown", - "documentation":"

\n By default, SetDesiredCapacity overrides\n any cooldown period associated with the Auto Scaling group. Set to \n True if you want Auto Scaling to wait for the cooldown \n period associated with the Auto Scaling group to complete before \n initiating a scaling activity to set your Auto Scaling group\n to the new capacity setting.\n

" + "documentation":"

By default, SetDesiredCapacity overrides any cooldown period associated with the Auto Scaling group. Set to True if you want Auto Scaling to wait for the cooldown period associated with the Auto Scaling group to complete before initiating a scaling activity to set your Auto Scaling group to the new capacity setting.

" } }, - "documentation":"

\n\n

" + "documentation":"

" }, "SetInstanceHealthQuery":{ "type":"structure", @@ -2347,15 +2808,15 @@ "members":{ "InstanceId":{ "shape":"XmlStringMaxLen16", - "documentation":"

\n The identifier of the Amazon EC2 instance.\n

" + "documentation":"

The identifier of the Amazon EC2 instance.

" }, "HealthStatus":{ "shape":"XmlStringMaxLen32", - "documentation":"

\n The health status of the instance. \n Set to Healthy if you want the instance to remain in service.\n Set to Unhealthy if you want the instance to be out of service. Auto\n Scaling will terminate and replace the unhealthy instance.\n

" + "documentation":"

The health status of the instance. Set to Healthy if you want the instance to remain in service. Set to Unhealthy if you want the instance to be out of service. Auto Scaling will terminate and replace the unhealthy instance.

" }, "ShouldRespectGracePeriod":{ "shape":"ShouldRespectGracePeriod", - "documentation":"

If the Auto Scaling group of the specified instance has a HealthCheckGracePeriod \n specified for the group, by default, this call will respect the grace period. Set this \n to False, if you do not want the call to respect the grace period associated \n with the group.

\n

For more information, see the HealthCheckGracePeriod parameter description in the \n CreateAutoScalingGroup action.

" + "documentation":"

If the Auto Scaling group of the specified instance has a HealthCheckGracePeriod specified for the group, by default, this call will respect the grace period. Set this to False, if you do not want the call to respect the grace period associated with the group.

For more information, see the HealthCheckGracePeriod parameter description in the CreateAutoScalingGroup action.

" } } }, @@ -2371,14 +2832,14 @@ "members":{ "ProcessName":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the suspended process.\n

" + "documentation":"

The name of the suspended process.

" }, "SuspensionReason":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The reason that the process was suspended.\n

" + "documentation":"

The reason that the process was suspended.

" } }, - "documentation":"

\n An Auto Scaling process that has been suspended.\n For more information, see ProcessType.\n

" + "documentation":"

An Auto Scaling process that has been suspended. For more information, see ProcessType.

" }, "SuspendedProcesses":{ "type":"list", @@ -2390,52 +2851,52 @@ "members":{ "ResourceId":{ "shape":"XmlString", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "ResourceType":{ "shape":"XmlString", - "documentation":"

\n The kind of resource to which the tag is applied. Currently, Auto Scaling \n supports the auto-scaling-group resource type.\n

" + "documentation":"

The kind of resource to which the tag is applied. Currently, Auto Scaling supports the auto-scaling-group resource type.

" }, "Key":{ "shape":"TagKey", - "documentation":"

\n The key of the tag.\n

" + "documentation":"

The key of the tag.

" }, "Value":{ "shape":"TagValue", - "documentation":"

\n The value of the tag. \n

" + "documentation":"

The value of the tag.

" }, "PropagateAtLaunch":{ "shape":"PropagateAtLaunch", - "documentation":"

\n Specifies whether the new tag will be applied to instances launched after \n the tag is created. The same behavior applies to updates: If you change a \n tag, the changed tag will be applied to all instances launched after you made \n the change.\n

" + "documentation":"

Specifies whether the new tag will be applied to instances launched after the tag is created. The same behavior applies to updates: If you change a tag, the changed tag will be applied to all instances launched after you made the change.

" } }, - "documentation":"

\n The tag applied to an Auto Scaling group.\n

" + "documentation":"

The tag applied to an Auto Scaling group.

" }, "TagDescription":{ "type":"structure", "members":{ "ResourceId":{ "shape":"XmlString", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "ResourceType":{ "shape":"XmlString", - "documentation":"

\n The kind of resource to which the tag is applied. Currently, Auto Scaling \n supports the auto-scaling-group resource type.\n

" + "documentation":"

The kind of resource to which the tag is applied. Currently, Auto Scaling supports the auto-scaling-group resource type.

" }, "Key":{ "shape":"TagKey", - "documentation":"

\n The key of the tag.\n

" + "documentation":"

The key of the tag.

" }, "Value":{ "shape":"TagValue", - "documentation":"

\n The value of the tag.\n

" + "documentation":"

The value of the tag.

" }, "PropagateAtLaunch":{ "shape":"PropagateAtLaunch", - "documentation":"

\n Specifies whether the new tag will be applied to instances launched after \n the tag is created. The same behavior applies to updates: If you change a \n tag, the changed tag will be applied to all instances launched after you made \n the change.\n

" + "documentation":"

Specifies whether the new tag will be applied to instances launched after the tag is created. The same behavior applies to updates: If you change a tag, the changed tag will be applied to all instances launched after you made the change.

" } }, - "documentation":"

\n The tag applied to an Auto Scaling group.\n

" + "documentation":"

The tag applied to an Auto Scaling group.

" }, "TagDescriptionList":{ "type":"list", @@ -2462,14 +2923,14 @@ "members":{ "Tags":{ "shape":"TagDescriptionList", - "documentation":"

\n The list of tags.\n

" + "documentation":"

The list of tags.

" }, "NextToken":{ "shape":"XmlString", - "documentation":"

\n A string used to mark the start of the next\n batch of returned results. \n

" + "documentation":"

A string used to mark the start of the next batch of returned results.

" } }, - "documentation":"

\n

" + "documentation":"

" }, "TerminateInstanceInAutoScalingGroupType":{ "type":"structure", @@ -2480,14 +2941,14 @@ "members":{ "InstanceId":{ "shape":"XmlStringMaxLen16", - "documentation":"

\n The ID of the Amazon EC2 instance to be terminated.\n

" + "documentation":"

The ID of the Amazon EC2 instance to be terminated.

" }, "ShouldDecrementDesiredCapacity":{ "shape":"ShouldDecrementDesiredCapacity", - "documentation":"

\n Specifies whether (true) or not (false)\n terminating this instance should also decrement the\n size of the AutoScalingGroup.\n

" + "documentation":"

Specifies whether (true) or not (false) terminating this instance should also decrement the size of the AutoScalingGroup.

" } }, - "documentation":"

\n\n

" + "documentation":"

" }, "TerminationPolicies":{ "type":"list", @@ -2500,54 +2961,54 @@ "members":{ "AutoScalingGroupName":{ "shape":"ResourceName", - "documentation":"

\n The name of the Auto Scaling group.\n

" + "documentation":"

The name of the Auto Scaling group.

" }, "LaunchConfigurationName":{ "shape":"ResourceName", - "documentation":"

\n The name of the launch configuration.\n

" + "documentation":"

The name of the launch configuration.

" }, "MinSize":{ "shape":"AutoScalingGroupMinSize", - "documentation":"

\n The minimum size of the Auto Scaling group.\n

" + "documentation":"

The minimum size of the Auto Scaling group.

" }, "MaxSize":{ "shape":"AutoScalingGroupMaxSize", - "documentation":"

\n The maximum size of the Auto Scaling group.\n

" + "documentation":"

The maximum size of the Auto Scaling group.

" }, "DesiredCapacity":{ "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

\n The desired capacity for the Auto Scaling group.\n

" + "documentation":"

The desired capacity for the Auto Scaling group.

" }, "DefaultCooldown":{ "shape":"Cooldown", - "documentation":"

\n The amount of time, in seconds, after a scaling activity \n completes before any further scaling activities can start.\n For more information, \n see Cooldown Period. \n

" + "documentation":"

The amount of time, in seconds, after a scaling activity completes before any further scaling activities can start. For more information, see Cooldown Period.

" }, "AvailabilityZones":{ "shape":"AvailabilityZones", - "documentation":"

\n Availability Zones for the group.\n

" + "documentation":"

Availability Zones for the group.

" }, "HealthCheckType":{ "shape":"XmlStringMaxLen32", - "documentation":"

\n The type of health check for the instances in the Auto Scaling group. \n The health check type can either be EC2 for Amazon EC2 or ELB for Elastic Load Balancing.\n

" + "documentation":"

The type of health check for the instances in the Auto Scaling group. The health check type can either be EC2 for Amazon EC2 or ELB for Elastic Load Balancing.

" }, "HealthCheckGracePeriod":{ "shape":"HealthCheckGracePeriod", - "documentation":"

\n The length of time that Auto Scaling waits\n before checking an instance's health status.\n The grace period begins when the instance passes System Status and the Instance Status checks from Amazon EC2. For more information, see \n DescribeInstanceStatus.\n

" + "documentation":"

The length of time that Auto Scaling waits before checking an instance's health status. The grace period begins when the instance passes System Status and the Instance Status checks from Amazon EC2. For more information, see DescribeInstanceStatus.

" }, "PlacementGroup":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The name of the cluster placement group, if applicable. For\n more information, go to \n \n Using Cluster Instances\n in the Amazon EC2 User Guide.\n

" + "documentation":"

The name of the cluster placement group, if applicable. For more information, go to Using Cluster Instances in the Amazon EC2 User Guide.

" }, "VPCZoneIdentifier":{ "shape":"XmlStringMaxLen255", - "documentation":"

\n The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in a \n comma-separated list. \n

\n

\n When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the \n subnets' Availability Zones match the values you specify for AvailabilityZones.\n

\n

\n For more information on creating your Auto Scaling group in Amazon VPC by specifying subnets, see \n Launch Auto Scaling Instances into Amazon VPC in the \n the Auto Scaling Developer Guide.\n

" + "documentation":"

The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in a comma-separated list.

When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the subnets' Availability Zones match the values you specify for AvailabilityZones.

For more information on creating your Auto Scaling group in Amazon VPC by specifying subnets, see Launch Auto Scaling Instances into Amazon VPC in the the Auto Scaling Developer Guide.

" }, "TerminationPolicies":{ "shape":"TerminationPolicies", - "documentation":"

\n A standalone termination policy or a list of termination policies used to select the instance to terminate. \n The policies are executed in the order that they are listed. \n

\n

\n For more information on creating a termination policy for your Auto Scaling group, go to \n Instance Termination Policy for Your Auto Scaling Group in the \n the Auto Scaling Developer Guide.\n

" + "documentation":"

A standalone termination policy or a list of termination policies used to select the instance to terminate. The policies are executed in the order that they are listed.

For more information on creating a termination policy for your Auto Scaling group, go to Instance Termination Policy for Your Auto Scaling Group in the the Auto Scaling Developer Guide.

" } }, - "documentation":"

\n \n

" + "documentation":"

" }, "Values":{ "type":"list", diff --git a/CloudWatch/AWSCloudWatch.h b/CloudWatch/AWSCloudWatch.h index 29286b6f1f2..0351e6b4ff5 100644 --- a/CloudWatch/AWSCloudWatch.h +++ b/CloudWatch/AWSCloudWatch.h @@ -20,19 +20,18 @@ @class BFTask; /** - *

This is the Amazon CloudWatch API Reference. This guide provides detailed information about Amazon CloudWatch actions, data types, parameters, and errors. For detailed information about Amazon CloudWatch features and their associated API calls, go to the Amazon CloudWatch Developer Guide.

Amazon CloudWatch is a web service that enables you to publish, monitor, and manage various metrics, as well as configure alarm actions based on data from metrics. For more information about this product go to http://aws.amazon.com/cloudwatch.

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

Use the following links to get started using the Amazon CloudWatch API Reference:

  • Actions: An alphabetical list of all Amazon CloudWatch actions.
  • Data Types: An alphabetical list of all Amazon CloudWatch data types.
  • Common Parameters: Parameters that all Query actions can use.
  • Common Errors: Client and server errors that all actions can return.
  • Regions and Endpoints: Itemized regions and endpoints for all AWS products.
  • WSDL Location: http://monitoring.amazonaws.com/doc/2010-08-01/CloudWatch.wsdl

In addition to using the Amazon CloudWatch API, you can also use the following SDKs and third-party libraries to access Amazon CloudWatch programmatically.

Developers in the AWS developer community also provide their own libraries, which you can find at the following AWS developer centers:

+ *

This is the Amazon CloudWatch API Reference. This guide provides detailed information about Amazon CloudWatch actions, data types, parameters, and errors. For detailed information about Amazon CloudWatch features and their associated API calls, go to the Amazon CloudWatch Developer Guide.

Amazon CloudWatch is a web service that enables you to publish, monitor, and manage various metrics, as well as configure alarm actions based on data from metrics. For more information about this product go to http://aws.amazon.com/cloudwatch.

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

Use the following links to get started using the Amazon CloudWatch API Reference:

  • Actions: An alphabetical list of all Amazon CloudWatch actions.
  • Data Types: An alphabetical list of all Amazon CloudWatch data types.
  • Common Parameters: Parameters that all Query actions can use.
  • Common Errors: Client and server errors that all actions can return.
  • Regions and Endpoints: Itemized regions and endpoints for all AWS products.
  • WSDL Location: http://monitoring.amazonaws.com/doc/2010-08-01/CloudWatch.wsdl

In addition to using the Amazon CloudWatch API, you can also use the following SDKs and third-party libraries to access Amazon CloudWatch programmatically.

Developers in the AWS developer community also provide their own libraries, which you can find at the following AWS developer centers:

*/ @interface AWSCloudWatch : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultCloudWatch; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

Deletes all specified alarms. In the event of an error, no alarms are deleted.

+ *

Deletes all specified alarms. In the event of an error, no alarms are deleted.

* * @param request A container for the necessary parameters to execute the DeleteAlarms service method. * @@ -43,7 +42,7 @@ - (BFTask *)deleteAlarms:(AWSCloudWatchDeleteAlarmsInput *)request; /** - *

Retrieves history for the specified alarm. Filter alarms by date range or item type. If an alarm name is not specified, Amazon CloudWatch returns histories for all of the owner's alarms.

Amazon CloudWatch retains the history of an alarm for two weeks, whether or not you delete the alarm. + *

Retrieves history for the specified alarm. Filter alarms by date range or item type. If an alarm name is not specified, Amazon CloudWatch returns histories for all of the owner's alarms.

* * @param request A container for the necessary parameters to execute the DescribeAlarmHistory service method. * @@ -55,7 +54,7 @@ - (BFTask *)describeAlarmHistory:(AWSCloudWatchDescribeAlarmHistoryInput *)request; /** - *

Retrieves alarms with the specified names. If no name is specified, all alarms for the user are returned. Alarms can be retrieved by using only a prefix for the alarm name, the alarm state, or a prefix for any action.

+ *

Retrieves alarms with the specified names. If no name is specified, all alarms for the user are returned. Alarms can be retrieved by using only a prefix for the alarm name, the alarm state, or a prefix for any action.

* * @param request A container for the necessary parameters to execute the DescribeAlarms service method. * @@ -67,7 +66,7 @@ - (BFTask *)describeAlarms:(AWSCloudWatchDescribeAlarmsInput *)request; /** - *

Retrieves all alarms for a single metric. Specify a statistic, period, or unit to filter the set of alarms further.

+ *

Retrieves all alarms for a single metric. Specify a statistic, period, or unit to filter the set of alarms further.

* * @param request A container for the necessary parameters to execute the DescribeAlarmsForMetric service method. * @@ -79,7 +78,7 @@ - (BFTask *)describeAlarmsForMetric:(AWSCloudWatchDescribeAlarmsForMetricInput *)request; /** - *

Disables actions for the specified alarms. When an alarm's actions are disabled the alarm's state may change, but none of the alarm's actions will execute.

+ *

Disables actions for the specified alarms. When an alarm's actions are disabled the alarm's state may change, but none of the alarm's actions will execute.

* * @param request A container for the necessary parameters to execute the DisableAlarmActions service method. * @@ -90,7 +89,7 @@ - (BFTask *)disableAlarmActions:(AWSCloudWatchDisableAlarmActionsInput *)request; /** - *

Enables actions for the specified alarms.

+ *

Enables actions for the specified alarms.

* * @param request A container for the necessary parameters to execute the EnableAlarmActions service method. * @@ -101,7 +100,7 @@ - (BFTask *)enableAlarmActions:(AWSCloudWatchEnableAlarmActionsInput *)request; /** - *

Gets statistics for the specified metric.

The maximum number of data points returned from a single GetMetricStatistics request is 1,440, wereas the maximum number of data points that can be queried is 50,850. If you make a request that generates more than 1,440 data points, Amazon CloudWatch returns an error. In such a case, you can alter the request by narrowing the specified time range or increasing the specified period. Alternatively, you can make multiple requests across adjacent time ranges.

Amazon CloudWatch aggregates data points based on the length of the period that you specify. For example, if you request statistics with a one-minute granularity, Amazon CloudWatch aggregates data points with time stamps that fall within the same one-minute period. In such a case, the data points queried can greatly outnumber the data points returned.

The following examples show various statistics allowed by the data point query maximum of 50,850 when you call GetMetricStatistics on Amazon EC2 instances with detailed (one-minute) monitoring enabled:

  • Statistics for up to 400 instances for a span of one hour
  • Statistics for up to 35 instances over a span of 24 hours
  • Statistics for up to 2 instances over a span of 2 weeks

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

+ *

Gets statistics for the specified metric.

The maximum number of data points returned from a single GetMetricStatistics request is 1,440, wereas the maximum number of data points that can be queried is 50,850. If you make a request that generates more than 1,440 data points, Amazon CloudWatch returns an error. In such a case, you can alter the request by narrowing the specified time range or increasing the specified period. Alternatively, you can make multiple requests across adjacent time ranges.

Amazon CloudWatch aggregates data points based on the length of the period that you specify. For example, if you request statistics with a one-minute granularity, Amazon CloudWatch aggregates data points with time stamps that fall within the same one-minute period. In such a case, the data points queried can greatly outnumber the data points returned.

The following examples show various statistics allowed by the data point query maximum of 50,850 when you call GetMetricStatistics on Amazon EC2 instances with detailed (one-minute) monitoring enabled:

  • Statistics for up to 400 instances for a span of one hour
  • Statistics for up to 35 instances over a span of 24 hours
  • Statistics for up to 2 instances over a span of 2 weeks

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

* * @param request A container for the necessary parameters to execute the GetMetricStatistics service method. * @@ -113,7 +112,7 @@ - (BFTask *)getMetricStatistics:(AWSCloudWatchGetMetricStatisticsInput *)request; /** - *

Returns a list of valid metrics stored for the AWS account owner. Returned metrics can be used with GetMetricStatistics to obtain statistical data for a given metric.

Up to 500 results are returned for any one call.To retrieve further results, use returned NextToken values with subsequent ListMetrics operations. If you create a metric with the PutMetricData action, allow up to fifteen minutes for the metric to appear in calls to the ListMetrics action. Statistics about the metric, however, are available sooner using GetMetricStatistics. + *

Returns a list of valid metrics stored for the AWS account owner. Returned metrics can be used with GetMetricStatistics to obtain statistical data for a given metric.

* * @param request A container for the necessary parameters to execute the ListMetrics service method. * @@ -125,7 +124,7 @@ - (BFTask *)listMetrics:(AWSCloudWatchListMetricsInput *)request; /** - *

Creates or updates an alarm and associates it with the specified Amazon CloudWatch metric. Optionally, this operation can associate one or more Amazon Simple Notification Service resources with the alarm.

When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA.The alarm is evaluated and its StateValue is set appropriately.Any actions associated with the StateValue is then executed.

When updating an existing alarm, its StateValue is left unchanged. + *

Creates or updates an alarm and associates it with the specified Amazon CloudWatch metric. Optionally, this operation can associate one or more Amazon Simple Notification Service resources with the alarm.

When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA. The alarm is evaluated and its StateValue is set appropriately. Any actions associated with the StateValue is then executed.

* * @param request A container for the necessary parameters to execute the PutMetricAlarm service method. * @@ -136,7 +135,7 @@ - (BFTask *)putMetricAlarm:(AWSCloudWatchPutMetricAlarmInput *)request; /** - *

Publishes metric data points to Amazon CloudWatch. Amazon Cloudwatch associates the data points with the specified metric. If the specified metric does not exist, Amazon CloudWatch creates the metric. It can take up to fifteen minutes for a new metric to appear in calls to the ListMetrics action.

The size of a PutMetricData request is limited to 8 KB for HTTP GET requests and 40 KB for HTTP POST requests.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated.

Data that is timestamped 24 hours or more in the past may take in excess of 48 hours to become available from submission time using GetMetricStatistics.

+ *

Publishes metric data points to Amazon CloudWatch. Amazon Cloudwatch associates the data points with the specified metric. If the specified metric does not exist, Amazon CloudWatch creates the metric. It can take up to fifteen minutes for a new metric to appear in calls to the ListMetrics action.

The size of a PutMetricData request is limited to 8 KB for HTTP GET requests and 40 KB for HTTP POST requests.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated.

Data that is timestamped 24 hours or more in the past may take in excess of 48 hours to become available from submission time using GetMetricStatistics.

* * @param request A container for the necessary parameters to execute the PutMetricData service method. * @@ -147,7 +146,7 @@ - (BFTask *)putMetricData:(AWSCloudWatchPutMetricDataInput *)request; /** - *

Temporarily sets the state of an alarm. When the updated StateValue differs from the previous value, the action configured for the appropriate state is invoked. This is not a permanent change. The next periodic alarm check (in about a minute) will set the alarm to its actual state.

+ *

Temporarily sets the state of an alarm. When the updated StateValue differs from the previous value, the action configured for the appropriate state is invoked. This is not a permanent change. The next periodic alarm check (in about a minute) will set the alarm to its actual state.

* * @param request A container for the necessary parameters to execute the SetAlarmState service method. * diff --git a/CloudWatch/AWSCloudWatch.m b/CloudWatch/AWSCloudWatch.m index 83e62342c72..466fb36ab35 100644 --- a/CloudWatch/AWSCloudWatch.m +++ b/CloudWatch/AWSCloudWatch.m @@ -15,8 +15,8 @@ #import "AWSCloudWatch.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -47,13 +47,13 @@ + (void)initialize { @"IncompleteSignature" : @(AWSCloudWatchErrorIncompleteSignature), @"InvalidClientTokenId" : @(AWSCloudWatchErrorInvalidClientTokenId), @"MissingAuthenticationToken" : @(AWSCloudWatchErrorMissingAuthenticationToken), - @"InternalServiceFault" : @(AWSCloudWatchErrorInternalService), - @"InvalidFormatFault" : @(AWSCloudWatchErrorInvalidFormat), + @"InternalServiceError" : @(AWSCloudWatchErrorInternalService), + @"InvalidFormat" : @(AWSCloudWatchErrorInvalidFormat), @"InvalidNextToken" : @(AWSCloudWatchErrorInvalidNextToken), - @"InvalidParameterCombinationException" : @(AWSCloudWatchErrorInvalidParameterCombination), - @"InvalidParameterValueException" : @(AWSCloudWatchErrorInvalidParameterValue), - @"LimitExceededFault" : @(AWSCloudWatchErrorLimitExceeded), - @"MissingRequiredParameterException" : @(AWSCloudWatchErrorMissingRequiredParameter), + @"InvalidParameterCombination" : @(AWSCloudWatchErrorInvalidParameterCombination), + @"InvalidParameterValue" : @(AWSCloudWatchErrorInvalidParameterValue), + @"LimitExceeded" : @(AWSCloudWatchErrorLimitExceeded), + @"MissingParameter" : @(AWSCloudWatchErrorMissingRequiredParameter), @"ResourceNotFound" : @(AWSCloudWatchErrorResourceNotFound), }; } @@ -86,7 +86,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSCloudWatchErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -94,13 +94,12 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSCloudWatchErrorDomain code:AWSCloudWatchErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } - + } - + if (self.outputClass) { responseObject = [MTLJSONAdapter modelOfClass:self.outputClass @@ -120,22 +119,22 @@ @interface AWSCloudWatchRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSCloudWatchRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSCloudWatchErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSCloudWatchErrorIncompleteSignature: case AWSCloudWatchErrorInvalidClientTokenId: case AWSCloudWatchErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -150,15 +149,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSCloudWatch() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -182,25 +180,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceCloudWatch]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceCloudWatch]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSURLRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -209,9 +207,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -231,7 +229,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)deleteAlarms:(AWSCloudWatchDeleteAlarmsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteAlarms" @@ -240,7 +238,7 @@ - (BFTask *)deleteAlarms:(AWSCloudWatchDeleteAlarmsInput *)request { - (BFTask *)describeAlarmHistory:(AWSCloudWatchDescribeAlarmHistoryInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAlarmHistory" @@ -249,7 +247,7 @@ - (BFTask *)describeAlarmHistory:(AWSCloudWatchDescribeAlarmHistoryInput *)reque - (BFTask *)describeAlarms:(AWSCloudWatchDescribeAlarmsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAlarms" @@ -258,7 +256,7 @@ - (BFTask *)describeAlarms:(AWSCloudWatchDescribeAlarmsInput *)request { - (BFTask *)describeAlarmsForMetric:(AWSCloudWatchDescribeAlarmsForMetricInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAlarmsForMetric" @@ -267,7 +265,7 @@ - (BFTask *)describeAlarmsForMetric:(AWSCloudWatchDescribeAlarmsForMetricInput * - (BFTask *)disableAlarmActions:(AWSCloudWatchDisableAlarmActionsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DisableAlarmActions" @@ -276,7 +274,7 @@ - (BFTask *)disableAlarmActions:(AWSCloudWatchDisableAlarmActionsInput *)request - (BFTask *)enableAlarmActions:(AWSCloudWatchEnableAlarmActionsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"EnableAlarmActions" @@ -285,7 +283,7 @@ - (BFTask *)enableAlarmActions:(AWSCloudWatchEnableAlarmActionsInput *)request { - (BFTask *)getMetricStatistics:(AWSCloudWatchGetMetricStatisticsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetMetricStatistics" @@ -294,7 +292,7 @@ - (BFTask *)getMetricStatistics:(AWSCloudWatchGetMetricStatisticsInput *)request - (BFTask *)listMetrics:(AWSCloudWatchListMetricsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListMetrics" @@ -303,7 +301,7 @@ - (BFTask *)listMetrics:(AWSCloudWatchListMetricsInput *)request { - (BFTask *)putMetricAlarm:(AWSCloudWatchPutMetricAlarmInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"PutMetricAlarm" @@ -312,7 +310,7 @@ - (BFTask *)putMetricAlarm:(AWSCloudWatchPutMetricAlarmInput *)request { - (BFTask *)putMetricData:(AWSCloudWatchPutMetricDataInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"PutMetricData" @@ -321,7 +319,7 @@ - (BFTask *)putMetricData:(AWSCloudWatchPutMetricDataInput *)request { - (BFTask *)setAlarmState:(AWSCloudWatchSetAlarmStateInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetAlarmState" diff --git a/CloudWatch/AWSCloudWatchModel.h b/CloudWatch/AWSCloudWatchModel.h index 662c7923170..b8b92e2329b 100644 --- a/CloudWatch/AWSCloudWatchModel.h +++ b/CloudWatch/AWSCloudWatchModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSCloudWatchErrorDomain; @@ -122,76 +122,76 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { @class AWSCloudWatchStatisticSet; /** - *

The AlarmHistoryItem data type contains descriptive information about the history of a specific alarm. If you call DescribeAlarmHistory, Amazon CloudWatch returns this data type as part of the DescribeAlarmHistoryResult data type.

+ *

The AlarmHistoryItem data type contains descriptive information about the history of a specific alarm. If you call DescribeAlarmHistory, Amazon CloudWatch returns this data type as part of the DescribeAlarmHistoryResult data type.

*/ -@interface AWSCloudWatchAlarmHistoryItem : AZModel +@interface AWSCloudWatchAlarmHistoryItem : AWSModel /** - *

The descriptive name for the alarm.

+ *

The descriptive name for the alarm.

*/ @property (nonatomic, strong) NSString *alarmName; /** - *

Machine-readable data about the alarm in JSON format.

+ *

Machine-readable data about the alarm in JSON format.

*/ @property (nonatomic, strong) NSString *historyData; /** - *

The type of alarm history item.

+ *

The type of alarm history item.

*/ @property (nonatomic, assign) AWSCloudWatchHistoryItemType historyItemType; /** - *

A human-readable summary of the alarm history.

+ *

A human-readable summary of the alarm history.

*/ @property (nonatomic, strong) NSString *historySummary; /** - *

The time stamp for the alarm history item. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

+ *

The time stamp for the alarm history item. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

*/ @property (nonatomic, strong) NSDate *timestamp; @end /** - *

The Datapoint data type encapsulates the statistical data that Amazon CloudWatch computes from metric data.

+ *

The Datapoint data type encapsulates the statistical data that Amazon CloudWatch computes from metric data.

*/ -@interface AWSCloudWatchDatapoint : AZModel +@interface AWSCloudWatchDatapoint : AWSModel /** - *

The average of metric values that correspond to the datapoint.

+ *

The average of metric values that correspond to the datapoint.

*/ @property (nonatomic, strong) NSNumber *average; /** - *

The maximum of the metric value used for the datapoint.

+ *

The maximum of the metric value used for the datapoint.

*/ @property (nonatomic, strong) NSNumber *maximum; /** - *

The minimum metric value used for the datapoint.

+ *

The minimum metric value used for the datapoint.

*/ @property (nonatomic, strong) NSNumber *minimum; /** - *

The number of metric values that contributed to the aggregate value of this datapoint.

+ *

The number of metric values that contributed to the aggregate value of this datapoint.

*/ @property (nonatomic, strong) NSNumber *sampleCount; /** - *

The sum of metric values used for the datapoint.

+ *

The sum of metric values used for the datapoint.

*/ @property (nonatomic, strong) NSNumber *sum; /** - *

The time stamp used for the datapoint. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

+ *

The time stamp used for the datapoint. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

*/ @property (nonatomic, strong) NSDate *timestamp; /** - *

The standard unit used for the datapoint.

+ *

The standard unit used for the datapoint.

*/ @property (nonatomic, assign) AWSCloudWatchStandardUnit unit; @@ -201,7 +201,7 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

A list of alarms to be deleted.

+ *

A list of alarms to be deleted.

*/ @property (nonatomic, strong) NSArray *alarmNames; @@ -211,50 +211,50 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

The name of the alarm.

+ *

The name of the alarm.

*/ @property (nonatomic, strong) NSString *alarmName; /** - *

The ending date to retrieve alarm history.

+ *

The ending date to retrieve alarm history.

*/ @property (nonatomic, strong) NSDate *endDate; /** - *

The type of alarm histories to retrieve.

+ *

The type of alarm histories to retrieve.

*/ @property (nonatomic, assign) AWSCloudWatchHistoryItemType historyItemType; /** - *

The maximum number of alarm history records to retrieve.

+ *

The maximum number of alarm history records to retrieve.

*/ @property (nonatomic, strong) NSNumber *maxRecords; /** - *

The token returned by a previous call to indicate that there is more data available.

+ *

The token returned by a previous call to indicate that there is more data available.

*/ @property (nonatomic, strong) NSString *nextToken; /** - *

The starting date to retrieve alarm history.

+ *

The starting date to retrieve alarm history.

*/ @property (nonatomic, strong) NSDate *startDate; @end /** - *

The output for the DescribeAlarmHistory action.

+ *

The output for the DescribeAlarmHistory action.

*/ -@interface AWSCloudWatchDescribeAlarmHistoryOutput : AZModel +@interface AWSCloudWatchDescribeAlarmHistoryOutput : AWSModel /** - *

A list of alarm histories in JSON format.

+ *

A list of alarm histories in JSON format.

*/ @property (nonatomic, strong) NSArray *alarmHistoryItems; /** - *

A string that marks the start of the next batch of returned results.

+ *

A string that marks the start of the next batch of returned results.

*/ @property (nonatomic, strong) NSString *nextToken; @@ -264,45 +264,45 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

The list of dimensions associated with the metric.

+ *

The list of dimensions associated with the metric.

*/ @property (nonatomic, strong) NSArray *dimensions; /** - *

The name of the metric.

+ *

The name of the metric.

*/ @property (nonatomic, strong) NSString *metricName; /** - *

The namespace of the metric.

+ *

The namespace of the metric.

*/ @property (nonatomic, strong) NSString *namespace; /** - *

The period in seconds over which the statistic is applied.

+ *

The period in seconds over which the statistic is applied.

*/ @property (nonatomic, strong) NSNumber *period; /** - *

The statistic for the metric.

+ *

The statistic for the metric.

*/ @property (nonatomic, assign) AWSCloudWatchStatistic statistic; /** - *

The unit for the metric.

+ *

The unit for the metric.

*/ @property (nonatomic, assign) AWSCloudWatchStandardUnit unit; @end /** - *

The output for the DescribeAlarmsForMetric action.

+ *

The output for the DescribeAlarmsForMetric action.

*/ -@interface AWSCloudWatchDescribeAlarmsForMetricOutput : AZModel +@interface AWSCloudWatchDescribeAlarmsForMetricOutput : AWSModel /** - *

A list of information for each alarm with the specified metric.

+ *

A list of information for each alarm with the specified metric.

*/ @property (nonatomic, strong) NSArray *metricAlarms; @@ -312,102 +312,102 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

The action name prefix.

+ *

The action name prefix.

*/ @property (nonatomic, strong) NSString *actionPrefix; /** - *

The alarm name prefix. AlarmNames cannot be specified if this parameter is specified.

+ *

The alarm name prefix. AlarmNames cannot be specified if this parameter is specified.

*/ @property (nonatomic, strong) NSString *alarmNamePrefix; /** - *

A list of alarm names to retrieve information for.

+ *

A list of alarm names to retrieve information for.

*/ @property (nonatomic, strong) NSArray *alarmNames; /** - *

The maximum number of alarm descriptions to retrieve.

+ *

The maximum number of alarm descriptions to retrieve.

*/ @property (nonatomic, strong) NSNumber *maxRecords; /** - *

The token returned by a previous call to indicate that there is more data available.

+ *

The token returned by a previous call to indicate that there is more data available.

*/ @property (nonatomic, strong) NSString *nextToken; /** - *

The state value to be used in matching alarms.

+ *

The state value to be used in matching alarms.

*/ @property (nonatomic, assign) AWSCloudWatchStateValue stateValue; @end /** - *

The output for the DescribeAlarms action.

+ *

The output for the DescribeAlarms action.

*/ -@interface AWSCloudWatchDescribeAlarmsOutput : AZModel +@interface AWSCloudWatchDescribeAlarmsOutput : AWSModel /** - *

A list of information for the specified alarms.

+ *

A list of information for the specified alarms.

*/ @property (nonatomic, strong) NSArray *metricAlarms; /** - *

A string that marks the start of the next batch of returned results.

+ *

A string that marks the start of the next batch of returned results.

*/ @property (nonatomic, strong) NSString *nextToken; @end /** - *

The Dimension data type further expands on the identity of a metric using a Name, Value pair.

For examples that use one or more dimensions, see PutMetricData.

+ *

The Dimension data type further expands on the identity of a metric using a Name, Value pair.

For examples that use one or more dimensions, see PutMetricData.

* Required parameters: [Name, Value] */ -@interface AWSCloudWatchDimension : AZModel +@interface AWSCloudWatchDimension : AWSModel /** - *

The name of the dimension.

+ *

The name of the dimension.

*/ @property (nonatomic, strong) NSString *name; /** - *

The value representing the dimension measurement

+ *

The value representing the dimension measurement

*/ @property (nonatomic, strong) NSString *value; @end /** - *

The DimensionFilter data type is used to filter ListMetrics results.

+ *

The DimensionFilter data type is used to filter ListMetrics results.

* Required parameters: [Name] */ -@interface AWSCloudWatchDimensionFilter : AZModel +@interface AWSCloudWatchDimensionFilter : AWSModel /** - *

The dimension name to be matched.

+ *

The dimension name to be matched.

*/ @property (nonatomic, strong) NSString *name; /** - *

The value of the dimension to be matched.

Specifying a Name without specifying a Value returns all values associated with that Name. + *

The value of the dimension to be matched.

*/ @property (nonatomic, strong) NSString *value; @end /** - *

+ *

* Required parameters: [AlarmNames] */ @interface AWSCloudWatchDisableAlarmActionsInput : AWSRequest /** - *

The names of the alarms to disable actions for.

+ *

The names of the alarms to disable actions for.

*/ @property (nonatomic, strong) NSArray *alarmNames; @@ -417,7 +417,7 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

The names of the alarms to enable actions for.

+ *

The names of the alarms to enable actions for.

*/ @property (nonatomic, strong) NSArray *alarmNames; @@ -427,60 +427,60 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

A list of dimensions describing qualities of the metric.

+ *

A list of dimensions describing qualities of the metric.

*/ @property (nonatomic, strong) NSArray *dimensions; /** - *

The time stamp to use for determining the last datapoint to return. The value specified is exclusive; results will include datapoints up to the time stamp specified.

+ *

The time stamp to use for determining the last datapoint to return. The value specified is exclusive; results will include datapoints up to the time stamp specified.

*/ @property (nonatomic, strong) NSDate *endTime; /** - *

The name of the metric, with or without spaces.

+ *

The name of the metric, with or without spaces.

*/ @property (nonatomic, strong) NSString *metricName; /** - *

The namespace of the metric, with or without spaces.

+ *

The namespace of the metric, with or without spaces.

*/ @property (nonatomic, strong) NSString *namespace; /** - *

The granularity, in seconds, of the returned datapoints. Period must be at least 60 seconds and must be a multiple of 60. The default value is 60.

+ *

The granularity, in seconds, of the returned datapoints. Period must be at least 60 seconds and must be a multiple of 60. The default value is 60.

*/ @property (nonatomic, strong) NSNumber *period; /** - *

The time stamp to use for determining the first datapoint to return. The value specified is inclusive; results include datapoints with the time stamp specified.

The specified start time is rounded down to the nearest value. Datapoints are returned for start times up to two weeks in the past. Specified start times that are more than two weeks in the past will not return datapoints for metrics that are older than two weeks.

Data that is timestamped 24 hours or more in the past may take in excess of 48 hours to become available from submission time using GetMetricStatistics.

+ *

The time stamp to use for determining the first datapoint to return. The value specified is inclusive; results include datapoints with the time stamp specified.

*/ @property (nonatomic, strong) NSDate *startTime; /** - *

The metric statistics to return. For information about specific statistics returned by GetMetricStatistics, go to Statistics in the Amazon CloudWatch Developer Guide.

Valid Values: Average | Sum | SampleCount | Maximum | Minimum

+ *

The metric statistics to return. For information about specific statistics returned by GetMetricStatistics, go to Statistics in the Amazon CloudWatch Developer Guide.

Valid Values: Average | Sum | SampleCount | Maximum | Minimum

*/ @property (nonatomic, strong) NSArray *statistics; /** - *

The unit for the metric.

+ *

The unit for the metric.

*/ @property (nonatomic, assign) AWSCloudWatchStandardUnit unit; @end /** - *

The output for the GetMetricStatistics action.

+ *

The output for the GetMetricStatistics action.

*/ -@interface AWSCloudWatchGetMetricStatisticsOutput : AZModel +@interface AWSCloudWatchGetMetricStatisticsOutput : AWSModel /** - *

The datapoints for the specified metric.

+ *

The datapoints for the specified metric.

*/ @property (nonatomic, strong) NSArray *datapoints; /** - *

A label describing the specified metric.

+ *

A label describing the specified metric.

*/ @property (nonatomic, strong) NSString *label; @@ -490,215 +490,215 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

A list of dimensions to filter against.

+ *

A list of dimensions to filter against.

*/ @property (nonatomic, strong) NSArray *dimensions; /** - *

The name of the metric to filter against.

+ *

The name of the metric to filter against.

*/ @property (nonatomic, strong) NSString *metricName; /** - *

The namespace to filter against.

+ *

The namespace to filter against.

*/ @property (nonatomic, strong) NSString *namespace; /** - *

The token returned by a previous call to indicate that there is more data available.

+ *

The token returned by a previous call to indicate that there is more data available.

*/ @property (nonatomic, strong) NSString *nextToken; @end /** - *

The output for the ListMetrics action.

+ *

The output for the ListMetrics action.

*/ -@interface AWSCloudWatchListMetricsOutput : AZModel +@interface AWSCloudWatchListMetricsOutput : AWSModel /** - *

A list of metrics used to generate statistics for an AWS account.

+ *

A list of metrics used to generate statistics for an AWS account.

*/ @property (nonatomic, strong) NSArray *metrics; /** - *

A string that marks the start of the next batch of returned results.

+ *

A string that marks the start of the next batch of returned results.

*/ @property (nonatomic, strong) NSString *nextToken; @end /** - *

The Metric data type contains information about a specific metric. If you call ListMetrics, Amazon CloudWatch returns information contained by this data type.

The example in the Examples section publishes two metrics named buffers and latency. Both metrics are in the examples namespace. Both metrics have two dimensions, InstanceID and InstanceType.

+ *

The Metric data type contains information about a specific metric. If you call ListMetrics, Amazon CloudWatch returns information contained by this data type.

The example in the Examples section publishes two metrics named buffers and latency. Both metrics are in the examples namespace. Both metrics have two dimensions, InstanceID and InstanceType.

*/ -@interface AWSCloudWatchMetric : AZModel +@interface AWSCloudWatchMetric : AWSModel /** - *

A list of dimensions associated with the metric.

+ *

A list of dimensions associated with the metric.

*/ @property (nonatomic, strong) NSArray *dimensions; /** - *

The name of the metric.

+ *

The name of the metric.

*/ @property (nonatomic, strong) NSString *metricName; /** - *

The namespace of the metric.

+ *

The namespace of the metric.

*/ @property (nonatomic, strong) NSString *namespace; @end /** - *

The MetricAlarm data type represents an alarm. You can use PutMetricAlarm to create or update an alarm.

+ *

The MetricAlarm data type represents an alarm. You can use PutMetricAlarm to create or update an alarm.

*/ -@interface AWSCloudWatchMetricAlarm : AZModel +@interface AWSCloudWatchMetricAlarm : AWSModel /** - *

Indicates whether actions should be executed during any changes to the alarm's state.

+ *

Indicates whether actions should be executed during any changes to the alarm's state.

*/ @property (nonatomic, strong) NSNumber *actionsEnabled; /** - *

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

+ *

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

*/ @property (nonatomic, strong) NSArray *alarmActions; /** - *

The Amazon Resource Name (ARN) of the alarm.

+ *

The Amazon Resource Name (ARN) of the alarm.

*/ @property (nonatomic, strong) NSString *alarmArn; /** - *

The time stamp of the last update to the alarm configuration. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

+ *

The time stamp of the last update to the alarm configuration. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

*/ @property (nonatomic, strong) NSDate *alarmConfigurationUpdatedTimestamp; /** - *

The description for the alarm.

+ *

The description for the alarm.

*/ @property (nonatomic, strong) NSString *alarmDescription; /** - *

The name of the alarm.

+ *

The name of the alarm.

*/ @property (nonatomic, strong) NSString *alarmName; /** - *

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

+ *

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

*/ @property (nonatomic, assign) AWSCloudWatchComparisonOperator comparisonOperator; /** - *

The list of dimensions associated with the alarm's associated metric.

+ *

The list of dimensions associated with the alarm's associated metric.

*/ @property (nonatomic, strong) NSArray *dimensions; /** - *

The number of periods over which data is compared to the specified threshold.

+ *

The number of periods over which data is compared to the specified threshold.

*/ @property (nonatomic, strong) NSNumber *evaluationPeriods; /** - *

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic or triggering an Auto Scaling policy.

The current WSDL lists this attribute as UnknownActions. + *

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic or triggering an Auto Scaling policy.

The current WSDL lists this attribute as UnknownActions. */ @property (nonatomic, strong) NSArray *insufficientDataActions; /** - *

The name of the alarm's metric.

+ *

The name of the alarm's metric.

*/ @property (nonatomic, strong) NSString *metricName; /** - *

The namespace of alarm's associated metric.

+ *

The namespace of alarm's associated metric.

*/ @property (nonatomic, strong) NSString *namespace; /** - *

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

+ *

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

*/ @property (nonatomic, strong) NSArray *OKActions; /** - *

The period in seconds over which the statistic is applied.

+ *

The period in seconds over which the statistic is applied.

*/ @property (nonatomic, strong) NSNumber *period; /** - *

A human-readable explanation for the alarm's state.

+ *

A human-readable explanation for the alarm's state.

*/ @property (nonatomic, strong) NSString *stateReason; /** - *

An explanation for the alarm's state in machine-readable JSON format

+ *

An explanation for the alarm's state in machine-readable JSON format

*/ @property (nonatomic, strong) NSString *stateReasonData; /** - *

The time stamp of the last update to the alarm's state. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

+ *

The time stamp of the last update to the alarm's state. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

*/ @property (nonatomic, strong) NSDate *stateUpdatedTimestamp; /** - *

The state value for the alarm.

+ *

The state value for the alarm.

*/ @property (nonatomic, assign) AWSCloudWatchStateValue stateValue; /** - *

The statistic to apply to the alarm's associated metric.

+ *

The statistic to apply to the alarm's associated metric.

*/ @property (nonatomic, assign) AWSCloudWatchStatistic statistic; /** - *

The value against which the specified statistic is compared.

+ *

The value against which the specified statistic is compared.

*/ @property (nonatomic, strong) NSNumber *threshold; /** - *

The unit of the alarm's associated metric.

+ *

The unit of the alarm's associated metric.

*/ @property (nonatomic, assign) AWSCloudWatchStandardUnit unit; @end /** - *

The MetricDatum data type encapsulates the information sent with PutMetricData to either create a new metric or add new values to be aggregated into an existing metric.

+ *

The MetricDatum data type encapsulates the information sent with PutMetricData to either create a new metric or add new values to be aggregated into an existing metric.

* Required parameters: [MetricName] */ -@interface AWSCloudWatchMetricDatum : AZModel +@interface AWSCloudWatchMetricDatum : AWSModel /** - *

A list of dimensions associated with the metric. Note, when using the Dimensions value in a query, you need to append .member.N to it (e.g., Dimensions.member.N).

+ *

A list of dimensions associated with the metric. Note, when using the Dimensions value in a query, you need to append .member.N to it (e.g., Dimensions.member.N).

*/ @property (nonatomic, strong) NSArray *dimensions; /** - *

The name of the metric.

+ *

The name of the metric.

*/ @property (nonatomic, strong) NSString *metricName; /** - *

A set of statistical values describing the metric.

+ *

A set of statistical values describing the metric.

*/ @property (nonatomic, strong) AWSCloudWatchStatisticSet *statisticValues; /** - *

The time stamp used for the metric. If not specified, the default value is set to the time the metric data was received. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

+ *

The time stamp used for the metric. If not specified, the default value is set to the time the metric data was received. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

*/ @property (nonatomic, strong) NSDate *timestamp; /** - *

The unit of the metric.

+ *

The unit of the metric.

*/ @property (nonatomic, assign) AWSCloudWatchStandardUnit unit; /** - *

The value for the metric.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated. + *

The value for the metric.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated. */ @property (nonatomic, strong) NSNumber *value; @@ -708,77 +708,77 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

Indicates whether or not actions should be executed during any changes to the alarm's state.

+ *

Indicates whether or not actions should be executed during any changes to the alarm's state.

*/ @property (nonatomic, strong) NSNumber *actionsEnabled; /** - *

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

+ *

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

*/ @property (nonatomic, strong) NSArray *alarmActions; /** - *

The description for the alarm.

+ *

The description for the alarm.

*/ @property (nonatomic, strong) NSString *alarmDescription; /** - *

The descriptive name for the alarm.This name must be unique within the user's AWS account

+ *

The descriptive name for the alarm. This name must be unique within the user's AWS account

*/ @property (nonatomic, strong) NSString *alarmName; /** - *

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

+ *

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

*/ @property (nonatomic, assign) AWSCloudWatchComparisonOperator comparisonOperator; /** - *

The dimensions for the alarm's associated metric.

+ *

The dimensions for the alarm's associated metric.

*/ @property (nonatomic, strong) NSArray *dimensions; /** - *

The number of periods over which data is compared to the specified threshold.

+ *

The number of periods over which data is compared to the specified threshold.

*/ @property (nonatomic, strong) NSNumber *evaluationPeriods; /** - *

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

+ *

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

*/ @property (nonatomic, strong) NSArray *insufficientDataActions; /** - *

The name for the alarm's associated metric.

+ *

The name for the alarm's associated metric.

*/ @property (nonatomic, strong) NSString *metricName; /** - *

The namespace for the alarm's associated metric.

+ *

The namespace for the alarm's associated metric.

*/ @property (nonatomic, strong) NSString *namespace; /** - *

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

+ *

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

*/ @property (nonatomic, strong) NSArray *OKActions; /** - *

The period in seconds over which the specified statistic is applied.

+ *

The period in seconds over which the specified statistic is applied.

*/ @property (nonatomic, strong) NSNumber *period; /** - *

The statistic to apply to the alarm's associated metric.

+ *

The statistic to apply to the alarm's associated metric.

*/ @property (nonatomic, assign) AWSCloudWatchStatistic statistic; /** - *

The value against which the specified statistic is compared.

+ *

The value against which the specified statistic is compared.

*/ @property (nonatomic, strong) NSNumber *threshold; /** - *

The unit for the alarm's associated metric.

+ *

The unit for the alarm's associated metric.

*/ @property (nonatomic, assign) AWSCloudWatchStandardUnit unit; @@ -788,12 +788,12 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

A list of data describing the metric.

+ *

A list of data describing the metric.

*/ @property (nonatomic, strong) NSArray *metricData; /** - *

The namespace for the metric data.

You cannot specify a namespace that begins with "AWS/". Namespaces that begin with "AWS/" are reserved for other Amazon Web Services products that send metrics to Amazon CloudWatch. + *

The namespace for the metric data.

*/ @property (nonatomic, strong) NSString *namespace; @@ -803,51 +803,51 @@ typedef NS_ENUM(NSInteger, AWSCloudWatchStatistic) { /** - *

The descriptive name for the alarm.This name must be unique within the user's AWS account. The maximum length is 255 characters.

+ *

The descriptive name for the alarm. This name must be unique within the user's AWS account. The maximum length is 255 characters.

*/ @property (nonatomic, strong) NSString *alarmName; /** - *

The reason that this alarm is set to this specific state (in human-readable text format)

+ *

The reason that this alarm is set to this specific state (in human-readable text format)

*/ @property (nonatomic, strong) NSString *stateReason; /** - *

The reason that this alarm is set to this specific state (in machine-readable JSON format)

+ *

The reason that this alarm is set to this specific state (in machine-readable JSON format)

*/ @property (nonatomic, strong) NSString *stateReasonData; /** - *

The value of the state.

+ *

The value of the state.

*/ @property (nonatomic, assign) AWSCloudWatchStateValue stateValue; @end /** - *

The StatisticSet data type describes the StatisticValues component of MetricDatum, and represents a set of statistics that describes a specific metric.

+ *

The StatisticSet data type describes the StatisticValues component of MetricDatum, and represents a set of statistics that describes a specific metric.

* Required parameters: [SampleCount, Sum, Minimum, Maximum] */ -@interface AWSCloudWatchStatisticSet : AZModel +@interface AWSCloudWatchStatisticSet : AWSModel /** - *

The maximum value of the sample set.

+ *

The maximum value of the sample set.

*/ @property (nonatomic, strong) NSNumber *maximum; /** - *

The minimum value of the sample set.

+ *

The minimum value of the sample set.

*/ @property (nonatomic, strong) NSNumber *minimum; /** - *

The number of samples used for the statistic set.

+ *

The number of samples used for the statistic set.

*/ @property (nonatomic, strong) NSNumber *sampleCount; /** - *

The sum of values for the sample set.

+ *

The sum of values for the sample set.

*/ @property (nonatomic, strong) NSNumber *sum; diff --git a/CloudWatch/AWSCloudWatchModel.m b/CloudWatch/AWSCloudWatchModel.m index 18f59bb86a0..c0e2c1f3497 100644 --- a/CloudWatch/AWSCloudWatchModel.m +++ b/CloudWatch/AWSCloudWatchModel.m @@ -14,7 +14,7 @@ */ #import "AWSCloudWatchModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSCloudWatchErrorDomain = @"com.amazonaws.AWSCloudWatchErrorDomain"; @@ -59,9 +59,9 @@ + (NSValueTransformer *)historyItemTypeJSONTransformer { + (NSValueTransformer *)timestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -83,9 +83,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)timestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -263,9 +263,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)endDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -298,9 +298,9 @@ + (NSValueTransformer *)historyItemTypeJSONTransformer { + (NSValueTransformer *)startDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -658,17 +658,17 @@ + (NSValueTransformer *)dimensionsJSONTransformer { + (NSValueTransformer *)endTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -914,9 +914,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)alarmConfigurationUpdatedTimestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -958,9 +958,9 @@ + (NSValueTransformer *)dimensionsJSONTransformer { + (NSValueTransformer *)stateUpdatedTimestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1200,9 +1200,9 @@ + (NSValueTransformer *)statisticValuesJSONTransformer { + (NSValueTransformer *)timestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } diff --git a/CloudWatch/Resources/monitoring-2010-08-01.json b/CloudWatch/Resources/monitoring-2010-08-01.json index 9b05411cbd0..6a365fcbef9 100644 --- a/CloudWatch/Resources/monitoring-2010-08-01.json +++ b/CloudWatch/Resources/monitoring-2010-08-01.json @@ -8,7 +8,7 @@ "xmlNamespace":"http://monitoring.amazonaws.com/doc/2010-08-01/", "protocol":"query" }, - "documentation":"

This is the Amazon CloudWatch API Reference. This guide provides detailed\n\t\t\tinformation about Amazon CloudWatch actions, data types, parameters, and\n\t\t\terrors. For detailed information about Amazon CloudWatch features and their associated API calls,\n\t\t\tgo to the Amazon CloudWatch Developer Guide.\n\t\t

\n\t\t

Amazon CloudWatch is a web service that enables you to publish, monitor, and manage various metrics,\n\t\t\tas well as configure alarm actions based on data from metrics. For more information about this product\n\t\t\tgo to http://aws.amazon.com/cloudwatch.\n\t\t

\n\n

\n\t\t\tFor information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch,\n\t\t\tgo to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference\n\t\t\tin the Amazon CloudWatch Developer Guide.\n\t\t

\n\n\t\t

Use the following links to get started using the Amazon CloudWatch API Reference:

\n\t\t
    \n\t\t\t
  • \nActions: An alphabetical list of all Amazon CloudWatch actions.
  • \n\t\t\t
  • \nData Types: An alphabetical list of all Amazon CloudWatch data types.
  • \n\t\t\t
  • \nCommon Parameters: Parameters that all Query actions can use.
  • \n\t\t\t
  • \nCommon Errors: Client and server errors that all actions can return.
  • \n\t\t\t
  • \nRegions and Endpoints: Itemized regions and endpoints for all AWS products.
  • \n\t\t\t
  • \nWSDL Location: http://monitoring.amazonaws.com/doc/2010-08-01/CloudWatch.wsdl
  • \n\t\t
\n\t\t\n\t\t\n\t\t

In addition to using the Amazon CloudWatch API, you can also use the following SDKs and third-party libraries to\n\t\t\taccess Amazon CloudWatch programmatically.

\n\t\t\n\t\t\n\t\t\n\t\t

Developers in the AWS developer community also provide their\town libraries, which you can find at the following AWS developer\n\t\t\tcenters:

\n\t\t", + "documentation":"

This is the Amazon CloudWatch API Reference. This guide provides detailed information about Amazon CloudWatch actions, data types, parameters, and errors. For detailed information about Amazon CloudWatch features and their associated API calls, go to the Amazon CloudWatch Developer Guide.

Amazon CloudWatch is a web service that enables you to publish, monitor, and manage various metrics, as well as configure alarm actions based on data from metrics. For more information about this product go to http://aws.amazon.com/cloudwatch.

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

Use the following links to get started using the Amazon CloudWatch API Reference:

  • Actions: An alphabetical list of all Amazon CloudWatch actions.
  • Data Types: An alphabetical list of all Amazon CloudWatch data types.
  • Common Parameters: Parameters that all Query actions can use.
  • Common Errors: Client and server errors that all actions can return.
  • Regions and Endpoints: Itemized regions and endpoints for all AWS products.
  • WSDL Location: http://monitoring.amazonaws.com/doc/2010-08-01/CloudWatch.wsdl

In addition to using the Amazon CloudWatch API, you can also use the following SDKs and third-party libraries to access Amazon CloudWatch programmatically.

Developers in the AWS developer community also provide their own libraries, which you can find at the following AWS developer centers:

", "operations":{ "DeleteAlarms":{ "name":"DeleteAlarms", @@ -26,10 +26,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe named resource does not exist.\n\t\t

" + "documentation":"

The named resource does not exist.

" } ], - "documentation":"

\n\t\tDeletes all specified alarms.\n\t\tIn the event of an error, no alarms are deleted.\n\t\t

" + "documentation":"

Deletes all specified alarms. In the event of an error, no alarms are deleted.

" }, "DescribeAlarmHistory":{ "name":"DescribeAlarmHistory", @@ -40,7 +40,7 @@ "input":{"shape":"DescribeAlarmHistoryInput"}, "output":{ "shape":"DescribeAlarmHistoryOutput", - "documentation":"

\n\t\tThe output for the DescribeAlarmHistory action.\n\t\t

", + "documentation":"

The output for the DescribeAlarmHistory action.

", "resultWrapper":"DescribeAlarmHistoryResult" }, "errors":[ @@ -52,10 +52,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe next token specified is invalid.\n\t\t

" + "documentation":"

The next token specified is invalid.

" } ], - "documentation":"

\n\t\tRetrieves history for the specified alarm.\n\t\tFilter alarms by date range or item type.\n\t\tIf an alarm name is not specified,\n\t\tAmazon CloudWatch returns histories for\n\t\tall of the owner's alarms.\n\t\t

\n\t\t\n\t\tAmazon CloudWatch retains the history of an alarm\n\t\tfor two weeks, whether or not you delete the alarm.\n\t\t" + "documentation":"

Retrieves history for the specified alarm. Filter alarms by date range or item type. If an alarm name is not specified, Amazon CloudWatch returns histories for all of the owner's alarms.

" }, "DescribeAlarms":{ "name":"DescribeAlarms", @@ -66,7 +66,7 @@ "input":{"shape":"DescribeAlarmsInput"}, "output":{ "shape":"DescribeAlarmsOutput", - "documentation":"

\n\t\tThe output for the DescribeAlarms action.\n\t\t

", + "documentation":"

The output for the DescribeAlarms action.

", "resultWrapper":"DescribeAlarmsResult" }, "errors":[ @@ -78,10 +78,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe next token specified is invalid.\n\t\t

" + "documentation":"

The next token specified is invalid.

" } ], - "documentation":"

\n\t\tRetrieves alarms with the specified names.\n\t\tIf no name is specified, all alarms for the user are returned.\n\t\tAlarms can be retrieved by using only a prefix for the alarm name,\n\t\tthe alarm state, or a prefix for any action.\n\t\t

" + "documentation":"

Retrieves alarms with the specified names. If no name is specified, all alarms for the user are returned. Alarms can be retrieved by using only a prefix for the alarm name, the alarm state, or a prefix for any action.

" }, "DescribeAlarmsForMetric":{ "name":"DescribeAlarmsForMetric", @@ -92,10 +92,10 @@ "input":{"shape":"DescribeAlarmsForMetricInput"}, "output":{ "shape":"DescribeAlarmsForMetricOutput", - "documentation":"

\n\t\tThe output for the DescribeAlarmsForMetric action.\n\t\t

", + "documentation":"

The output for the DescribeAlarmsForMetric action.

", "resultWrapper":"DescribeAlarmsForMetricResult" }, - "documentation":"

\n\t\tRetrieves all alarms for a single metric.\n\t\tSpecify a statistic, period, or unit to filter\n\t\tthe set of alarms further.\n\t\t

" + "documentation":"

Retrieves all alarms for a single metric. Specify a statistic, period, or unit to filter the set of alarms further.

" }, "DisableAlarmActions":{ "name":"DisableAlarmActions", @@ -105,9 +105,9 @@ }, "input":{ "shape":"DisableAlarmActionsInput", - "documentation":"

\n\n\t\t

" + "documentation":"

" }, - "documentation":"

\n\t\tDisables actions for the specified alarms.\n\t\tWhen an alarm's actions are disabled the\n\t\talarm's state may change, but none of the\n\t\talarm's actions will execute.\n\t\t

" + "documentation":"

Disables actions for the specified alarms. When an alarm's actions are disabled the alarm's state may change, but none of the alarm's actions will execute.

" }, "EnableAlarmActions":{ "name":"EnableAlarmActions", @@ -116,7 +116,7 @@ "requestUri":"/" }, "input":{"shape":"EnableAlarmActionsInput"}, - "documentation":"

\n\t\tEnables actions for the specified alarms.\n\t\t

" + "documentation":"

Enables actions for the specified alarms.

" }, "GetMetricStatistics":{ "name":"GetMetricStatistics", @@ -127,7 +127,7 @@ "input":{"shape":"GetMetricStatisticsInput"}, "output":{ "shape":"GetMetricStatisticsOutput", - "documentation":"

\n\t\tThe output for the GetMetricStatistics action.\n\t\t

", + "documentation":"

The output for the GetMetricStatistics action.

", "resultWrapper":"GetMetricStatisticsResult" }, "errors":[ @@ -139,7 +139,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tBad or out-of-range value was supplied for the input\n\t\tparameter.\n\t\t

" + "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" }, { "shape":"MissingRequiredParameterException", @@ -149,7 +149,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tAn input parameter that is mandatory for processing\n\t\tthe request is not supplied.\n\t\t

" + "documentation":"

An input parameter that is mandatory for processing the request is not supplied.

" }, { "shape":"InvalidParameterCombinationException", @@ -159,7 +159,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tParameters that must not be used together were\n\t\tused together.\n\t\t

" + "documentation":"

Parameters that must not be used together were used together.

" }, { "shape":"InternalServiceFault", @@ -168,11 +168,11 @@ "httpStatusCode":500 }, "exception":true, - "documentation":"

\n\t\tIndicates that the request processing has\n\t\tfailed due to some unknown error, exception, or failure.\n\t\t

", + "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", "xmlOrder":["Message"] } ], - "documentation":"

\n\t\tGets statistics for the specified metric.\n\t

\n\t\t

\n\t\t\tThe maximum number of data points returned from a single\n\t\t\tGetMetricStatistics request is 1,440, wereas the maximum number of data points\n\t\t\tthat can be queried is 50,850. If you make a request that generates more than 1,440 data points,\n\t\t\tAmazon CloudWatch returns an error. In such a case, you can alter the request by narrowing the specified\n\t\t\ttime range or increasing the specified period. Alternatively, you can make multiple requests across adjacent time ranges.\n\t\t

\n\t\t

\n\t\t\tAmazon CloudWatch aggregates data points based on the\n\t\t\tlength of the period that you specify. For example, if\n\t\t\tyou request statistics with a one-minute granularity, Amazon CloudWatch aggregates data points\n\t\t\twith time stamps that fall within the same one-minute period. In such a case, the data points queried can greatly outnumber the data points returned.\n\t\t

\n\n\t\t

\n\t\tThe following examples show various statistics allowed by the data point query maximum of 50,850\n\t\twhen you call GetMetricStatistics on Amazon EC2 instances with\n\t\tdetailed (one-minute) monitoring enabled:\n\t\t

\n\t\t
    \n\t\t\t
  • Statistics for up to 400 instances for a span of one hour
  • \n\t\t\t
  • Statistics for up to 35 instances over a span of 24 hours
  • \n\t\t\t
  • Statistics for up to 2 instances over a span of 2 weeks
  • \n\t\t
\n\t\t

\n\t\t\tFor information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch,\n\t\t\tgo to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference\n\t\t\tin the Amazon CloudWatch Developer Guide.\n\t\t

" + "documentation":"

Gets statistics for the specified metric.

The maximum number of data points returned from a single GetMetricStatistics request is 1,440, wereas the maximum number of data points that can be queried is 50,850. If you make a request that generates more than 1,440 data points, Amazon CloudWatch returns an error. In such a case, you can alter the request by narrowing the specified time range or increasing the specified period. Alternatively, you can make multiple requests across adjacent time ranges.

Amazon CloudWatch aggregates data points based on the length of the period that you specify. For example, if you request statistics with a one-minute granularity, Amazon CloudWatch aggregates data points with time stamps that fall within the same one-minute period. In such a case, the data points queried can greatly outnumber the data points returned.

The following examples show various statistics allowed by the data point query maximum of 50,850 when you call GetMetricStatistics on Amazon EC2 instances with detailed (one-minute) monitoring enabled:

  • Statistics for up to 400 instances for a span of one hour
  • Statistics for up to 35 instances over a span of 24 hours
  • Statistics for up to 2 instances over a span of 2 weeks

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

" }, "ListMetrics":{ "name":"ListMetrics", @@ -183,7 +183,7 @@ "input":{"shape":"ListMetricsInput"}, "output":{ "shape":"ListMetricsOutput", - "documentation":"

\n\t\tThe output for the ListMetrics action.\n\t\t

", + "documentation":"

The output for the ListMetrics action.

", "xmlOrder":[ "Metrics", "NextToken" @@ -198,7 +198,7 @@ "httpStatusCode":500 }, "exception":true, - "documentation":"

\n\t\tIndicates that the request processing has\n\t\tfailed due to some unknown error, exception, or failure.\n\t\t

", + "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", "xmlOrder":["Message"] }, { @@ -209,10 +209,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tBad or out-of-range value was supplied for the input\n\t\tparameter.\n\t\t

" + "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" } ], - "documentation":"

\n\t\tReturns a list of valid metrics stored for the AWS account owner.\n\t\tReturned metrics can be used with GetMetricStatistics\n\t\tto obtain statistical data for a given metric.\n\t\t

\n\t\t\n\t\tUp to 500 results are returned for any one call. To retrieve further\n\t\tresults, use returned NextToken values with subsequent\n\t\tListMetrics operations.\n\t\t\n\t\t\n\t\t\tIf you create a metric with the PutMetricData action,\n\t\t\tallow up to fifteen minutes for the metric to appear in calls\n\t\t\tto the ListMetrics action. Statistics about the metric, \n\t\t\thowever, are available sooner using GetMetricStatistics.\n\t\t" + "documentation":"

Returns a list of valid metrics stored for the AWS account owner. Returned metrics can be used with GetMetricStatistics to obtain statistical data for a given metric.

" }, "PutMetricAlarm":{ "name":"PutMetricAlarm", @@ -230,10 +230,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe quota for alarms for this customer has\n\t\talready been reached.\n\t\t

" + "documentation":"

The quota for alarms for this customer has already been reached.

" } ], - "documentation":"

\n\t\tCreates or updates an alarm and associates it\n\t\twith the specified Amazon CloudWatch metric. Optionally,\n\t\tthis operation can associate one or more Amazon Simple\n\t\tNotification Service resources with the alarm.\n\t\t

\n\t\t

\n\t\tWhen this operation creates an alarm, the alarm state is immediately\n\t\tset to INSUFFICIENT_DATA. The alarm is evaluated and its\n\t\tStateValue is set appropriately. Any actions associated\n\t\twith the StateValue is then executed.\n\t\t

\n\t\t\n\t\tWhen updating an existing alarm, its StateValue\n\t\tis left unchanged.\n\t\t" + "documentation":"

Creates or updates an alarm and associates it with the specified Amazon CloudWatch metric. Optionally, this operation can associate one or more Amazon Simple Notification Service resources with the alarm.

When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA. The alarm is evaluated and its StateValue is set appropriately. Any actions associated with the StateValue is then executed.

" }, "PutMetricData":{ "name":"PutMetricData", @@ -251,7 +251,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tBad or out-of-range value was supplied for the input\n\t\tparameter.\n\t\t

" + "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" }, { "shape":"MissingRequiredParameterException", @@ -261,7 +261,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tAn input parameter that is mandatory for processing\n\t\tthe request is not supplied.\n\t\t

" + "documentation":"

An input parameter that is mandatory for processing the request is not supplied.

" }, { "shape":"InvalidParameterCombinationException", @@ -271,7 +271,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tParameters that must not be used together were\n\t\tused together.\n\t\t

" + "documentation":"

Parameters that must not be used together were used together.

" }, { "shape":"InternalServiceFault", @@ -280,11 +280,11 @@ "httpStatusCode":500 }, "exception":true, - "documentation":"

\n\t\tIndicates that the request processing has\n\t\tfailed due to some unknown error, exception, or failure.\n\t\t

", + "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", "xmlOrder":["Message"] } ], - "documentation":"

\n\t\tPublishes metric data points to Amazon CloudWatch. Amazon Cloudwatch\n\t\tassociates the data points with the specified metric. If the specified metric does not exist,\n\t\tAmazon CloudWatch creates the metric. It can take up to fifteen minutes for a new metric to appear\n\t\tin calls to the ListMetrics action.

\n\n\t\t

\n\t\t\tThe size of a PutMetricData request is limited to 8 KB\n\t\t\tfor HTTP GET requests and 40 KB for HTTP POST requests.\n\t\t

\n\t\t\n\t\t\tAlthough the Value parameter accepts numbers of type Double,\n\t\t\tAmazon CloudWatch truncates values with very large exponents.\n\t\t\tValues with base-10 exponents greater than 126 (1 x 10^126) are truncated.\n\t\t\tLikewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated.\n\t\t\n\t\t\n\t\t

Data that is timestamped 24 hours or more in the past may take in excess of 48 hours to become\n\t\t\tavailable from submission time using GetMetricStatistics.

\n\n\t\t\n\t\t\t\nThe following example puts data for a single metric containing one dimension:\n\nhttps://monitoring.amazonaws.com/doc/2010-08-01/\n?Action=PutMetricData\n&Version=2010-08-01\n&Namespace=TestNamespace\n&MetricData.member.1.MetricName=buffers\n&MetricData.member.1.Unit=Bytes\n&MetricData.member.1.Value=231434333\n&MetricData.member.1.Dimensions.member.1.Name=InstanceType\n&MetricData.member.1.Dimensions.member.1.Value=m1.small\n&AUTHPARAMS\n\n\nThe following example puts data for a single metric containing two dimensions:\n\nhttps://monitoring.amazonaws.com/doc/2010-08-01/\n?Action=PutMetricData\n&Version=2010-08-01\n&Namespace=TestNamespace\n&MetricData.member.1.MetricName=buffers\n&MetricData.member.1.Unit=Bytes\n&MetricData.member.1.Value=231434333\n&MetricData.member.1.Dimensions.member.1.Name=InstanceID\n&MetricData.member.1.Dimensions.member.1.Value=i-aaba32d4\n&MetricData.member.1.Dimensions.member.2.Name=InstanceType\n&MetricData.member.1.Dimensions.member.2.Value=m1.small\n&AUTHPARAMS\n\n\nThe following example puts data for two metrics, each with two dimensions:\n\nhttps://monitoring.amazonaws.com/doc/2010-08-01/\n?Action=PutMetricData\n&Version=2010-08-01\n&Namespace=TestNamespace\n&MetricData.member.1.MetricName=buffers\n&MetricData.member.1.Unit=Bytes\n&MetricData.member.1.Value=231434333\n&MetricData.member.1.Dimensions.member.1.Name=InstanceID\n&MetricData.member.1.Dimensions.member.1.Value=i-aaba32d4\n&MetricData.member.1.Dimensions.member.2.Name=InstanceType\n&MetricData.member.1.Dimensions.member.2.Value=m1.small\n&MetricData.member.2.MetricName=latency\n&MetricData.member.2.Unit=Milliseconds\n&MetricData.member.2.Value=23\n&MetricData.member.2.Dimensions.member.1.Name=InstanceID\n&MetricData.member.2.Dimensions.member.1.Value=i-aaba32d4\n&MetricData.member.2.Dimensions.member.2.Name=InstanceType\n&MetricData.member.2.Dimensions.member.2.Value=m1.small\n&AUTHPARAMS\n\t\t\t\n\t\t\t\n\n \n e16fc4d3-9a04-11e0-9362-093a1cae5385\n \n \n\t\t\t\n\t\t" + "documentation":"

Publishes metric data points to Amazon CloudWatch. Amazon Cloudwatch associates the data points with the specified metric. If the specified metric does not exist, Amazon CloudWatch creates the metric. It can take up to fifteen minutes for a new metric to appear in calls to the ListMetrics action.

The size of a PutMetricData request is limited to 8 KB for HTTP GET requests and 40 KB for HTTP POST requests.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated.

Data that is timestamped 24 hours or more in the past may take in excess of 48 hours to become available from submission time using GetMetricStatistics.

" }, "SetAlarmState":{ "name":"SetAlarmState", @@ -302,7 +302,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe named resource does not exist.\n\t\t

" + "documentation":"

The named resource does not exist.

" }, { "shape":"InvalidFormatFault", @@ -312,10 +312,10 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tData was not syntactically valid JSON.\n\t\t

" + "documentation":"

Data was not syntactically valid JSON.

" } ], - "documentation":"

\n\t\tTemporarily sets the state of an alarm.\n\t\tWhen the updated StateValue differs\n\t\tfrom the previous value, the action configured for\n\t\tthe appropriate state is invoked. This is not a\n\t\tpermanent change. The next periodic alarm check\n\t\t(in about a minute) will set the alarm to its actual state.\n\t\t

" + "documentation":"

Temporarily sets the state of an alarm. When the updated StateValue differs from the previous value, the action configured for the appropriate state is invoked. This is not a permanent change. The next periodic alarm check (in about a minute) will set the alarm to its actual state.

" } }, "shapes":{ @@ -340,26 +340,26 @@ "members":{ "AlarmName":{ "shape":"AlarmName", - "documentation":"

\n\t\tThe descriptive name for the alarm.\n\t\t

" + "documentation":"

The descriptive name for the alarm.

" }, "Timestamp":{ "shape":"Timestamp", - "documentation":"

\n\t\t\tThe time stamp for the alarm history item. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.\n\t\t

" + "documentation":"

The time stamp for the alarm history item. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" }, "HistoryItemType":{ "shape":"HistoryItemType", - "documentation":"

\n\t\tThe type of alarm history item.\n\t\t

" + "documentation":"

The type of alarm history item.

" }, "HistorySummary":{ "shape":"HistorySummary", - "documentation":"

\n\t\tA human-readable summary of the alarm history.\n\t\t

" + "documentation":"

A human-readable summary of the alarm history.

" }, "HistoryData":{ "shape":"HistoryData", - "documentation":"

\n\t\tMachine-readable data about the alarm in JSON format.\n\t\t

" + "documentation":"

Machine-readable data about the alarm in JSON format.

" } }, - "documentation":"

\n\t\t\tThe AlarmHistoryItem data type\n\t\t\tcontains descriptive information about\n\t\t\tthe history of a specific alarm.\n\t\t\tIf you call DescribeAlarmHistory,\n\t\t\tAmazon CloudWatch returns this data type as part of\n\t\t\tthe DescribeAlarmHistoryResult data type.\n\t\t

" + "documentation":"

The AlarmHistoryItem data type contains descriptive information about the history of a specific alarm. If you call DescribeAlarmHistory, Amazon CloudWatch returns this data type as part of the DescribeAlarmHistoryResult data type.

" }, "AlarmHistoryItems":{ "type":"list", @@ -395,34 +395,34 @@ "members":{ "Timestamp":{ "shape":"Timestamp", - "documentation":"

\n\t\t\tThe time stamp used for the datapoint. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.\n\t\t

" + "documentation":"

The time stamp used for the datapoint. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" }, "SampleCount":{ "shape":"DatapointValue", - "documentation":"

\n\t\tThe number of metric values that contributed to the aggregate value\n\t\tof this datapoint.\n\t\t

" + "documentation":"

The number of metric values that contributed to the aggregate value of this datapoint.

" }, "Average":{ "shape":"DatapointValue", - "documentation":"

\n\t\tThe average of metric values that correspond to the datapoint.\n\t\t

" + "documentation":"

The average of metric values that correspond to the datapoint.

" }, "Sum":{ "shape":"DatapointValue", - "documentation":"

\n\t\tThe sum of metric values used for the datapoint.\n\t\t

" + "documentation":"

The sum of metric values used for the datapoint.

" }, "Minimum":{ "shape":"DatapointValue", - "documentation":"

\n\t\tThe minimum metric value used for the datapoint.\n\t\t

" + "documentation":"

The minimum metric value used for the datapoint.

" }, "Maximum":{ "shape":"DatapointValue", - "documentation":"

\n\t\tThe maximum of the metric value used for the datapoint.\n\t\t

" + "documentation":"

The maximum of the metric value used for the datapoint.

" }, "Unit":{ "shape":"StandardUnit", - "documentation":"

\n\t\tThe standard unit used for the datapoint.\n\t\t

" + "documentation":"

The standard unit used for the datapoint.

" } }, - "documentation":"

\n\t\tThe Datapoint data type encapsulates the statistical data\n\t\tthat Amazon CloudWatch computes from metric data.\n\t\t

", + "documentation":"

The Datapoint data type encapsulates the statistical data that Amazon CloudWatch computes from metric data.

", "xmlOrder":[ "Timestamp", "SampleCount", @@ -444,7 +444,7 @@ "members":{ "AlarmNames":{ "shape":"AlarmNames", - "documentation":"

\n\t\tA list of alarms to be deleted.\n\t\t

" + "documentation":"

A list of alarms to be deleted.

" } } }, @@ -453,27 +453,27 @@ "members":{ "AlarmName":{ "shape":"AlarmName", - "documentation":"

\n\t\tThe name of the alarm.\n\t\t

" + "documentation":"

The name of the alarm.

" }, "HistoryItemType":{ "shape":"HistoryItemType", - "documentation":"

\n\t\tThe type of alarm histories to retrieve.\n\t\t

" + "documentation":"

The type of alarm histories to retrieve.

" }, "StartDate":{ "shape":"Timestamp", - "documentation":"

\n\t\tThe starting date to retrieve alarm history.\n\t\t

" + "documentation":"

The starting date to retrieve alarm history.

" }, "EndDate":{ "shape":"Timestamp", - "documentation":"

\n\t\tThe ending date to retrieve alarm history.\n\t\t

" + "documentation":"

The ending date to retrieve alarm history.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n\t\tThe maximum number of alarm history records to retrieve.\n\t\t

" + "documentation":"

The maximum number of alarm history records to retrieve.

" }, "NextToken":{ "shape":"NextToken", - "documentation":"

\n\t\tThe token returned by a previous call to indicate that there\n\t\tis more data available.\n\t\t

" + "documentation":"

The token returned by a previous call to indicate that there is more data available.

" } } }, @@ -482,14 +482,14 @@ "members":{ "AlarmHistoryItems":{ "shape":"AlarmHistoryItems", - "documentation":"

\n\t\tA list of alarm histories in JSON format.\n\t\t

" + "documentation":"

A list of alarm histories in JSON format.

" }, "NextToken":{ "shape":"NextToken", - "documentation":"

\n\t\tA string that marks the start of the next batch of returned results.\n\t\t

" + "documentation":"

A string that marks the start of the next batch of returned results.

" } }, - "documentation":"

\n\t\tThe output for the DescribeAlarmHistory action.\n\t\t

" + "documentation":"

The output for the DescribeAlarmHistory action.

" }, "DescribeAlarmsForMetricInput":{ "type":"structure", @@ -500,27 +500,27 @@ "members":{ "MetricName":{ "shape":"MetricName", - "documentation":"

\n\t\tThe name of the metric.\n\t\t

" + "documentation":"

The name of the metric.

" }, "Namespace":{ "shape":"Namespace", - "documentation":"

\n\t\tThe namespace of the metric.\n\t\t

" + "documentation":"

The namespace of the metric.

" }, "Statistic":{ "shape":"Statistic", - "documentation":"

\n\t\tThe statistic for the metric.\n\t\t

" + "documentation":"

The statistic for the metric.

" }, "Dimensions":{ "shape":"Dimensions", - "documentation":"

\n\t\tThe list of dimensions associated with the metric.\n\t\t

" + "documentation":"

The list of dimensions associated with the metric.

" }, "Period":{ "shape":"Period", - "documentation":"

\n\t\tThe period in seconds over which the statistic is applied.\n\t\t

" + "documentation":"

The period in seconds over which the statistic is applied.

" }, "Unit":{ "shape":"StandardUnit", - "documentation":"

\n\t\tThe unit for the metric.\n\t\t

" + "documentation":"

The unit for the metric.

" } } }, @@ -529,37 +529,37 @@ "members":{ "MetricAlarms":{ "shape":"MetricAlarms", - "documentation":"

\n\t\tA list of information for each alarm with the specified metric.\n\t\t

" + "documentation":"

A list of information for each alarm with the specified metric.

" } }, - "documentation":"

\n\t\tThe output for the DescribeAlarmsForMetric action.\n\t\t

" + "documentation":"

The output for the DescribeAlarmsForMetric action.

" }, "DescribeAlarmsInput":{ "type":"structure", "members":{ "AlarmNames":{ "shape":"AlarmNames", - "documentation":"

\n\t\tA list of alarm names to retrieve information for.\n\t\t

" + "documentation":"

A list of alarm names to retrieve information for.

" }, "AlarmNamePrefix":{ "shape":"AlarmNamePrefix", - "documentation":"

\n\t\tThe alarm name prefix. AlarmNames cannot\n\t\tbe specified if this parameter is specified.\n\t\t

" + "documentation":"

The alarm name prefix. AlarmNames cannot be specified if this parameter is specified.

" }, "StateValue":{ "shape":"StateValue", - "documentation":"

\n\t\tThe state value to be used in matching alarms.\n\t\t

" + "documentation":"

The state value to be used in matching alarms.

" }, "ActionPrefix":{ "shape":"ActionPrefix", - "documentation":"

\n\t\tThe action name prefix.\n\t\t

" + "documentation":"

The action name prefix.

" }, "MaxRecords":{ "shape":"MaxRecords", - "documentation":"

\n\t\tThe maximum number of alarm descriptions to retrieve.\n\t\t

" + "documentation":"

The maximum number of alarm descriptions to retrieve.

" }, "NextToken":{ "shape":"NextToken", - "documentation":"

\n\t\tThe token returned by a previous call to indicate that there\n\t\tis more data available.\n\t\t

" + "documentation":"

The token returned by a previous call to indicate that there is more data available.

" } } }, @@ -568,14 +568,14 @@ "members":{ "MetricAlarms":{ "shape":"MetricAlarms", - "documentation":"

\n\t\tA list of information for the specified alarms.\n\t\t

" + "documentation":"

A list of information for the specified alarms.

" }, "NextToken":{ "shape":"NextToken", - "documentation":"

\n\t\tA string that marks the start of the next batch of returned results.\n\t\t

" + "documentation":"

A string that marks the start of the next batch of returned results.

" } }, - "documentation":"

\n\t\tThe output for the DescribeAlarms action.\n\t\t

" + "documentation":"

The output for the DescribeAlarms action.

" }, "Dimension":{ "type":"structure", @@ -586,14 +586,14 @@ "members":{ "Name":{ "shape":"DimensionName", - "documentation":"

\n\t\tThe name of the dimension.\n\t\t

" + "documentation":"

The name of the dimension.

" }, "Value":{ "shape":"DimensionValue", - "documentation":"

\n\t\tThe value representing the dimension measurement\n\t\t

" + "documentation":"

The value representing the dimension measurement

" } }, - "documentation":"

\n\t\tThe Dimension data type further expands on the\n\t\tidentity of a metric using a Name, Value pair.\n\t\t

\n\t\t

For examples that use one or more dimensions, see PutMetricData.

", + "documentation":"

The Dimension data type further expands on the identity of a metric using a Name, Value pair.

For examples that use one or more dimensions, see PutMetricData.

", "xmlOrder":[ "Name", "Value" @@ -605,14 +605,14 @@ "members":{ "Name":{ "shape":"DimensionName", - "documentation":"

\n\t\tThe dimension name to be matched.\n\t\t

" + "documentation":"

The dimension name to be matched.

" }, "Value":{ "shape":"DimensionValue", - "documentation":"

\n\t\tThe value of the dimension to be matched.\n\t\t

\n\t\t\n\t\tSpecifying a Name without specifying a\n\t\tValue returns all values associated\n\t\twith that Name.\n\t\t" + "documentation":"

The value of the dimension to be matched.

" } }, - "documentation":"

\n\t\tThe DimensionFilter data type is used to filter\n\t\tListMetrics results.\n\t\t

" + "documentation":"

The DimensionFilter data type is used to filter ListMetrics results.

" }, "DimensionFilters":{ "type":"list", @@ -640,10 +640,10 @@ "members":{ "AlarmNames":{ "shape":"AlarmNames", - "documentation":"

\n\t\tThe names of the alarms to disable actions for.\n\t\t

" + "documentation":"

The names of the alarms to disable actions for.

" } }, - "documentation":"

\n\n\t\t

" + "documentation":"

" }, "EnableAlarmActionsInput":{ "type":"structure", @@ -651,7 +651,7 @@ "members":{ "AlarmNames":{ "shape":"AlarmNames", - "documentation":"

\n\t\tThe names of the alarms to enable actions for.\n\t\t

" + "documentation":"

The names of the alarms to enable actions for.

" } } }, @@ -678,35 +678,35 @@ "members":{ "Namespace":{ "shape":"Namespace", - "documentation":"

\n\t\tThe namespace of the metric, with or without spaces.\n\t\t

" + "documentation":"

The namespace of the metric, with or without spaces.

" }, "MetricName":{ "shape":"MetricName", - "documentation":"

\n\t\tThe name of the metric, with or without spaces.\n\t\t

" + "documentation":"

The name of the metric, with or without spaces.

" }, "Dimensions":{ "shape":"Dimensions", - "documentation":"

\n\t\tA list of dimensions describing qualities of the metric.\n\t\t

" + "documentation":"

A list of dimensions describing qualities of the metric.

" }, "StartTime":{ "shape":"Timestamp", - "documentation":"

\n\t\tThe time stamp to use for determining the first datapoint to return.\n\t\tThe value specified is inclusive; results include datapoints\n\t\twith the time stamp specified.\n\t\t

\n\t\t\n\t\tThe specified start time is rounded down to the nearest value.\n\t\tDatapoints are returned for start times up to two weeks in the past.\n\t\tSpecified start times that are more than two weeks in the past\n\t\twill not return datapoints for metrics that are\n\t\tolder than two weeks.\n\t\t\n\t\t

Data that is timestamped 24 hours or more in the past may take in excess of 48 hours to become available from submission time using GetMetricStatistics.

\n\t\t\t\n\t\t
" + "documentation":"

The time stamp to use for determining the first datapoint to return. The value specified is inclusive; results include datapoints with the time stamp specified.

" }, "EndTime":{ "shape":"Timestamp", - "documentation":"

\n\t\tThe time stamp to use for determining the last\n\t\tdatapoint to return. The value specified is exclusive;\n\t\tresults will include datapoints up to the time stamp\n\t\tspecified.\n\t\t

" + "documentation":"

The time stamp to use for determining the last datapoint to return. The value specified is exclusive; results will include datapoints up to the time stamp specified.

" }, "Period":{ "shape":"Period", - "documentation":"

\n\t\tThe granularity, in seconds, of the returned datapoints.\n\t\tPeriod must be at least 60 seconds and\n\t\tmust be a multiple of 60. The default value is 60.\n\t\t

" + "documentation":"

The granularity, in seconds, of the returned datapoints. Period must be at least 60 seconds and must be a multiple of 60. The default value is 60.

" }, "Statistics":{ "shape":"Statistics", - "documentation":"

\n\t\t\tThe metric statistics to return. For information about specific statistics \n\t\t\treturned by GetMetricStatistics, go to Statistics in the Amazon CloudWatch Developer Guide. \n\t\t

\n\t\t

\n\t\t\tValid Values: Average | Sum | SampleCount | Maximum | Minimum\n\t\t

" + "documentation":"

The metric statistics to return. For information about specific statistics returned by GetMetricStatistics, go to Statistics in the Amazon CloudWatch Developer Guide.

Valid Values: Average | Sum | SampleCount | Maximum | Minimum

" }, "Unit":{ "shape":"StandardUnit", - "documentation":"

\n\t\tThe unit for the metric.\n\t\t

" + "documentation":"

The unit for the metric.

" } } }, @@ -715,14 +715,14 @@ "members":{ "Label":{ "shape":"MetricLabel", - "documentation":"

\n\t\tA label describing the specified metric.\n\t\t

" + "documentation":"

A label describing the specified metric.

" }, "Datapoints":{ "shape":"Datapoints", - "documentation":"

\n\t\tThe datapoints for the specified metric.\n\t\t

" + "documentation":"

The datapoints for the specified metric.

" } }, - "documentation":"

\n\t\tThe output for the GetMetricStatistics action.\n\t\t

" + "documentation":"

The output for the GetMetricStatistics action.

" }, "HistoryData":{ "type":"string", @@ -755,7 +755,7 @@ "httpStatusCode":500 }, "exception":true, - "documentation":"

\n\t\tIndicates that the request processing has\n\t\tfailed due to some unknown error, exception, or failure.\n\t\t

", + "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", "xmlOrder":["Message"] }, "InvalidFormatFault":{ @@ -772,7 +772,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tData was not syntactically valid JSON.\n\t\t

" + "documentation":"

Data was not syntactically valid JSON.

" }, "InvalidNextToken":{ "type":"structure", @@ -788,7 +788,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe next token specified is invalid.\n\t\t

" + "documentation":"

The next token specified is invalid.

" }, "InvalidParameterCombinationException":{ "type":"structure", @@ -804,7 +804,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tParameters that must not be used together were\n\t\tused together.\n\t\t

" + "documentation":"

Parameters that must not be used together were used together.

" }, "InvalidParameterValueException":{ "type":"structure", @@ -820,7 +820,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tBad or out-of-range value was supplied for the input\n\t\tparameter.\n\t\t

" + "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" }, "LimitExceededFault":{ "type":"structure", @@ -836,26 +836,26 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe quota for alarms for this customer has\n\t\talready been reached.\n\t\t

" + "documentation":"

The quota for alarms for this customer has already been reached.

" }, "ListMetricsInput":{ "type":"structure", "members":{ "Namespace":{ "shape":"Namespace", - "documentation":"

\n\t\tThe namespace to filter against.\n\t\t

" + "documentation":"

The namespace to filter against.

" }, "MetricName":{ "shape":"MetricName", - "documentation":"

\n\t\tThe name of the metric to filter against.\n\t\t

" + "documentation":"

The name of the metric to filter against.

" }, "Dimensions":{ "shape":"DimensionFilters", - "documentation":"

\n\t\tA list of dimensions to filter against.\n\t\t

" + "documentation":"

A list of dimensions to filter against.

" }, "NextToken":{ "shape":"NextToken", - "documentation":"

\n\t\tThe token returned by a previous call to indicate that there\n\t\tis more data available.\n\t\t

" + "documentation":"

The token returned by a previous call to indicate that there is more data available.

" } } }, @@ -864,14 +864,14 @@ "members":{ "Metrics":{ "shape":"Metrics", - "documentation":"

\n\t\tA list of metrics used to generate statistics for an AWS account.\n\t\t

" + "documentation":"

A list of metrics used to generate statistics for an AWS account.

" }, "NextToken":{ "shape":"NextToken", - "documentation":"

\n\t\tA string that marks the start of the next batch of returned results.\n\t\t

" + "documentation":"

A string that marks the start of the next batch of returned results.

" } }, - "documentation":"

\n\t\tThe output for the ListMetrics action.\n\t\t

", + "documentation":"

The output for the ListMetrics action.

", "xmlOrder":[ "Metrics", "NextToken" @@ -887,18 +887,18 @@ "members":{ "Namespace":{ "shape":"Namespace", - "documentation":"

\n\t\tThe namespace of the metric.\n\t\t

" + "documentation":"

The namespace of the metric.

" }, "MetricName":{ "shape":"MetricName", - "documentation":"

\n\t\tThe name of the metric.\n\t\t

" + "documentation":"

The name of the metric.

" }, "Dimensions":{ "shape":"Dimensions", - "documentation":"

\n\t\tA list of dimensions associated with the metric.\n\t\t

" + "documentation":"

A list of dimensions associated with the metric.

" } }, - "documentation":"

\n\t\tThe Metric data type contains\n\t\tinformation about a specific metric. If you call\n\t\tListMetrics, Amazon CloudWatch returns\n\t\tinformation contained by this data type.\n\t\t

\n\t\t

\n\t\t\tThe example in the Examples section publishes two metrics named buffers and latency. \n\t\t\tBoth metrics are in the examples namespace. Both metrics have two dimensions, InstanceID and InstanceType.\n\t\t

", + "documentation":"

The Metric data type contains information about a specific metric. If you call ListMetrics, Amazon CloudWatch returns information contained by this data type.

The example in the Examples section publishes two metrics named buffers and latency. Both metrics are in the examples namespace. Both metrics have two dimensions, InstanceID and InstanceType.

", "xmlOrder":[ "Namespace", "MetricName", @@ -910,90 +910,90 @@ "members":{ "AlarmName":{ "shape":"AlarmName", - "documentation":"

\n\t\tThe name of the alarm.\n\t\t

" + "documentation":"

The name of the alarm.

" }, "AlarmArn":{ "shape":"AlarmArn", - "documentation":"

\n\t\tThe Amazon Resource Name (ARN) of the alarm.\n\t\t

" + "documentation":"

The Amazon Resource Name (ARN) of the alarm.

" }, "AlarmDescription":{ "shape":"AlarmDescription", - "documentation":"

\n\t\tThe description for the alarm.\n\t\t

" + "documentation":"

The description for the alarm.

" }, "AlarmConfigurationUpdatedTimestamp":{ "shape":"Timestamp", - "documentation":"

\n\t\t\tThe time stamp of the last update to the alarm configuration. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.\n\t\t

" + "documentation":"

The time stamp of the last update to the alarm configuration. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" }, "ActionsEnabled":{ "shape":"ActionsEnabled", - "documentation":"

\n\t\tIndicates whether actions should be executed\n\t\tduring any changes to the alarm's state.\n\t\t

" + "documentation":"

Indicates whether actions should be executed during any changes to the alarm's state.

" }, "OKActions":{ "shape":"ResourceList", - "documentation":"

\n\t\tThe list of actions to execute when this alarm\n\t\ttransitions into an OK state\n\t\tfrom any other state. Each action is specified as an\n\t\tAmazon Resource Number (ARN).\n\t\tCurrently the only actions supported are publishing\n\t\tto an Amazon SNS topic and triggering an Auto Scaling policy.\n\t\t

" + "documentation":"

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

" }, "AlarmActions":{ "shape":"ResourceList", - "documentation":"

\n\t\tThe list of actions to execute when this alarm\n\t\ttransitions into an ALARM state\n\t\tfrom any other state. Each action is specified as an\n\t\tAmazon Resource Number (ARN).\n\t\tCurrently the only actions supported are publishing\n\t\tto an Amazon SNS topic and triggering an Auto Scaling policy.\n\t\t

" + "documentation":"

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

" }, "InsufficientDataActions":{ "shape":"ResourceList", - "documentation":"

\n\t\tThe list of actions to execute when this alarm\n\t\ttransitions into an INSUFFICIENT_DATA state\n\t\tfrom any other state. Each action is specified as an\n\t\tAmazon Resource Number (ARN).\n\t\tCurrently the only actions supported are publishing\n\t\tto an Amazon SNS topic or triggering an Auto Scaling policy.\n\t\t

\n\t\tThe current WSDL lists this attribute as UnknownActions." + "documentation":"

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic or triggering an Auto Scaling policy.

The current WSDL lists this attribute as UnknownActions." }, "StateValue":{ "shape":"StateValue", - "documentation":"

\n\t\tThe state value for the alarm.\n\t\t

" + "documentation":"

The state value for the alarm.

" }, "StateReason":{ "shape":"StateReason", - "documentation":"

\n\t\tA human-readable explanation for the alarm's state.\n\t\t

" + "documentation":"

A human-readable explanation for the alarm's state.

" }, "StateReasonData":{ "shape":"StateReasonData", - "documentation":"

\n\t\tAn explanation for the alarm's state in machine-readable JSON format\n\t\t

" + "documentation":"

An explanation for the alarm's state in machine-readable JSON format

" }, "StateUpdatedTimestamp":{ "shape":"Timestamp", - "documentation":"

\n\t\t\tThe time stamp of the last update to the alarm's state. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.\n\t\t

" + "documentation":"

The time stamp of the last update to the alarm's state. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" }, "MetricName":{ "shape":"MetricName", - "documentation":"

\n\t\tThe name of the alarm's metric.\n\t\t

" + "documentation":"

The name of the alarm's metric.

" }, "Namespace":{ "shape":"Namespace", - "documentation":"

\n\t\tThe namespace of alarm's associated metric.\n\t\t

" + "documentation":"

The namespace of alarm's associated metric.

" }, "Statistic":{ "shape":"Statistic", - "documentation":"

\n\t\tThe statistic to apply to the alarm's associated metric.\n\t\t

" + "documentation":"

The statistic to apply to the alarm's associated metric.

" }, "Dimensions":{ "shape":"Dimensions", - "documentation":"

\n\t\tThe list of dimensions associated with the alarm's associated metric.\n\t\t

" + "documentation":"

The list of dimensions associated with the alarm's associated metric.

" }, "Period":{ "shape":"Period", - "documentation":"

\n\t\tThe period in seconds over which the statistic is applied.\n\t\t

" + "documentation":"

The period in seconds over which the statistic is applied.

" }, "Unit":{ "shape":"StandardUnit", - "documentation":"

\n\t\tThe unit of the alarm's associated metric.\n\t\t

" + "documentation":"

The unit of the alarm's associated metric.

" }, "EvaluationPeriods":{ "shape":"EvaluationPeriods", - "documentation":"

\n\t\tThe number of periods over which data is compared to the\n\t\tspecified threshold.\n\t\t

" + "documentation":"

The number of periods over which data is compared to the specified threshold.

" }, "Threshold":{ "shape":"Threshold", - "documentation":"

\n\t\tThe value against which the specified statistic is compared.\n\t\t

" + "documentation":"

The value against which the specified statistic is compared.

" }, "ComparisonOperator":{ "shape":"ComparisonOperator", - "documentation":"

\n\t\tThe arithmetic operation to use when comparing the specified\n\t\tStatistic and Threshold. The specified\n\t\tStatistic value is used as the first operand.\n\t\t

" + "documentation":"

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

" } }, - "documentation":"

\n\t\tThe MetricAlarm data type represents\n\t\tan alarm. You can use PutMetricAlarm\n\t\tto create or update an alarm.\n\t\t

", + "documentation":"

The MetricAlarm data type represents an alarm. You can use PutMetricAlarm to create or update an alarm.

", "xmlOrder":[ "AlarmName", "AlarmArn", @@ -1032,30 +1032,30 @@ "members":{ "MetricName":{ "shape":"MetricName", - "documentation":"

\n\t\t\tThe name of the metric.\n\t\t

" + "documentation":"

The name of the metric.

" }, "Dimensions":{ "shape":"Dimensions", - "documentation":"

\n\t\t\tA list of dimensions associated with the metric. Note, when using the Dimensions value in a query, you need to append .member.N to it (e.g., Dimensions.member.N).\n\t\t

" + "documentation":"

A list of dimensions associated with the metric. Note, when using the Dimensions value in a query, you need to append .member.N to it (e.g., Dimensions.member.N).

" }, "Timestamp":{ "shape":"Timestamp", - "documentation":"

\n\t\t\tThe time stamp used for the metric. If not specified, the default value is set to the time the metric data was received. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.\n\t\t

" + "documentation":"

The time stamp used for the metric. If not specified, the default value is set to the time the metric data was received. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" }, "Value":{ "shape":"DatapointValue", - "documentation":"

\n\t\t\tThe value for the metric.\n\t\t

\n\t\tAlthough the Value parameter accepts numbers of type Double,\n\t\t\tAmazon CloudWatch truncates values with very large exponents.\n\t\t\tValues with base-10 exponents greater than 126 (1 x 10^126) are truncated.\n\t\t\tLikewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated.\n\t\t" + "documentation":"

The value for the metric.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated. " }, "StatisticValues":{ "shape":"StatisticSet", - "documentation":"

\n\t\t\tA set of statistical values describing the metric.\n\t\t

" + "documentation":"

A set of statistical values describing the metric.

" }, "Unit":{ "shape":"StandardUnit", - "documentation":"

\n\t\t\tThe unit of the metric.\n\t\t

" + "documentation":"

The unit of the metric.

" } }, - "documentation":"

\n\t\t\tThe MetricDatum data type encapsulates the information\n\t\t\tsent with PutMetricData to either create a new metric or\n\t\t\tadd new values to be aggregated into an existing metric.\n\t\t

" + "documentation":"

The MetricDatum data type encapsulates the information sent with PutMetricData to either create a new metric or add new values to be aggregated into an existing metric.

" }, "MetricLabel":{"type":"string"}, "MetricName":{ @@ -1081,7 +1081,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tAn input parameter that is mandatory for processing\n\t\tthe request is not supplied.\n\t\t

" + "documentation":"

An input parameter that is mandatory for processing the request is not supplied.

" }, "Namespace":{ "type":"string", @@ -1109,63 +1109,63 @@ "members":{ "AlarmName":{ "shape":"AlarmName", - "documentation":"

\n\t\tThe descriptive name for the alarm. This name\n\t\tmust be unique within the user's AWS account\n\t\t

" + "documentation":"

The descriptive name for the alarm. This name must be unique within the user's AWS account

" }, "AlarmDescription":{ "shape":"AlarmDescription", - "documentation":"

\n\t\tThe description for the alarm.\n\t\t

" + "documentation":"

The description for the alarm.

" }, "ActionsEnabled":{ "shape":"ActionsEnabled", - "documentation":"

\n\t\tIndicates whether or not actions should be executed\n\t\tduring any changes to the alarm's state.\n\t\t

" + "documentation":"

Indicates whether or not actions should be executed during any changes to the alarm's state.

" }, "OKActions":{ "shape":"ResourceList", - "documentation":"

\n\t\tThe list of actions to execute when this alarm\n\t\ttransitions into an OK state\n\t\tfrom any other state. Each action is specified as an\n\t\tAmazon Resource Number (ARN).\n\t\tCurrently the only action supported is publishing\n\t\tto an Amazon SNS topic or an Amazon Auto Scaling policy.\n\t\t

" + "documentation":"

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

" }, "AlarmActions":{ "shape":"ResourceList", - "documentation":"

\n\t\tThe list of actions to execute when this alarm\n\t\ttransitions into an ALARM state\n\t\tfrom any other state. Each action is specified as an\n\t\tAmazon Resource Number (ARN).\n\t\tCurrently the only action supported is publishing\n\t\tto an Amazon SNS topic or an Amazon Auto Scaling policy.\n\t\t

" + "documentation":"

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

" }, "InsufficientDataActions":{ "shape":"ResourceList", - "documentation":"

\n\t\tThe list of actions to execute when this alarm\n\t\ttransitions into an INSUFFICIENT_DATA state\n\t\tfrom any other state. Each action is specified as an\n\t\tAmazon Resource Number (ARN).\n\t\tCurrently the only action supported is publishing\n\t\tto an Amazon SNS topic or an Amazon Auto Scaling policy.\n\t\t

" + "documentation":"

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

" }, "MetricName":{ "shape":"MetricName", - "documentation":"

\n\t\tThe name for the alarm's associated metric.\n\t\t

" + "documentation":"

The name for the alarm's associated metric.

" }, "Namespace":{ "shape":"Namespace", - "documentation":"

\n\t\tThe namespace for the alarm's associated metric.\n\t\t

" + "documentation":"

The namespace for the alarm's associated metric.

" }, "Statistic":{ "shape":"Statistic", - "documentation":"

\n\t\tThe statistic to apply to the alarm's associated metric.\n\t\t

" + "documentation":"

The statistic to apply to the alarm's associated metric.

" }, "Dimensions":{ "shape":"Dimensions", - "documentation":"

\n\t\tThe dimensions for the alarm's associated metric.\n\t\t

" + "documentation":"

The dimensions for the alarm's associated metric.

" }, "Period":{ "shape":"Period", - "documentation":"

\n\t\tThe period in seconds over which the specified statistic\n\t\tis applied.\n\t\t

" + "documentation":"

The period in seconds over which the specified statistic is applied.

" }, "Unit":{ "shape":"StandardUnit", - "documentation":"

\n\t\tThe unit for the alarm's associated metric.\n\t\t

" + "documentation":"

The unit for the alarm's associated metric.

" }, "EvaluationPeriods":{ "shape":"EvaluationPeriods", - "documentation":"

\n\t\tThe number of periods over which data is compared to the\n\t\tspecified threshold.\n\t\t

" + "documentation":"

The number of periods over which data is compared to the specified threshold.

" }, "Threshold":{ "shape":"Threshold", - "documentation":"

\n\t\tThe value against which the specified statistic is compared.\n\t\t

" + "documentation":"

The value against which the specified statistic is compared.

" }, "ComparisonOperator":{ "shape":"ComparisonOperator", - "documentation":"

\n\t\tThe arithmetic operation to use when comparing the specified\n\t\tStatistic and Threshold. The specified\n\t\tStatistic value is used as the first operand.\n\t\t

" + "documentation":"

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

" } } }, @@ -1178,11 +1178,11 @@ "members":{ "Namespace":{ "shape":"Namespace", - "documentation":"

\n\t\tThe namespace for the metric data.\n\t\t

\n\t\t\n\t\t\tYou cannot specify a namespace that begins with \"AWS/\".\n\t\t\tNamespaces that begin with \"AWS/\" are reserved for \n\t\t\tother Amazon Web Services products that send metrics to Amazon CloudWatch.\n\t\t" + "documentation":"

The namespace for the metric data.

" }, "MetricData":{ "shape":"MetricData", - "documentation":"

\n\t\tA list of data describing the metric.\n\t\t

" + "documentation":"

A list of data describing the metric.

" } } }, @@ -1210,7 +1210,7 @@ "senderFault":true }, "exception":true, - "documentation":"

\n\t\tThe named resource does not exist.\n\t\t

" + "documentation":"

The named resource does not exist.

" }, "SetAlarmStateInput":{ "type":"structure", @@ -1222,19 +1222,19 @@ "members":{ "AlarmName":{ "shape":"AlarmName", - "documentation":"

\n\t\tThe descriptive name for the alarm. This name\n\t\tmust be unique within the user's AWS account.\n\t\tThe maximum length is 255 characters.\n\t\t

" + "documentation":"

The descriptive name for the alarm. This name must be unique within the user's AWS account. The maximum length is 255 characters.

" }, "StateValue":{ "shape":"StateValue", - "documentation":"

\n\t\t\tThe value of the state.\n\t\t

" + "documentation":"

The value of the state.

" }, "StateReason":{ "shape":"StateReason", - "documentation":"

\n\t\tThe reason that this alarm is set to this specific state (in human-readable text format)\n\t\t

" + "documentation":"

The reason that this alarm is set to this specific state (in human-readable text format)

" }, "StateReasonData":{ "shape":"StateReasonData", - "documentation":"

\n\t\tThe reason that this alarm is set to this specific state (in machine-readable JSON format)\n\t\t

" + "documentation":"

The reason that this alarm is set to this specific state (in machine-readable JSON format)

" } } }, @@ -1309,22 +1309,22 @@ "members":{ "SampleCount":{ "shape":"DatapointValue", - "documentation":"

\n\t\t\tThe number of samples used for the statistic set.\n\t\t

" + "documentation":"

The number of samples used for the statistic set.

" }, "Sum":{ "shape":"DatapointValue", - "documentation":"

\n\t\t\tThe sum of values for the sample set.\n\t\t

" + "documentation":"

The sum of values for the sample set.

" }, "Minimum":{ "shape":"DatapointValue", - "documentation":"

\n\t\t\tThe minimum value of the sample set.\n\t\t

" + "documentation":"

The minimum value of the sample set.

" }, "Maximum":{ "shape":"DatapointValue", - "documentation":"

\n\t\t\tThe maximum value of the sample set.\n\t\t

" + "documentation":"

The maximum value of the sample set.

" } }, - "documentation":"

\n\t\t\tThe StatisticSet data type\n\t\t\tdescribes the StatisticValues\n\t\t\tcomponent of MetricDatum, and represents a set of\n\t\t\tstatistics that describes a specific metric.\n\t\t

" + "documentation":"

The StatisticSet data type describes the StatisticValues component of MetricDatum, and represents a set of statistics that describes a specific metric.

" }, "Statistics":{ "type":"list", diff --git a/DynamoDB/AWSDynamoDB.h b/DynamoDB/AWSDynamoDB.h index 61509cad684..e20f7611e40 100644 --- a/DynamoDB/AWSDynamoDB.h +++ b/DynamoDB/AWSDynamoDB.h @@ -25,7 +25,6 @@ @interface AWSDynamoDB : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultDynamoDB; @@ -44,7 +43,7 @@ - (BFTask *)batchGetItem:(AWSDynamoDBBatchGetItemInput *)request; /** - *

The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 1 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 64 KB.

BatchWriteItem cannot update items. To update items, use the UpdateItem API.

The individual PutItem and DeleteItem operations specified in BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the UnprocessedItems response parameter. You can investigate and optionally resend the requests. Typically, you would call BatchWriteItem in a loop. Each iteration would check for unprocessed items and submit a new BatchWriteItem request with those unprocessed items until all items have been processed.

Note that if none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchGetItem will throw a ProvisionedThroughputExceededException.

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

With BatchWriteItem, you can efficiently write or delete large amounts of data, such as from Amazon Elastic MapReduce (EMR), or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, BatchWriteItem does not behave in the same way as individual PutItem and DeleteItem calls would For example, you cannot specify conditions on individual put and delete requests, and BatchWriteItem does not return deleted items in the response.

If you use a programming language that supports concurrency, such as Java, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, such as PHP, you must update or delete the specified items one at a time. In both situations, BatchWriteItem provides an alternative where the API performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application.

Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit.

If one or more of the following is true, DynamoDB rejects the entire batch write operation:

  • One or more tables specified in the BatchWriteItem request does not exist.

  • Primary key attributes specified on an item in the request do not match those in the corresponding table's primary key schema.

  • You try to perform multiple operations on the same item in the same BatchWriteItem request. For example, you cannot put and delete the same item in the same BatchWriteItem request.

  • The total request size exceeds 1 MB.

  • Any individual item in a batch exceeds 64 KB.

+ *

The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 1 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 64 KB.

The individual PutItem and DeleteItem operations specified in BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the UnprocessedItems response parameter. You can investigate and optionally resend the requests. Typically, you would call BatchWriteItem in a loop. Each iteration would check for unprocessed items and submit a new BatchWriteItem request with those unprocessed items until all items have been processed.

Note that if none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchGetItem will throw a ProvisionedThroughputExceededException.

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

With BatchWriteItem, you can efficiently write or delete large amounts of data, such as from Amazon Elastic MapReduce (EMR), or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, BatchWriteItem does not behave in the same way as individual PutItem and DeleteItem calls would For example, you cannot specify conditions on individual put and delete requests, and BatchWriteItem does not return deleted items in the response.

If you use a programming language that supports concurrency, such as Java, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, such as PHP, you must update or delete the specified items one at a time. In both situations, BatchWriteItem provides an alternative where the API performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application.

Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit.

If one or more of the following is true, DynamoDB rejects the entire batch write operation:

  • One or more tables specified in the BatchWriteItem request does not exist.

  • Primary key attributes specified on an item in the request do not match those in the corresponding table's primary key schema.

  • You try to perform multiple operations on the same item in the same BatchWriteItem request. For example, you cannot put and delete the same item in the same BatchWriteItem request.

  • The total request size exceeds 1 MB.

  • Any individual item in a batch exceeds 64 KB.

* * @param request A container for the necessary parameters to execute the BatchWriteItem service method. * @@ -56,7 +55,7 @@ - (BFTask *)batchWriteItem:(AWSDynamoDBBatchWriteItemInput *)request; /** - *

The CreateTable operation adds a new table to your account. In an AWS account, table names must be unique within each region. That is, you can have two tables with same name if you create the tables in different regions.

CreateTable is an asynchronous operation. Upon receiving a CreateTable request, DynamoDB immediately returns a response with a TableStatus of CREATING. After the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform read and write operations only on an ACTIVE table.

If you want to create multiple tables with secondary indexes on them, you must create them sequentially. Only one table with secondary indexes can be in the CREATING state at any given time.

You can use the DescribeTable API to check the table status.

+ *

The CreateTable operation adds a new table to your account. In an AWS account, table names must be unique within each region. That is, you can have two tables with same name if you create the tables in different regions.

CreateTable is an asynchronous operation. Upon receiving a CreateTable request, DynamoDB immediately returns a response with a TableStatus of CREATING. After the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform read and write operations only on an ACTIVE table.

If you want to create multiple tables with secondary indexes on them, you must create them sequentially. Only one table with secondary indexes can be in the CREATING state at any given time.

You can use the DescribeTable API to check the table status.

* * @param request A container for the necessary parameters to execute the CreateTable service method. * @@ -68,7 +67,7 @@ - (BFTask *)createTable:(AWSDynamoDBCreateTableInput *)request; /** - *

Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value.

In addition to deleting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

Unless you specify conditions, the DeleteItem is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Conditional deletes are useful for only deleting items if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.

+ *

Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value.

In addition to deleting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

Unless you specify conditions, the DeleteItem is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Conditional deletes are useful for only deleting items if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.

* * @param request A container for the necessary parameters to execute the DeleteItem service method. * @@ -80,7 +79,7 @@ - (BFTask *)deleteItem:(AWSDynamoDBDeleteItemInput *)request; /** - *

The DeleteTable operation deletes a table and all of its items. After a DeleteTable request, the specified table is in the DELETING state until DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete it. If a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException. If the specified table does not exist, DynamoDB returns a ResourceNotFoundException. If table is already in the DELETING state, no error is returned.

DynamoDB might continue to accept data read and write operations, such as GetItem and PutItem, on a table in the DELETING state until the table deletion is complete.

When you delete a table, any indexes on that table are also deleted.

Use the DescribeTable API to check the status of the table.

+ *

The DeleteTable operation deletes a table and all of its items. After a DeleteTable request, the specified table is in the DELETING state until DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete it. If a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException. If the specified table does not exist, DynamoDB returns a ResourceNotFoundException. If table is already in the DELETING state, no error is returned.

When you delete a table, any indexes on that table are also deleted.

Use the DescribeTable API to check the status of the table.

* * @param request A container for the necessary parameters to execute the DeleteTable service method. * @@ -92,7 +91,7 @@ - (BFTask *)deleteTable:(AWSDynamoDBDeleteTableInput *)request; /** - *

Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any indexes on the table.

+ *

Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any indexes on the table.

* * @param request A container for the necessary parameters to execute the DescribeTable service method. * @@ -104,7 +103,7 @@ - (BFTask *)describeTable:(AWSDynamoDBDescribeTableInput *)request; /** - *

The GetItem operation returns a set of attributes for the item with the given primary key. If there is no matching item, GetItem does not return any data.

GetItem provides an eventually consistent read by default. If your application requires a strongly consistent read, set ConsistentRead to true. Although a strongly consistent read might take more time than an eventually consistent read, it always returns the last updated value.

+ *

The GetItem operation returns a set of attributes for the item with the given primary key. If there is no matching item, GetItem does not return any data.

GetItem provides an eventually consistent read by default. If your application requires a strongly consistent read, set ConsistentRead to true. Although a strongly consistent read might take more time than an eventually consistent read, it always returns the last updated value.

* * @param request A container for the necessary parameters to execute the GetItem service method. * @@ -116,7 +115,7 @@ - (BFTask *)getItem:(AWSDynamoDBGetItemInput *)request; /** - *

Returns an array of table names associated with the current account and endpoint. The output from ListTables is paginated, with each page returning a maximum of 100 table names.

+ *

Returns an array of table names associated with the current account and endpoint. The output from ListTables is paginated, with each page returning a maximum of 100 table names.

* * @param request A container for the necessary parameters to execute the ListTables service method. * @@ -128,7 +127,7 @@ - (BFTask *)listTables:(AWSDynamoDBListTablesInput *)request; /** - *

Creates a new item, or replaces an old item with a new item. If an item already exists in the specified table with the same primary key, the new item completely replaces the existing item. You can perform a conditional put (insert a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values.

In addition to putting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

When you add an item, the primary key attribute(s) are the only required attributes. Attribute values cannot be null. String and binary type attributes must have lengths greater than zero. Set type attributes cannot be empty. Requests with empty values will be rejected with a ValidationException.

You can request that PutItem return either a copy of the old item (before the update) or a copy of the new item (after the update). For more information, see the ReturnValues description.

To prevent a new item from replacing an existing item, use a conditional put operation with ComparisonOperator set to NULL for the primary key attribute, or attributes.

For more information about using this API, see Working with Items in the Amazon DynamoDB Developer Guide.

+ *

Creates a new item, or replaces an old item with a new item. If an item already exists in the specified table with the same primary key, the new item completely replaces the existing item. You can perform a conditional put (insert a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values.

In addition to putting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

When you add an item, the primary key attribute(s) are the only required attributes. Attribute values cannot be null. String and binary type attributes must have lengths greater than zero. Set type attributes cannot be empty. Requests with empty values will be rejected with a ValidationException.

You can request that PutItem return either a copy of the old item (before the update) or a copy of the new item (after the update). For more information, see the ReturnValues description.

For more information about using this API, see Working with Items in the Amazon DynamoDB Developer Guide.

* * @param request A container for the necessary parameters to execute the PutItem service method. * @@ -140,7 +139,7 @@ - (BFTask *)putItem:(AWSDynamoDBPutItemInput *)request; /** - *

A Query operation directly accesses items from a table using the table primary key, or from an index using the index key. You must provide a specific hash key value. You can narrow the scope of the query by using comparison operators on the range key value, or on the index key. You can use the ScanIndexForward parameter to get results in forward or reverse order, by range key or by index key.

Queries that do not return results consume the minimum read capacity units according to the type of read.

If the total number of items meeting the query criteria exceeds the result set size limit of 1 MB, the query stops and results are returned to the user with a LastEvaluatedKey to continue the query in a subsequent operation. Unlike a Scan operation, a Query operation never returns an empty result set and a LastEvaluatedKey. The LastEvaluatedKey is only provided if the results exceed 1 MB, or if you have used Limit.

You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set ConsistentRead to true and obtain a strongly consistent result. Global secondary indexes support eventually consistent reads only, so do not specify ConsistentRead when querying a global secondary index.

+ *

A Query operation directly accesses items from a table using the table primary key, or from an index using the index key. You must provide a specific hash key value. You can narrow the scope of the query by using comparison operators on the range key value, or on the index key. You can use the ScanIndexForward parameter to get results in forward or reverse order, by range key or by index key.

Queries that do not return results consume the minimum read capacity units according to the type of read.

If the total number of items meeting the query criteria exceeds the result set size limit of 1 MB, the query stops and results are returned to the user with a LastEvaluatedKey to continue the query in a subsequent operation. Unlike a Scan operation, a Query operation never returns an empty result set and a LastEvaluatedKey. The LastEvaluatedKey is only provided if the results exceed 1 MB, or if you have used Limit.

You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set ConsistentRead to true and obtain a strongly consistent result. Global secondary indexes support eventually consistent reads only, so do not specify ConsistentRead when querying a global secondary index.

* * @param request A container for the necessary parameters to execute the Query service method. * @@ -152,7 +151,7 @@ - (BFTask *)query:(AWSDynamoDBQueryInput *)request; /** - *

The Scan operation returns one or more items and item attributes by accessing every item in the table. To have DynamoDB return fewer items, you can provide a ScanFilter.

If the total number of scanned items exceeds the maximum data set size limit of 1 MB, the scan stops and results are returned to the user with a LastEvaluatedKey to continue the scan in a subsequent operation. The results also include the number of items exceeding the limit. A scan can result in no table data meeting the filter criteria.

The result set is eventually consistent.

By default, Scan operations proceed sequentially; however, for faster performance on large tables, applications can request a parallel Scan by specifying the Segment and TotalSegments parameters. For more information, see Parallel Scan in the Amazon DynamoDB Developer Guide.

+ *

The Scan operation returns one or more items and item attributes by accessing every item in the table. To have DynamoDB return fewer items, you can provide a ScanFilter.

If the total number of scanned items exceeds the maximum data set size limit of 1 MB, the scan stops and results are returned to the user with a LastEvaluatedKey to continue the scan in a subsequent operation. The results also include the number of items exceeding the limit. A scan can result in no table data meeting the filter criteria.

The result set is eventually consistent.

By default, Scan operations proceed sequentially; however, for faster performance on large tables, applications can request a parallel Scan by specifying the Segment and TotalSegments parameters. For more information, see Parallel Scan in the Amazon DynamoDB Developer Guide.

* * @param request A container for the necessary parameters to execute the Scan service method. * @@ -164,7 +163,7 @@ - (BFTask *)scan:(AWSDynamoDBScanInput *)request; /** - *

Edits an existing item's attributes, or inserts a new item if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values).

In addition to updating an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

+ *

Edits an existing item's attributes, or inserts a new item if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values).

In addition to updating an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

* * @param request A container for the necessary parameters to execute the UpdateItem service method. * diff --git a/DynamoDB/AWSDynamoDB.m b/DynamoDB/AWSDynamoDB.m index 9772729cd69..5d3bcaeea47 100644 --- a/DynamoDB/AWSDynamoDB.m +++ b/DynamoDB/AWSDynamoDB.m @@ -15,20 +15,25 @@ #import "AWSDynamoDB.h" -#import "AZNetworking.h" +#import "AWSNetworking.h" #import "AWSSignature.h" #import "AWSService.h" -#import "AZCategory.h" +#import "AWSCategory.h" #import "AWSNetworking.h" #import "AWSURLRequestSerialization.h" #import "AWSURLResponseSerialization.h" #import "AWSURLRequestRetryHandler.h" +NSString *const AWSDynamoDBDefinitionFileName = @"dynamodb-2012-08-10"; + @interface AWSDynamoDBResponseSerializer : AWSJSONResponseSerializer @property (nonatomic, assign) Class outputClass; -+ (instancetype)serializerWithOutputClass:(Class)outputClass; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName; + @end @@ -56,8 +61,11 @@ + (void)initialize { #pragma mark - -+ (instancetype)serializerWithOutputClass:(Class)outputClass { - AWSDynamoDBResponseSerializer *serializer = [AWSDynamoDBResponseSerializer new]; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName +{ + AWSDynamoDBResponseSerializer *serializer = [AWSDynamoDBResponseSerializer serializerWithResource:resource actionName:actionName]; serializer.outputClass = outputClass; return serializer; @@ -78,14 +86,14 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSDynamoDBErrorDomain code:[[errorCodeDictionary objectForKey:[[[responseObject objectForKey:@"__type"] componentsSeparatedByString:@"#"] lastObject]] integerValue] - userInfo:@{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null]}]; + userInfo:responseObject]; } return responseObject; } else if ([[[responseObject objectForKey:@"__type"] componentsSeparatedByString:@"#"] lastObject]) { if (error) { *error = [NSError errorWithDomain:AWSDynamoDBErrorDomain code:AWSDynamoDBErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null]}]; + userInfo:responseObject]; } return responseObject; } @@ -108,20 +116,20 @@ @interface AWSDynamoDBRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSDynamoDBRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSDynamoDBErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSDynamoDBErrorProvisionedThroughputExceeded: - retryType = AZNetworkingRetryTypeShouldRetry; + retryType = AWSNetworkingRetryTypeShouldRetry; break; case AWSDynamoDBErrorAccessDenied: @@ -129,7 +137,7 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount case AWSDynamoDBErrorIncompleteSignature: case AWSDynamoDBErrorInvalidClientTokenId: case AWSDynamoDBErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -144,15 +152,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSDynamoDB() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -177,28 +184,28 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceDynamoDB]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceDynamoDB]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestSerializer = [AWSJSONRequestSerializer new]; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSDynamoDBRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName, + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName, @"Content-Type" : @"application/x-amz-json-1.0", @"Accept-Encoding" : @""}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -207,9 +214,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -217,8 +224,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request headers[@"X-Amz-Target"] = [NSString stringWithFormat:@"%@.%@", targetPrefix, operationName]; networkingRequest.headers = headers; networkingRequest.HTTPMethod = HTTPMethod; - networkingRequest.responseSerializer = [AWSDynamoDBResponseSerializer serializerWithOutputClass:outputClass]; - + networkingRequest.responseSerializer = [AWSDynamoDBResponseSerializer serializerWithOutputClass:outputClass resource:AWSDynamoDBDefinitionFileName actionName:operationName]; + networkingRequest.requestSerializer = [AWSJSONRequestSerializer serializerWithResource:AWSDynamoDBDefinitionFileName actionName:operationName]; + return [self.networking sendRequest:networkingRequest]; } @@ -226,7 +234,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)batchGetItem:(AWSDynamoDBBatchGetItemInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"BatchGetItem" @@ -235,7 +243,7 @@ - (BFTask *)batchGetItem:(AWSDynamoDBBatchGetItemInput *)request { - (BFTask *)batchWriteItem:(AWSDynamoDBBatchWriteItemInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"BatchWriteItem" @@ -244,7 +252,7 @@ - (BFTask *)batchWriteItem:(AWSDynamoDBBatchWriteItemInput *)request { - (BFTask *)createTable:(AWSDynamoDBCreateTableInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"CreateTable" @@ -253,7 +261,7 @@ - (BFTask *)createTable:(AWSDynamoDBCreateTableInput *)request { - (BFTask *)deleteItem:(AWSDynamoDBDeleteItemInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"DeleteItem" @@ -262,7 +270,7 @@ - (BFTask *)deleteItem:(AWSDynamoDBDeleteItemInput *)request { - (BFTask *)deleteTable:(AWSDynamoDBDeleteTableInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"DeleteTable" @@ -271,7 +279,7 @@ - (BFTask *)deleteTable:(AWSDynamoDBDeleteTableInput *)request { - (BFTask *)describeTable:(AWSDynamoDBDescribeTableInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"DescribeTable" @@ -280,7 +288,7 @@ - (BFTask *)describeTable:(AWSDynamoDBDescribeTableInput *)request { - (BFTask *)getItem:(AWSDynamoDBGetItemInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"GetItem" @@ -289,7 +297,7 @@ - (BFTask *)getItem:(AWSDynamoDBGetItemInput *)request { - (BFTask *)listTables:(AWSDynamoDBListTablesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"ListTables" @@ -298,7 +306,7 @@ - (BFTask *)listTables:(AWSDynamoDBListTablesInput *)request { - (BFTask *)putItem:(AWSDynamoDBPutItemInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"PutItem" @@ -307,7 +315,7 @@ - (BFTask *)putItem:(AWSDynamoDBPutItemInput *)request { - (BFTask *)query:(AWSDynamoDBQueryInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"Query" @@ -316,7 +324,7 @@ - (BFTask *)query:(AWSDynamoDBQueryInput *)request { - (BFTask *)scan:(AWSDynamoDBScanInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"Scan" @@ -325,7 +333,7 @@ - (BFTask *)scan:(AWSDynamoDBScanInput *)request { - (BFTask *)updateItem:(AWSDynamoDBUpdateItemInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"UpdateItem" @@ -334,7 +342,7 @@ - (BFTask *)updateItem:(AWSDynamoDBUpdateItemInput *)request { - (BFTask *)updateTable:(AWSDynamoDBUpdateTableInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"DynamoDB_20120810" operationName:@"UpdateTable" diff --git a/DynamoDB/AWSDynamoDBModel.h b/DynamoDB/AWSDynamoDBModel.h index 3118e7716ec..4c3e292f030 100644 --- a/DynamoDB/AWSDynamoDBModel.h +++ b/DynamoDB/AWSDynamoDBModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSDynamoDBErrorDomain; @@ -185,7 +185,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents an attribute for describing the key schema for the table and indexes.

* Required parameters: [AttributeName, AttributeType] */ -@interface AWSDynamoDBAttributeDefinition : AZModel +@interface AWSDynamoDBAttributeDefinition : AWSModel /** @@ -203,7 +203,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the data for an attribute. You can set one, and only one, of the elements.

*/ -@interface AWSDynamoDBAttributeValue : AZModel +@interface AWSDynamoDBAttributeValue : AWSModel /** @@ -239,13 +239,13 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @end /** - *

For the UpdateItem operation, represents the attributes to be modified, the action to perform on each, and the new value for each.

You cannot use UpdateItem to update any primary key attributes. Instead, you will need to delete the item, and then use PutItem to create a new item with new attributes.

Attribute values cannot be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException.

+ *

For the UpdateItem operation, represents the attributes to be modified, the action to perform on each, and the new value for each.

Attribute values cannot be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException.

*/ -@interface AWSDynamoDBAttributeValueUpdate : AZModel +@interface AWSDynamoDBAttributeValueUpdate : AWSModel /** - *

Specifies how to perform the update. Valid values are PUT, DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table.

If an item with the specified Key is found in the table:

  • PUT - Adds the specified attribute to the item. If the attribute already exists, it is replaced by the new value.

  • DELETE - If no value is specified, the attribute and its value are removed from the item. The data type of the specified value must match the existing value's data type.

    If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specified [a,c], then the final attribute value would be [b]. Specifying an empty set is an error.

  • ADD - If the attribute does not already exist, then the attribute and its values are added to the item. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute:

    • If the existing attribute is a number, and if Value is also a number, then the Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute.

      If you use ADD to increment or decrement a number value for an item that doesn't exist before the update, DynamoDB uses 0 as the initial value.

      In addition, if you use ADD to update an existing item, and intend to increment or decrement an attribute value which does not yet exist, DynamoDB uses 0 as the initial value. For example, suppose that the item you want to update does not yet have an attribute named itemcount, but you decide to ADD the number 3 to this attribute anyway, even though it currently does not exist. DynamoDB will create the itemcount attribute, set its initial value to 0, and finally add 3 to it. The result will be a new itemcount attribute in the item, with a value of 3.

    • If the existing data type is a set, and if the Value is also a set, then the Value is added to the existing set. (This is a set operation, not mathematical addition.) For example, if the attribute value was the set [1,2], and the ADD action specified [3], then the final attribute value would be [1,2,3]. An error occurs if an Add action is specified for a set attribute and the attribute type specified does not match the existing set type.

      Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The same holds true for number sets and binary sets.

    This action is only valid for an existing attribute whose data type is number or is a set. Do not use ADD for any other data types.

If no item with the specified Key is found:

  • PUT - DynamoDB creates a new item with the specified primary key, and then adds the attribute.

  • DELETE - Nothing happens; there is no attribute to delete.

  • ADD - DynamoDB creates an item with the supplied primary key and number (or set of numbers) for the attribute value. The only data types allowed are number and number set; no other data types can be specified.

+ *

Specifies how to perform the update. Valid values are PUT, DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table.

If an item with the specified Key is found in the table:

  • PUT - Adds the specified attribute to the item. If the attribute already exists, it is replaced by the new value.

  • DELETE - If no value is specified, the attribute and its value are removed from the item. The data type of the specified value must match the existing value's data type.

    If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specified [a,c], then the final attribute value would be [b]. Specifying an empty set is an error.

  • ADD - If the attribute does not already exist, then the attribute and its values are added to the item. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute:

    • If the existing attribute is a number, and if Value is also a number, then the Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute.

    • If the existing data type is a set, and if the Value is also a set, then the Value is added to the existing set. (This is a set operation, not mathematical addition.) For example, if the attribute value was the set [1,2], and the ADD action specified [3], then the final attribute value would be [1,2,3]. An error occurs if an Add action is specified for a set attribute and the attribute type specified does not match the existing set type.

      Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The same holds true for number sets and binary sets.

    This action is only valid for an existing attribute whose data type is number or is a set. Do not use ADD for any other data types.

If no item with the specified Key is found:

  • PUT - DynamoDB creates a new item with the specified primary key, and then adds the attribute.

  • DELETE - Nothing happens; there is no attribute to delete.

  • ADD - DynamoDB creates an item with the supplied primary key and number (or set of numbers) for the attribute value. The only data types allowed are number and number set; no other data types can be specified.

*/ @property (nonatomic, assign) AWSDynamoDBAttributeAction action; @@ -278,7 +278,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a BatchGetItem operation.

*/ -@interface AWSDynamoDBBatchGetItemOutput : AZModel +@interface AWSDynamoDBBatchGetItemOutput : AWSModel /** @@ -325,7 +325,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a BatchWriteItem operation.

*/ -@interface AWSDynamoDBBatchWriteItemOutput : AZModel +@interface AWSDynamoDBBatchWriteItemOutput : AWSModel /** @@ -348,7 +348,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the amount of provisioned throughput capacity consumed on a table or an index.

*/ -@interface AWSDynamoDBCapacity : AZModel +@interface AWSDynamoDBCapacity : AWSModel /** @@ -362,7 +362,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents the selection criteria for a Query or Scan operation:

  • For a Query operation, Condition is used for specifying the KeyConditions to use when querying a table or an index. For KeyConditions, only the following comparison operators are supported:

    EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN

    Condition is also used in a QueryFilter, which evaluates the query results and returns only the desired values.

  • For a Scan operation, Condition is used in a ScanFilter, which evaluates the scan results and returns only the desired values.

* Required parameters: [ComparisonOperator] */ -@interface AWSDynamoDBCondition : AZModel +@interface AWSDynamoDBCondition : AWSModel /** @@ -380,7 +380,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the capacity units consumed by an operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if it was asked for in the request. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide.

*/ -@interface AWSDynamoDBConsumedCapacity : AZModel +@interface AWSDynamoDBConsumedCapacity : AWSModel /** @@ -423,7 +423,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @property (nonatomic, strong) NSArray *attributeDefinitions; /** - *

One or more global secondary indexes (the maximum is five) to be created on the table. Each global secondary index in the array includes the following:

  • IndexName - The name of the global secondary index. Must be unique only for this table.

  • KeySchema - Specifies the key schema for the global secondary index.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that areprojected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units.

+ *

One or more global secondary indexes (the maximum is five) to be created on the table. Each global secondary index in the array includes the following:

  • IndexName - The name of the global secondary index. Must be unique only for this table.

  • KeySchema - Specifies the key schema for the global secondary index.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units.

*/ @property (nonatomic, strong) NSArray *globalSecondaryIndexes; @@ -433,7 +433,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @property (nonatomic, strong) NSArray *keySchema; /** - *

One or more local secondary indexes (the maximum is five) to be created on the table. Each index is scoped to a given hash key value. There is a 10 GB size limit per hash key; otherwise, the size of a local secondary index is unconstrained.

Each local secondary index in the array includes the following:

  • IndexName - The name of the local secondary index. Must be unique only for this table.

  • KeySchema - Specifies the key schema for the local secondary index. The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that areprojected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

+ *

One or more local secondary indexes (the maximum is five) to be created on the table. Each index is scoped to a given hash key value. There is a 10 GB size limit per hash key; otherwise, the size of a local secondary index is unconstrained.

Each local secondary index in the array includes the following:

  • IndexName - The name of the local secondary index. Must be unique only for this table.

  • KeySchema - Specifies the key schema for the local secondary index. The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

*/ @property (nonatomic, strong) NSArray *localSecondaryIndexes; @@ -452,7 +452,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a CreateTable operation.

*/ -@interface AWSDynamoDBCreateTableOutput : AZModel +@interface AWSDynamoDBCreateTableOutput : AWSModel /** @@ -470,12 +470,12 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** - *

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire mapevaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

+ *

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

*/ @property (nonatomic, assign) AWSDynamoDBConditionalOperator conditionalOperator; /** - *

A map of attribute/condition pairs. This is the conditional block for the DeleteItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values.DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the suppliedattribute. The number of values in the list depends on the ComparisonOperatorbeing used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCIIcharacter code values. For example, a is greater than A, andaa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binaryvalues, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

For backward compatibility with previous DynamoDB releases, the following parameters can be used instead of AttributeValueList and ComparisonOperator:

  • Value - A value for DynamoDB to compare with an attribute.

  • Exists - Causes DynamoDB to evaluate the value before attempting the conditional operation:

    • If Exists is true, DynamoDB will check to see if that attribute value already exists in the table. If it is found, then the condition evaluates to true; otherwise the condition evaluate to false.

    • If Exists is false, DynamoDB assumes that the attribute value does not exist in the table. If in fact the value does not exist, then the assumption is valid and the condition evaluates to true. If the value is found, despite the assumption that it does not exist, the condition evaluates to false.

Even though DynamoDB continues to accept the Value and Exists parameters, they are now deprecated. We recommend that you use AttributeValueList and ComparisonOperator instead, since they allow you to construct a much wider range of conditions.

The Value and Exists parameters are incompatible with AttributeValueList and ComparisonOperator. If you attempt to use both sets of parameters at once, DynamoDB will throw a ValidationException.

+ *

A map of attribute/condition pairs. This is the conditional block for the DeleteItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

*/ @property (nonatomic, strong) NSDictionary *expected; @@ -509,7 +509,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a DeleteItem operation.

*/ -@interface AWSDynamoDBDeleteItemOutput : AZModel +@interface AWSDynamoDBDeleteItemOutput : AWSModel /** @@ -533,7 +533,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents a request to perform a DeleteItem operation on an item.

* Required parameters: [Key] */ -@interface AWSDynamoDBDeleteRequest : AZModel +@interface AWSDynamoDBDeleteRequest : AWSModel /** @@ -560,7 +560,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a DeleteTable operation.

*/ -@interface AWSDynamoDBDeleteTableOutput : AZModel +@interface AWSDynamoDBDeleteTableOutput : AWSModel /** @@ -587,7 +587,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a DescribeTable operation.

*/ -@interface AWSDynamoDBDescribeTableOutput : AZModel +@interface AWSDynamoDBDescribeTableOutput : AWSModel /** @@ -598,9 +598,9 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @end /** - *

Represents a condition to be compared with an attribute value. This condition can be used with DeleteItem, PutItem or UpdateItem operations; if the comparison evaluates to true, the operation succeeds; if not the operation fails. You can use ExpectedAttributeValue in one of two different ways:

  • Use AttributeValueList to specify one or more values to compare against an attribute. Use ComparisonOperator to specify how you want to perform the comparison. If the comparison evaluates to true, then the conditional operation succeeds.

  • Use Value to specify a value that DynamoDB will compare against an attribute. If the values match, then ExpectedAttributeValue evaluates to true and the conditional operation succeeds. Optionally, you can also set Exists to false, indicating that you do not expect to find the attribute value in the table. In this case, the conditional operation succeeds only if the comparison evaluates to false.

Value and Exists are incompatible with AttributeValueList andComparisonOperator. If you attempt to use both sets of parameters at once, DynamoDB will throw a ValidationException.

The Value and Exists parameters are deprecated. Even though DynamoDB will continue to support these parameters, we recommend that you use AttributeValueList and ComparisonOperator instead. AttributeValueList and ComparisonOperator let you construct a much wider range of conditions than is possible with Value and Exists.

+ *

Represents a condition to be compared with an attribute value. This condition can be used with DeleteItem, PutItem or UpdateItem operations; if the comparison evaluates to true, the operation succeeds; if not the operation fails. You can use ExpectedAttributeValue in one of two different ways:

  • Use AttributeValueList to specify one or more values to compare against an attribute. Use ComparisonOperator to specify how you want to perform the comparison. If the comparison evaluates to true, then the conditional operation succeeds.

  • Use Value to specify a value that DynamoDB will compare against an attribute. If the values match, then ExpectedAttributeValue evaluates to true and the conditional operation succeeds. Optionally, you can also set Exists to false, indicating that you do not expect to find the attribute value in the table. In this case, the conditional operation succeeds only if the comparison evaluates to false.

Value and Exists are incompatible with AttributeValueList and ComparisonOperator. If you attempt to use both sets of parameters at once, DynamoDB will throw a ValidationException.

The Value and Exists parameters are deprecated. Even though DynamoDB will continue to support these parameters, we recommend that you use AttributeValueList and ComparisonOperator instead. AttributeValueList and ComparisonOperator let you construct a much wider range of conditions than is possible with Value and Exists.

*/ -@interface AWSDynamoDBExpectedAttributeValue : AZModel +@interface AWSDynamoDBExpectedAttributeValue : AWSModel /** @@ -633,7 +633,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** - *

The names of one or more attributes to retrieve.If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption.DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

+ *

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

*/ @property (nonatomic, strong) NSArray *attributesToGet; @@ -662,7 +662,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a GetItem operation.

*/ -@interface AWSDynamoDBGetItemOutput : AZModel +@interface AWSDynamoDBGetItemOutput : AWSModel /** @@ -681,7 +681,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents a global secondary index.

* Required parameters: [IndexName, KeySchema, Projection, ProvisionedThroughput] */ -@interface AWSDynamoDBGlobalSecondaryIndex : AZModel +@interface AWSDynamoDBGlobalSecondaryIndex : AWSModel /** @@ -709,7 +709,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the properties of a global secondary index.

*/ -@interface AWSDynamoDBGlobalSecondaryIndexDescription : AZModel +@interface AWSDynamoDBGlobalSecondaryIndexDescription : AWSModel /** @@ -752,7 +752,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the new provisioned throughput settings to apply to a global secondary index.

*/ -@interface AWSDynamoDBGlobalSecondaryIndexUpdate : AZModel +@interface AWSDynamoDBGlobalSecondaryIndexUpdate : AWSModel /** @@ -765,7 +765,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if it was asked for in the request. If the table does not have any local secondary indexes, this information is not returned in the response.

*/ -@interface AWSDynamoDBItemCollectionMetrics : AZModel +@interface AWSDynamoDBItemCollectionMetrics : AWSModel /** @@ -784,7 +784,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents a single element of a key schema. A key schema specifies the attributes that make up the primary key of a table, or the key attributes of an index.

A KeySchemaElement represents exactly one attribute of the primary key. For example, a hash type primary key would be represented by one KeySchemaElement. A hash-and-range type primary key would require one KeySchemaElement for the hash attribute, and another KeySchemaElement for the range attribute.

* Required parameters: [AttributeName, KeyType] */ -@interface AWSDynamoDBKeySchemaElement : AZModel +@interface AWSDynamoDBKeySchemaElement : AWSModel /** @@ -803,7 +803,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents a set of primary keys and, for each key, the attributes to retrieve from the table.

For each primary key, you must provide all of the key attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

* Required parameters: [Keys] */ -@interface AWSDynamoDBKeysAndAttributes : AZModel +@interface AWSDynamoDBKeysAndAttributes : AWSModel /** @@ -844,7 +844,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a ListTables operation.

*/ -@interface AWSDynamoDBListTablesOutput : AZModel +@interface AWSDynamoDBListTablesOutput : AWSModel /** @@ -863,7 +863,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents a local secondary index.

* Required parameters: [IndexName, KeySchema, Projection] */ -@interface AWSDynamoDBLocalSecondaryIndex : AZModel +@interface AWSDynamoDBLocalSecondaryIndex : AWSModel /** @@ -886,7 +886,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the properties of a local secondary index.

*/ -@interface AWSDynamoDBLocalSecondaryIndexDescription : AZModel +@interface AWSDynamoDBLocalSecondaryIndexDescription : AWSModel /** @@ -919,7 +919,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.

*/ -@interface AWSDynamoDBProjection : AZModel +@interface AWSDynamoDBProjection : AWSModel /** @@ -938,7 +938,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents the provisioned throughput settings for a specified table or index. The settings can be modified using the UpdateTable operation.

For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide.

* Required parameters: [ReadCapacityUnits, WriteCapacityUnits] */ -@interface AWSDynamoDBProvisionedThroughput : AZModel +@interface AWSDynamoDBProvisionedThroughput : AWSModel /** @@ -956,7 +956,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.

*/ -@interface AWSDynamoDBProvisionedThroughputDescription : AZModel +@interface AWSDynamoDBProvisionedThroughputDescription : AWSModel /** @@ -994,12 +994,12 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** - *

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire mapevaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

+ *

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

*/ @property (nonatomic, assign) AWSDynamoDBConditionalOperator conditionalOperator; /** - *

A map of attribute/condition pairs. This is the conditional block for the PutItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values.DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the suppliedattribute. The number of values in the list depends on the ComparisonOperatorbeing used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCIIcharacter code values. For example, a is greater than A, andaa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binaryvalues, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

For backward compatibility with previous DynamoDB releases, the following parameters can be used instead of AttributeValueList and ComparisonOperator:

  • Value - A value for DynamoDB to compare with an attribute.

  • Exists - Causes DynamoDB to evaluate the value before attempting the conditional operation:

    • If Exists is true, DynamoDB will check to see if that attribute value already exists in the table. If it is found, then the condition evaluates to true; otherwise the condition evaluate to false.

    • If Exists is false, DynamoDB assumes that the attribute value does not exist in the table. If in fact the value does not exist, then the assumption is valid and the condition evaluates to true. If the value is found, despite the assumption that it does not exist, the condition evaluates to false.

Even though DynamoDB continues to accept the Value and Exists parameters, they are now deprecated. We recommend that you use AttributeValueList and ComparisonOperator instead, since they allow you to construct a much wider range of conditions.

The Value and Exists parameters are incompatible with AttributeValueList and ComparisonOperator. If you attempt to use both sets of parameters at once, DynamoDB will throw a ValidationException.

+ *

A map of attribute/condition pairs. This is the conditional block for the PutItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

*/ @property (nonatomic, strong) NSDictionary *expected; @@ -1033,7 +1033,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a PutItem operation.

*/ -@interface AWSDynamoDBPutItemOutput : AZModel +@interface AWSDynamoDBPutItemOutput : AWSModel /** @@ -1057,7 +1057,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents a request to perform a PutItem operation on an item.

* Required parameters: [Item] */ -@interface AWSDynamoDBPutRequest : AZModel +@interface AWSDynamoDBPutRequest : AWSModel /** @@ -1075,12 +1075,12 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** - *

The names of one or more attributes to retrieve.If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption.DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

You cannot use both AttributesToGet and Select together in a Query request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

If you are querying a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency.

If you are querying a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.

+ *

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

You cannot use both AttributesToGet and Select together in a Query request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

If you are querying a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency.

If you are querying a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.

*/ @property (nonatomic, strong) NSArray *attributesToGet; /** - *

A logical operator to apply to the conditions in the QueryFilter map:

  • AND - If all of the conditions evaluate to true, then the entire mapevaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

+ *

A logical operator to apply to the conditions in the QueryFilter map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

*/ @property (nonatomic, assign) AWSDynamoDBConditionalOperator conditionalOperator; @@ -1105,7 +1105,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @property (nonatomic, strong) NSDictionary *keyConditions; /** - *

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a LastEvaluatedKey toapply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

+ *

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

*/ @property (nonatomic, strong) NSNumber *limit; @@ -1139,7 +1139,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a Query operation.

*/ -@interface AWSDynamoDBQueryOutput : AZModel +@interface AWSDynamoDBQueryOutput : AWSModel /** @@ -1177,12 +1177,12 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** - *

The names of one or more attributes to retrieve.If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption.DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

+ *

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

*/ @property (nonatomic, strong) NSArray *attributesToGet; /** - *

A logical operator to apply to the conditions in the ScanFilter map:

  • AND - If all of the conditions evaluate to true, then the entire mapevaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

+ *

A logical operator to apply to the conditions in the ScanFilter map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

*/ @property (nonatomic, assign) AWSDynamoDBConditionalOperator conditionalOperator; @@ -1192,7 +1192,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @property (nonatomic, strong) NSDictionary *exclusiveStartKey; /** - *

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a LastEvaluatedKey toapply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

+ *

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

*/ @property (nonatomic, strong) NSNumber *limit; @@ -1231,7 +1231,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of a Scan operation.

*/ -@interface AWSDynamoDBScanOutput : AZModel +@interface AWSDynamoDBScanOutput : AWSModel /** @@ -1264,7 +1264,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the properties of a table.

*/ -@interface AWSDynamoDBTableDescription : AZModel +@interface AWSDynamoDBTableDescription : AWSModel /** @@ -1278,7 +1278,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @property (nonatomic, strong) NSDate *creationDateTime; /** - *

The global secondary indexes, if any, on the table. Each index is scoped to a given hash key value. Each element is composed of:

  • IndexName - The name of the global secondary index.

  • IndexSizeBytes - The total size of the global secondary index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • IndexStatus - The current status of the global secondary index:

    • CREATING - The index is being created.

    • UPDATING - The index is being updated.

    • DELETING - The index is being deleted.

    • ACTIVE - The index is ready for use.

  • ItemCount - The number of items in the global secondary index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that areprojected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units, along with data about increases and decreases.

If the table is in the DELETING state, no information about indexes will be returned.

+ *

The global secondary indexes, if any, on the table. Each index is scoped to a given hash key value. Each element is composed of:

  • IndexName - The name of the global secondary index.

  • IndexSizeBytes - The total size of the global secondary index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • IndexStatus - The current status of the global secondary index:

    • CREATING - The index is being created.

    • UPDATING - The index is being updated.

    • DELETING - The index is being deleted.

    • ACTIVE - The index is ready for use.

  • ItemCount - The number of items in the global secondary index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units, along with data about increases and decreases.

If the table is in the DELETING state, no information about indexes will be returned.

*/ @property (nonatomic, strong) NSArray *globalSecondaryIndexes; @@ -1293,7 +1293,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { @property (nonatomic, strong) NSArray *keySchema; /** - *

Represents one or more local secondary indexes on the table. Each index is scoped to a given hash key value. Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount of data within a given item collection cannot exceed 10 GB. Each element is composed of:

  • IndexName - The name of the local secondary index.

  • KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that areprojected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • ItemCount - Represents the number of items in the index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

If the table is in the DELETING state, no information about indexes will be returned.

+ *

Represents one or more local secondary indexes on the table. Each index is scoped to a given hash key value. Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount of data within a given item collection cannot exceed 10 GB. Each element is composed of:

  • IndexName - The name of the local secondary index.

  • KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • ItemCount - Represents the number of items in the index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

If the table is in the DELETING state, no information about indexes will be returned.

*/ @property (nonatomic, strong) NSArray *localSecondaryIndexes; @@ -1323,7 +1323,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { *

Represents the new provisioned throughput settings to be applied to a global secondary index.

* Required parameters: [IndexName, ProvisionedThroughput] */ -@interface AWSDynamoDBUpdateGlobalSecondaryIndexAction : AZModel +@interface AWSDynamoDBUpdateGlobalSecondaryIndexAction : AWSModel /** @@ -1346,17 +1346,17 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** - *

The names of attributes to be modified, the action to perform on each, and the new value for each. If you are updating an attribute that is an index key attribute for any indexes on that table, the attribute type must match the index key type defined in the AttributesDefinition of the table description. You can use UpdateItem to update any non-key attributes.

Attribute values cannot be null. String and binary type attributes must have lengths greater than zero. Set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException.

Each AttributeUpdates element consists of an attribute name to modify, along with the following:

  • Value - The new value, if applicable, for this attribute.

  • Action - Specifies how to perform the update. Valid values for Action are PUT, DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table.

    If an item with the specified Key is found in the table:

    • PUT - Adds the specified attribute to the item. If the attribute already exists, it is replaced by the new value.

    • DELETE - If no value is specified, the attribute and its value are removed from the item. The data type of the specified value must match the existing value's data type.

      If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specified [a,c], then the final attribute value would be [b]. Specifying an empty set is an error.

    • ADD - If the attribute does not already exist, then the attribute and its values are added to the item. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute:

      • If the existing attribute is a number, and if Value is also a number, then the Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute.

        If you use ADD to increment or decrement a number value for an item that doesn't exist before the update, DynamoDB uses 0 as the initial value.

        In addition, if you use ADD to update an existing item, and intend to increment or decrement an attribute value which does not yet exist, DynamoDB uses 0 as the initial value. For example, suppose that the item you want to update does not yet have an attribute named itemcount, but you decide to ADD the number 3 to this attribute anyway, even though it currently does not exist. DynamoDB will create the itemcount attribute, set its initial value to 0, and finally add 3 to it. The result will be a new itemcount attribute in the item, with a value of 3.

      • If the existing data type is a set, and if the Value is also a set, then the Value is added to the existing set. (This is a set operation, not mathematical addition.) For example, if the attribute value was the set [1,2], and the ADD action specified [3], then the final attribute value would be [1,2,3]. An error occurs if an Add action is specified for a set attribute and the attribute type specified does not match the existing set type.

        Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The same holds true for number sets and binary sets.

      This action is only valid for an existing attribute whose data type is number or is a set. Do not use ADD for any other data types.

    If no item with the specified Key is found:

    • PUT - DynamoDB creates a new item with the specified primary key, and then adds the attribute.

    • DELETE - Nothing happens; there is no attribute to delete.

    • ADD - DynamoDB creates an item with the supplied primary key and number (or set of numbers) for the attribute value. The only data types allowed are number and number set; no other data types can be specified.

If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

+ *

The names of attributes to be modified, the action to perform on each, and the new value for each. If you are updating an attribute that is an index key attribute for any indexes on that table, the attribute type must match the index key type defined in the AttributesDefinition of the table description. You can use UpdateItem to update any non-key attributes.

Attribute values cannot be null. String and binary type attributes must have lengths greater than zero. Set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException.

Each AttributeUpdates element consists of an attribute name to modify, along with the following:

  • Value - The new value, if applicable, for this attribute.

  • Action - Specifies how to perform the update. Valid values for Action are PUT, DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table.

    If an item with the specified Key is found in the table:

    • PUT - Adds the specified attribute to the item. If the attribute already exists, it is replaced by the new value.

    • DELETE - If no value is specified, the attribute and its value are removed from the item. The data type of the specified value must match the existing value's data type.

      If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specified [a,c], then the final attribute value would be [b]. Specifying an empty set is an error.

    • ADD - If the attribute does not already exist, then the attribute and its values are added to the item. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute:

      • If the existing attribute is a number, and if Value is also a number, then the Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute.

      • If the existing data type is a set, and if the Value is also a set, then the Value is added to the existing set. (This is a set operation, not mathematical addition.) For example, if the attribute value was the set [1,2], and the ADD action specified [3], then the final attribute value would be [1,2,3]. An error occurs if an Add action is specified for a set attribute and the attribute type specified does not match the existing set type.

        Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The same holds true for number sets and binary sets.

      This action is only valid for an existing attribute whose data type is number or is a set. Do not use ADD for any other data types.

    If no item with the specified Key is found:

    • PUT - DynamoDB creates a new item with the specified primary key, and then adds the attribute.

    • DELETE - Nothing happens; there is no attribute to delete.

    • ADD - DynamoDB creates an item with the supplied primary key and number (or set of numbers) for the attribute value. The only data types allowed are number and number set; no other data types can be specified.

If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

*/ @property (nonatomic, strong) NSDictionary *attributeUpdates; /** - *

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire mapevaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

+ *

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

*/ @property (nonatomic, assign) AWSDynamoDBConditionalOperator conditionalOperator; /** - *

A map of attribute/condition pairs. This is the conditional block for the UpdateItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values.DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the suppliedattribute. The number of values in the list depends on the ComparisonOperatorbeing used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCIIcharacter code values. For example, a is greater than A, andaa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binaryvalues, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

For backward compatibility with previous DynamoDB releases, the following parameters can be used instead of AttributeValueList and ComparisonOperator:

  • Value - A value for DynamoDB to compare with an attribute.

  • Exists - Causes DynamoDB to evaluate the value before attempting the conditional operation:

    • If Exists is true, DynamoDB will check to see if that attribute value already exists in the table. If it is found, then the condition evaluates to true; otherwise the condition evaluate to false.

    • If Exists is false, DynamoDB assumes that the attribute value does not exist in the table. If in fact the value does not exist, then the assumption is valid and the condition evaluates to true. If the value is found, despite the assumption that it does not exist, the condition evaluates to false.

Even though DynamoDB continues to accept the Value and Exists parameters, they are now deprecated. We recommend that you use AttributeValueList and ComparisonOperator instead, since they allow you to construct a much wider range of conditions.

The Value and Exists parameters are incompatible with AttributeValueList and ComparisonOperator. If you attempt to use both sets of parameters at once, DynamoDB will throw a ValidationException.

+ *

A map of attribute/condition pairs. This is the conditional block for the UpdateItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not equal {"NS":["6", "2", "1"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not equal {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set ("SS", "NS", or "BS"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {"S":"6"} does not compare to {"N":"6"}. Also, {"N":"6"} does not compare to {"NS":["6", "2", "1"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

*/ @property (nonatomic, strong) NSDictionary *expected; @@ -1390,7 +1390,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of an UpdateItem operation.

*/ -@interface AWSDynamoDBUpdateItemOutput : AZModel +@interface AWSDynamoDBUpdateItemOutput : AWSModel /** @@ -1437,7 +1437,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents the output of an UpdateTable operation.

*/ -@interface AWSDynamoDBUpdateTableOutput : AZModel +@interface AWSDynamoDBUpdateTableOutput : AWSModel /** @@ -1450,7 +1450,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTableStatus) { /** *

Represents an operation to perform - either DeleteItem or PutItem. You can only specify one of these operations, not both, in a single WriteRequest. If you do need to perform both of these operations, you will need to specify two separate WriteRequest objects.

*/ -@interface AWSDynamoDBWriteRequest : AZModel +@interface AWSDynamoDBWriteRequest : AWSModel /** diff --git a/DynamoDB/AWSDynamoDBModel.m b/DynamoDB/AWSDynamoDBModel.m index c567a5acd93..f2bca83107c 100644 --- a/DynamoDB/AWSDynamoDBModel.m +++ b/DynamoDB/AWSDynamoDBModel.m @@ -14,7 +14,7 @@ */ #import "AWSDynamoDBModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSDynamoDBErrorDomain = @"com.amazonaws.AWSDynamoDBErrorDomain"; @@ -69,15 +69,6 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { }; } -+ (NSValueTransformer *)BJSONTransformer { - return [MTLValueTransformer reversibleTransformerWithForwardBlock:^NSData *(NSString *value) { - return [[NSData alloc] initWithBase64EncodedString:value - options:kNilOptions]; - } reverseBlock:^NSString *(NSData *value) { - return [value az_base64EncodedString]; - }]; -} - @end @implementation AWSDynamoDBAttributeValueUpdate @@ -133,9 +124,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)requestItemsJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBKeysAndAttributes class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBKeysAndAttributes class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -184,17 +175,17 @@ + (NSValueTransformer *)consumedCapacityJSONTransformer { + (NSValueTransformer *)responsesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"map" withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"map" withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"map"]; + return [AWSModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"map"]; }]; } + (NSValueTransformer *)unprocessedKeysJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBKeysAndAttributes class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBKeysAndAttributes class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -212,9 +203,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)requestItemsJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"structure" withModelClass:[AWSDynamoDBWriteRequest class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"structure" withModelClass:[AWSDynamoDBWriteRequest class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"structure"]; + return [AWSModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"structure"]; }]; } @@ -285,17 +276,17 @@ + (NSValueTransformer *)consumedCapacityJSONTransformer { + (NSValueTransformer *)itemCollectionMetricsJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"structure" withModelClass:[AWSDynamoDBItemCollectionMetrics class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"structure" withModelClass:[AWSDynamoDBItemCollectionMetrics class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"structure"]; + return [AWSModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"structure"]; }]; } + (NSValueTransformer *)unprocessedItemsJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"structure" withModelClass:[AWSDynamoDBWriteRequest class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONArrayDictionary:JSONDictionary arrayElementType:@"structure" withModelClass:[AWSDynamoDBWriteRequest class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"structure"]; + return [AWSModelUtility JSONArrayDictionaryFromMapMTLDictionary:mapMTLDictionary arrayElementType:@"structure"]; }]; } @@ -417,17 +408,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)globalSecondaryIndexesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCapacity class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCapacity class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } + (NSValueTransformer *)localSecondaryIndexesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCapacity class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCapacity class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -524,17 +515,17 @@ + (NSValueTransformer *)conditionalOperatorJSONTransformer { + (NSValueTransformer *)expectedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBExpectedAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBExpectedAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } + (NSValueTransformer *)keyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -638,9 +629,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -664,9 +655,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)keyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -832,9 +823,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)keyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -882,9 +873,9 @@ + (NSValueTransformer *)consumedCapacityJSONTransformer { + (NSValueTransformer *)itemJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1000,9 +991,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)itemCollectionKeyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1053,9 +1044,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)keysJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONArray) { - return [AZModelUtility mapMTLArrayFromJSONArray:JSONArray withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLArrayFromJSONArray:JSONArray withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLArray) { - return [AZModelUtility JSONArrayFromMapMTLArray:mapMTLArray]; + return [AWSModelUtility JSONArrayFromMapMTLArray:mapMTLArray]; }]; } @@ -1242,17 +1233,17 @@ + (NSValueTransformer *)conditionalOperatorJSONTransformer { + (NSValueTransformer *)expectedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBExpectedAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBExpectedAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } + (NSValueTransformer *)itemJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1356,9 +1347,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1382,9 +1373,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)itemJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1433,25 +1424,25 @@ + (NSValueTransformer *)conditionalOperatorJSONTransformer { + (NSValueTransformer *)exclusiveStartKeyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } + (NSValueTransformer *)keyConditionsJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCondition class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCondition class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } + (NSValueTransformer *)queryFilterJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCondition class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCondition class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1534,17 +1525,17 @@ + (NSValueTransformer *)consumedCapacityJSONTransformer { + (NSValueTransformer *)itemsJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONArray) { - return [AZModelUtility mapMTLArrayFromJSONArray:JSONArray withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLArrayFromJSONArray:JSONArray withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLArray) { - return [AZModelUtility JSONArrayFromMapMTLArray:mapMTLArray]; + return [AWSModelUtility JSONArrayFromMapMTLArray:mapMTLArray]; }]; } + (NSValueTransformer *)lastEvaluatedKeyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1591,9 +1582,9 @@ + (NSValueTransformer *)conditionalOperatorJSONTransformer { + (NSValueTransformer *)exclusiveStartKeyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1626,9 +1617,9 @@ + (NSValueTransformer *)returnConsumedCapacityJSONTransformer { + (NSValueTransformer *)scanFilterJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCondition class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBCondition class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1684,17 +1675,17 @@ + (NSValueTransformer *)consumedCapacityJSONTransformer { + (NSValueTransformer *)itemsJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONArray) { - return [AZModelUtility mapMTLArrayFromJSONArray:JSONArray withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLArrayFromJSONArray:JSONArray withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLArray) { - return [AZModelUtility JSONArrayFromMapMTLArray:mapMTLArray]; + return [AWSModelUtility JSONArrayFromMapMTLArray:mapMTLArray]; }]; } + (NSValueTransformer *)lastEvaluatedKeyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1811,9 +1802,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attributeUpdatesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValueUpdate class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValueUpdate class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1841,17 +1832,17 @@ + (NSValueTransformer *)conditionalOperatorJSONTransformer { + (NSValueTransformer *)expectedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBExpectedAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBExpectedAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } + (NSValueTransformer *)keyJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -1955,9 +1946,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSDynamoDBAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } diff --git a/DynamoDB/AWSDynamoDBObjectMapper.h b/DynamoDB/AWSDynamoDBObjectMapper.h index 09a62ecb259..d49e08d76f9 100644 --- a/DynamoDB/AWSDynamoDBObjectMapper.h +++ b/DynamoDB/AWSDynamoDBObjectMapper.h @@ -15,7 +15,8 @@ #import -#import "AZModel.h" +#import "AWSService.h" +#import "AWSModel.h" /** * Enumeration of behaviors for the save operation. @@ -32,6 +33,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBObjectMapperSaveBehavior) { }; @class BFTask; +@class AWSServiceConfiguration; @class AWSDynamoDB; @class AWSDynamoDBObjectMapperConfiguration; @class AWSDynamoDBQueryExpression; @@ -50,7 +52,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBObjectMapperSaveBehavior) { @end -@interface AWSDynamoDBModel : AZModel +@interface AWSDynamoDBModel : AWSModel - (instancetype)initWithItem:(NSDictionary *)item; @@ -65,16 +67,14 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBObjectMapperSaveBehavior) { /** * Object mapper for domain-object interaction with DynamoDB. */ -@interface AWSDynamoDBObjectMapper : NSObject - -@property (nonatomic, strong, readonly) AWSDynamoDB *dynamoDB; +@interface AWSDynamoDBObjectMapper : AWSService @property (nonatomic, strong, readonly) AWSDynamoDBObjectMapperConfiguration *configuration; + (instancetype)defaultDynamoDBObjectMapper; -- (instancetype)initWithDynamoDB:(AWSDynamoDB *)dynamoDB - configuration:(AWSDynamoDBObjectMapperConfiguration *)configuration; +- (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration + objectMapperConfiguration:(AWSDynamoDBObjectMapperConfiguration *)objectMapperConfiguration; /** * Saves the object given into DynamoDB, using the default configuration. diff --git a/DynamoDB/AWSDynamoDBObjectMapper.m b/DynamoDB/AWSDynamoDBObjectMapper.m index ddc9321b91c..2319c735e6b 100644 --- a/DynamoDB/AWSDynamoDBObjectMapper.m +++ b/DynamoDB/AWSDynamoDBObjectMapper.m @@ -90,16 +90,25 @@ @interface AWSDynamoDBObjectMapper() @implementation AWSDynamoDBObjectMapper + (instancetype)defaultDynamoDBObjectMapper { - AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [[AWSDynamoDBObjectMapper alloc] initWithDynamoDB:[AWSDynamoDB defaultDynamoDB] - configuration:[AWSDynamoDBObjectMapperConfiguration new]]; - return dynamoDBObjectMapper; + if (![AWSServiceManager defaultServiceManager].defaultServiceConfiguration) { + return nil; + } + + static AWSDynamoDBObjectMapper *_dynamoDBObjectMapper = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _dynamoDBObjectMapper = [[AWSDynamoDBObjectMapper alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager].defaultServiceConfiguration + objectMapperConfiguration:[AWSDynamoDBObjectMapperConfiguration new]]; + }); + + return _dynamoDBObjectMapper; } -- (instancetype)initWithDynamoDB:(AWSDynamoDB *)dynamoDB - configuration:(AWSDynamoDBObjectMapperConfiguration *)configuration { +- (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration + objectMapperConfiguration:(AWSDynamoDBObjectMapperConfiguration *)objectMapperConfiguration { if (self = [super init]) { - _dynamoDB = dynamoDB; - _configuration = [configuration copy]; + _dynamoDB = [[AWSDynamoDB alloc] initWithConfiguration:configuration]; + _configuration = [objectMapperConfiguration copy]; } return self; diff --git a/DynamoDB/Resources/dynamodb-2012-08-10.json b/DynamoDB/Resources/dynamodb-2012-08-10.json index 84c65f6accb..88ea7fb4a4f 100644 --- a/DynamoDB/Resources/dynamodb-2012-08-10.json +++ b/DynamoDB/Resources/dynamodb-2012-08-10.json @@ -9,7 +9,7 @@ "targetPrefix":"DynamoDB_20120810", "protocol":"json" }, - "documentation":"Amazon DynamoDB\n Overview\n

This is the Amazon DynamoDB API Reference. This guide provides descriptions and samples of the low-level\n DynamoDB API. For information about DynamoDB application development, go to the Amazon DynamoDB Developer Guide.

\n\n

Instead of making the requests to the low-level DynamoDB API directly from your application, we\n recommend that you use the AWS Software Development Kits (SDKs). The easy-to-use libraries in\n the AWS SDKs make it unnecessary to call the low-level DynamoDB API directly from your\n application. The libraries take care of request authentication, serialization, and connection\n management. For more information, go to Using the AWS\n SDKs with DynamoDB in the Amazon DynamoDB Developer Guide.

\n\n

If you decide to code against the low-level DynamoDB API directly, you will need to write the\n necessary code to authenticate your requests. For more information on signing your requests,\n go to Using the DynamoDB API in the\n Amazon DynamoDB Developer Guide.

\n\n

The following are short descriptions of each low-level API action, organized by function.

\n

\n Managing Tables\n

\n

\n

    \n
  • \n

    CreateTable - Creates a table with user-specified provisioned throughput\n settings. You must designate one attribute as the hash primary key for the table; you\n can optionally designate a second attribute as the range primary key. DynamoDB creates\n indexes on these key attributes for fast data access. Optionally, you can create one or\n more secondary indexes, which provide fast data access using non-key attributes.

    \n
  • \n
  • \n

    DescribeTable - Returns metadata for a table, such as table size, status, and\n index information.

    \n
  • \n
  • \n

    UpdateTable - Modifies the provisioned throughput settings for a table.\n Optionally, you can modify the provisioned throughput settings for global secondary indexes on the\n table.

    \n
  • \n
  • \n

    ListTables - Returns a list of all tables associated with the current AWS\n account and endpoint.

    \n
  • \n
  • \n

    DeleteTable - Deletes a table and all of its indexes.

    \n
  • \n
\n

\n

For conceptual information about managing tables, go to Working with Tables in the\n Amazon DynamoDB Developer Guide.

\n\n

\n Reading Data\n

\n

\n

    \n
  • \n

    GetItem - Returns a set of attributes for the item that has a given primary key.\n By default, GetItem performs an eventually consistent read; however, applications\n can specify a strongly consistent read instead.

    \n
  • \n
  • \n

    BatchGetItem - Performs multiple GetItem requests for data items using\n their primary keys, from one table or multiple tables. The response from\n BatchGetItem has a size limit of 1 MB and returns a maximum of\n 100 items. Both eventually consistent and strongly\n consistent reads can be used.

    \n
  • \n
  • \n

    Query - Returns one or more items from a table or a secondary index. You must provide a\n specific hash key value. You can narrow the scope of the query using comparison\n operators against a range key value, or on the index key. Query supports either\n eventual or strong consistency. A single response has a size limit of\n 1 MB.

    \n
  • \n
  • \n

    Scan - Reads every item in a table; the result set is eventually consistent. You\n can limit the number of items returned by filtering the data attributes, using\n conditional expressions. Scan can be used to enable ad-hoc querying of a table\n against non-key attributes; however, since this is a full table scan without using an\n index, Scan should not be used for any application query use case that requires\n predictable performance.

    \n
  • \n
\n

\n

For conceptual information about reading data, go to Working with Items and Query and Scan Operations in the\n Amazon DynamoDB Developer Guide.

\n\n

\n Modifying Data\n

\n

\n

    \n
  • \n

    PutItem - Creates a new item, or replaces an existing item with a new item\n (including all the attributes). By default, if an item in the table already exists with\n the same primary key, the new item completely replaces the existing item. You can use\n conditional operators to replace an item only if its attribute values match certain\n conditions, or to insert a new item only if that item doesn't already exist.

    \n
  • \n
  • \n

    UpdateItem - Modifies the attributes of an existing item. You can also use\n conditional operators to perform an update only if the item's attribute values match\n certain conditions.

    \n
  • \n
  • \n

    DeleteItem - Deletes an item in a table by primary key. You can use conditional\n operators to perform a delete an item only if the item's attribute values match certain\n conditions.

    \n
  • \n
  • \n

    BatchWriteItem - Performs multiple PutItem and DeleteItem requests\n across multiple tables in a single request. A failure of any request(s) in the batch\n will not cause the entire BatchWriteItem operation to fail. Supports batches of\n up to 25 items to put or delete, with a maximum total\n request size of 1 MB.

    \n
  • \n
\n

\n

For conceptual information about modifying data, go to Working with Items and Query and Scan Operations in the\n Amazon DynamoDB Developer Guide.

", + "documentation":"Amazon DynamoDB Overview

This is the Amazon DynamoDB API Reference. This guide provides descriptions and samples of the low-level DynamoDB API. For information about DynamoDB application development, go to the Amazon DynamoDB Developer Guide.

Instead of making the requests to the low-level DynamoDB API directly from your application, we recommend that you use the AWS Software Development Kits (SDKs). The easy-to-use libraries in the AWS SDKs make it unnecessary to call the low-level DynamoDB API directly from your application. The libraries take care of request authentication, serialization, and connection management. For more information, go to Using the AWS SDKs with DynamoDB in the Amazon DynamoDB Developer Guide.

If you decide to code against the low-level DynamoDB API directly, you will need to write the necessary code to authenticate your requests. For more information on signing your requests, go to Using the DynamoDB API in the Amazon DynamoDB Developer Guide.

The following are short descriptions of each low-level API action, organized by function.

Managing Tables

  • CreateTable - Creates a table with user-specified provisioned throughput settings. You must designate one attribute as the hash primary key for the table; you can optionally designate a second attribute as the range primary key. DynamoDB creates indexes on these key attributes for fast data access. Optionally, you can create one or more secondary indexes, which provide fast data access using non-key attributes.

  • DescribeTable - Returns metadata for a table, such as table size, status, and index information.

  • UpdateTable - Modifies the provisioned throughput settings for a table. Optionally, you can modify the provisioned throughput settings for global secondary indexes on the table.

  • ListTables - Returns a list of all tables associated with the current AWS account and endpoint.

  • DeleteTable - Deletes a table and all of its indexes.

For conceptual information about managing tables, go to Working with Tables in the Amazon DynamoDB Developer Guide.

Reading Data

  • GetItem - Returns a set of attributes for the item that has a given primary key. By default, GetItem performs an eventually consistent read; however, applications can specify a strongly consistent read instead.

  • BatchGetItem - Performs multiple GetItem requests for data items using their primary keys, from one table or multiple tables. The response from BatchGetItem has a size limit of 1 MB and returns a maximum of 100 items. Both eventually consistent and strongly consistent reads can be used.

  • Query - Returns one or more items from a table or a secondary index. You must provide a specific hash key value. You can narrow the scope of the query using comparison operators against a range key value, or on the index key. Query supports either eventual or strong consistency. A single response has a size limit of 1 MB.

  • Scan - Reads every item in a table; the result set is eventually consistent. You can limit the number of items returned by filtering the data attributes, using conditional expressions. Scan can be used to enable ad-hoc querying of a table against non-key attributes; however, since this is a full table scan without using an index, Scan should not be used for any application query use case that requires predictable performance.

For conceptual information about reading data, go to Working with Items and Query and Scan Operations in the Amazon DynamoDB Developer Guide.

Modifying Data

  • PutItem - Creates a new item, or replaces an existing item with a new item (including all the attributes). By default, if an item in the table already exists with the same primary key, the new item completely replaces the existing item. You can use conditional operators to replace an item only if its attribute values match certain conditions, or to insert a new item only if that item doesn't already exist.

  • UpdateItem - Modifies the attributes of an existing item. You can also use conditional operators to perform an update only if the item's attribute values match certain conditions.

  • DeleteItem - Deletes an item in a table by primary key. You can use conditional operators to perform a delete an item only if the item's attribute values match certain conditions.

  • BatchWriteItem - Performs multiple PutItem and DeleteItem requests across multiple tables in a single request. A failure of any request(s) in the batch will not cause the entire BatchWriteItem operation to fail. Supports batches of up to 25 items to put or delete, with a maximum total request size of 1 MB.

For conceptual information about modifying data, go to Working with Items and Query and Scan Operations in the Amazon DynamoDB Developer Guide.

", "operations":{ "BatchGetItem":{ "name":"BatchGetItem", @@ -29,12 +29,12 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"InternalServerError", @@ -43,7 +43,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

The BatchGetItem operation returns the attributes of one or more items from one or\n more tables. You identify requested items by primary key.

\n

A single operation can retrieve up to 1 MB of data, which can contain as many\n as 100 items. BatchGetItem will return a partial result\n if the response size limit is exceeded, the table's provisioned throughput is exceeded, or an\n internal processing failure occurs. If a partial result is returned, the operation returns a\n value for UnprocessedKeys. You can use this value to retry the operation starting with\n the next item to get.

\n

For example, if you ask to retrieve 100 items, but each individual item is 50 KB in size, the\n system returns 20 items (1 MB) and an appropriate UnprocessedKeys value\n so you can get the next page of results. If desired, your application can include its own\n logic to assemble the pages of results into one dataset.

\n

If none of the items can be processed due to insufficient provisioned throughput on\n all of the tables in the request, then BatchGetItem will throw a\n ProvisionedThroughputExceededException. If at least one of the items is\n successfully processed, then BatchGetItem completes successfully, while returning the\n keys of the unread items in UnprocessedKeys.

\n

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

\n

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

\n

By default, BatchGetItem performs eventually consistent reads on every table in the\n request. If you want strongly consistent reads instead, you can set ConsistentRead to\n true for any or all tables.

\n

In order to minimize response latency, BatchGetItem retrieves items in parallel.

\n

When designing your application, keep in mind that DynamoDB does not return attributes in any\n particular order. To help parse the response by item, include the primary key values for the\n items in your request in the AttributesToGet parameter.

\n

If a requested item does not exist, it is not returned in the result. Requests for\n nonexistent items consume the minimum read capacity units according to the type of read. For\n more information, see Capacity Units Calculations in the Amazon DynamoDB Developer Guide.

\n\n \n \n Retrieve Items From Multiple Tables\n The following sample requests attributes from two different\n tables.\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.BatchGetItem \n\n{\n \"RequestItems\": {\n \"Forum\": {\n \"Keys\": [\n {\n \"Name\":{\"S\":\"Amazon DynamoDB\"}\n },\n {\n \"Name\":{\"S\":\"Amazon RDS\"}\n },\n {\n \"Name\":{\"S\":\"Amazon Redshift\"}\n }\n ],\n \"AttributesToGet\": [\n \"Name\",\"Threads\",\"Messages\",\"Views\"\n ]\n },\n \"Thread\": {\n \"Keys\": [\n {\n \"ForumName\":{\"S\":\"Amazon DynamoDB\"},\n \"Subject\":{\"S\":\"Concurrent reads\"}\n }\n ],\n \"AttributesToGet\": [\n \"Tags\",\"Message\"\n ]\n }\n },\n \"ReturnConsumedCapacity\": \"TOTAL\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"Responses\": {\n \"Forum\": [\n {\n \"Name\":{\n \"S\":\"Amazon DynamoDB\"\n },\n \"Threads\":{\n \"N\":\"5\"\n },\n \"Messages\":{\n \"N\":\"19\"\n },\n \"Views\":{\n \"N\":\"35\"\n }\n },\n {\n \"Name\":{\n \"S\":\"Amazon RDS\"\n },\n \"Threads\":{\n \"N\":\"8\"\n },\n \"Messages\":{\n \"N\":\"32\"\n },\n \"Views\":{\n \"N\":\"38\"\n }\n },\n {\n \"Name\":{\n \"S\":\"Amazon Redshift\"\n },\n \"Threads\":{\n \"N\":\"12\"\n },\n \"Messages\":{\n \"N\":\"55\"\n },\n \"Views\":{\n \"N\":\"47\"\n }\n }\n ]\n \"Thread\": [\n {\n \"Tags\":{\n \"SS\":[\"Reads\",\"MultipleUsers\"]\n },\n \"Message\":{\n \"S\":\"How many users can read a single data item at a time? Are there any limits?\"\n }\n }\n ]\n },\n \"UnprocessedKeys\": {\n },\n \"ConsumedCapacity\": [\n {\n \"TableName\": \"Forum\",\n \"CapacityUnits\": 3\n },\n {\n \"TableName\": \"Thread\",\n \"CapacityUnits\": 1\n }\n ]\n}\n \n \n " + "documentation":"

The BatchGetItem operation returns the attributes of one or more items from one or more tables. You identify requested items by primary key.

A single operation can retrieve up to 1 MB of data, which can contain as many as 100 items. BatchGetItem will return a partial result if the response size limit is exceeded, the table's provisioned throughput is exceeded, or an internal processing failure occurs. If a partial result is returned, the operation returns a value for UnprocessedKeys. You can use this value to retry the operation starting with the next item to get.

For example, if you ask to retrieve 100 items, but each individual item is 50 KB in size, the system returns 20 items (1 MB) and an appropriate UnprocessedKeys value so you can get the next page of results. If desired, your application can include its own logic to assemble the pages of results into one dataset.

If none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchGetItem will throw a ProvisionedThroughputExceededException. If at least one of the items is successfully processed, then BatchGetItem completes successfully, while returning the keys of the unread items in UnprocessedKeys.

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

By default, BatchGetItem performs eventually consistent reads on every table in the request. If you want strongly consistent reads instead, you can set ConsistentRead to true for any or all tables.

In order to minimize response latency, BatchGetItem retrieves items in parallel.

When designing your application, keep in mind that DynamoDB does not return attributes in any particular order. To help parse the response by item, include the primary key values for the items in your request in the AttributesToGet parameter.

If a requested item does not exist, it is not returned in the result. Requests for nonexistent items consume the minimum read capacity units according to the type of read. For more information, see Capacity Units Calculations in the Amazon DynamoDB Developer Guide.

" }, "BatchWriteItem":{ "name":"BatchWriteItem", @@ -63,17 +63,17 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"ItemCollectionSizeLimitExceededException", "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or\n more local secondary indexes.

" + "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" }, { "shape":"InternalServerError", @@ -82,7 +82,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

The BatchWriteItem operation puts or deletes multiple items in one or more tables. A\n single call to BatchWriteItem can write up to 1 MB of data, which can\n comprise as many as 25 put or delete requests. Individual items\n to be written can be as large as 64 KB.

\n \n

BatchWriteItem cannot update items. To update items, use the UpdateItem\n API.

\n
\n

The individual PutItem and DeleteItem operations specified in\n BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any\n requested operations fail because the table's provisioned throughput is exceeded or an\n internal processing failure occurs, the failed operations are returned in the\n UnprocessedItems response parameter. You can investigate and optionally resend the\n requests. Typically, you would call BatchWriteItem in a loop. Each iteration would\n check for unprocessed items and submit a new BatchWriteItem request with those\n unprocessed items until all items have been processed.

\n

Note that if none of the items can be processed due to insufficient provisioned\n throughput on all of the tables in the request, then BatchGetItem will throw a\n ProvisionedThroughputExceededException.

\n

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

\n

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

\n \n

With BatchWriteItem, you can efficiently write or delete large amounts of data, such\n as from Amazon Elastic MapReduce (EMR), or copy data from another database into DynamoDB. In\n order to improve performance with these large-scale operations, BatchWriteItem does not\n behave in the same way as individual PutItem and DeleteItem calls would For\n example, you cannot specify conditions on individual put and delete requests, and\n BatchWriteItem does not return deleted items in the response.

\n

If you use a programming language that supports concurrency, such as Java, you can use\n threads to write items in parallel. Your application must include the necessary logic to\n manage the threads. With languages that don't support threading, such as PHP, you must update\n or delete the specified items one at a time. In both situations, BatchWriteItem\n provides an alternative where the API performs the specified put and delete operations in\n parallel, giving you the power of the thread pool approach without having to introduce\n complexity into your application.

\n

Parallel processing reduces latency, but each specified put and delete request consumes the\n same number of write capacity units whether it is processed in parallel or not. Delete\n operations on nonexistent items consume one write capacity unit.

\n

If one or more of the following is true, DynamoDB rejects the entire batch write operation:

\n
    \n
  • \n

    One or more tables specified in the BatchWriteItem request does not exist.

    \n
  • \n
  • \n

    Primary key attributes specified on an item in the request do not match those in the\n corresponding table's primary key schema.

    \n
  • \n
  • \n

    You try to perform multiple operations on the same item in the same BatchWriteItem\n request. For example, you cannot put and delete the same item in the same\n BatchWriteItem request.

    \n
  • \n
  • \n

    The total request size exceeds 1 MB.

    \n
  • \n
  • \n

    Any individual item in a batch exceeds 64 KB.

    \n
  • \n
\n\n \n \n Multiple Operations on One Table\n This example writes several items to the Forum table. The response shows that\n the final put operation failed, possibly because the application exceeded the provisioned\n throughput on the table. The UnprocessedItems object shows the unsuccessful put request.\n The application can call BatchWriteItem again to address such unprocessed\n requests.\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.BatchWriteItem \n\n{\n \"RequestItems\": {\n \"Forum\": [\n {\n \"PutRequest\": {\n \"Item\": {\n \"Name\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"Category\": {\n \"S\": \"Amazon Web Services\"\n }\n }\n }\n },\n {\n \"PutRequest\": {\n \"Item\": {\n \"Name\": {\n \"S\": \"Amazon RDS\"\n },\n \"Category\": {\n \"S\": \"Amazon Web Services\"\n }\n }\n }\n },\n {\n \"PutRequest\": {\n \"Item\": {\n \"Name\": {\n \"S\": \"Amazon Redshift\"\n },\n \"Category\": {\n \"S\": \"Amazon Web Services\"\n }\n }\n }\n },\n {\n \"PutRequest\": {\n \"Item\": {\n \"Name\": {\n \"S\": \"Amazon ElastiCache\"\n },\n \"Category\": {\n \"S\": \"Amazon Web Services\"\n }\n }\n }\n }\n ]\n },\n \"ReturnConsumedCapacity\": \"TOTAL\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"UnprocessedItems\": {\n \"Forum\": [\n {\n \"PutRequest\": {\n \"Item\": {\n \"Name\": {\n \"S\": \"Amazon ElastiCache\"\n },\n \"Category\": {\n \"S\": \"Amazon Web Services\"\n }\n }\n }\n }\n ]\n },\n \"ConsumedCapacity\": [\n {\n \"TableName\": \"Forum\",\n \"CapacityUnits\": 3\n }\n ]\n}\n \n \n " + "documentation":"

The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 1 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 64 KB.

The individual PutItem and DeleteItem operations specified in BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the UnprocessedItems response parameter. You can investigate and optionally resend the requests. Typically, you would call BatchWriteItem in a loop. Each iteration would check for unprocessed items and submit a new BatchWriteItem request with those unprocessed items until all items have been processed.

Note that if none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchGetItem will throw a ProvisionedThroughputExceededException.

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

With BatchWriteItem, you can efficiently write or delete large amounts of data, such as from Amazon Elastic MapReduce (EMR), or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, BatchWriteItem does not behave in the same way as individual PutItem and DeleteItem calls would For example, you cannot specify conditions on individual put and delete requests, and BatchWriteItem does not return deleted items in the response.

If you use a programming language that supports concurrency, such as Java, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, such as PHP, you must update or delete the specified items one at a time. In both situations, BatchWriteItem provides an alternative where the API performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application.

Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit.

If one or more of the following is true, DynamoDB rejects the entire batch write operation:

  • One or more tables specified in the BatchWriteItem request does not exist.

  • Primary key attributes specified on an item in the request do not match those in the corresponding table's primary key schema.

  • You try to perform multiple operations on the same item in the same BatchWriteItem request. For example, you cannot put and delete the same item in the same BatchWriteItem request.

  • The total request size exceeds 1 MB.

  • Any individual item in a batch exceeds 64 KB.

" }, "CreateTable":{ "name":"CreateTable", @@ -102,12 +102,12 @@ { "shape":"ResourceInUseException", "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to\n recreate an existing table, or tried to delete a table currently in the CREATING\n state.

" + "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" }, { "shape":"LimitExceededException", "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the\n CREATING, DELETING or UPDATING state) exceeds the\n maximum allowed of 10.

\n

Also, for tables with secondary indexes, only one of those tables can be in the CREATING\n state at any point in time. Do not attempt to create more than one such table\n simultaneously.

\n

The total limit of tables in the ACTIVE state is 250.

" + "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" }, { "shape":"InternalServerError", @@ -116,7 +116,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

The CreateTable operation adds a new table to your account. In an AWS account, table\n names must be unique within each region. That is, you can have two tables with same name if\n you create the tables in different regions.

\n

CreateTable is an asynchronous operation. Upon receiving a CreateTable request,\n DynamoDB immediately returns a response with a TableStatus of CREATING. After\n the table is created, DynamoDB sets the TableStatus to ACTIVE. You can\n perform read and write operations only on an ACTIVE table.

\n

If you want to create multiple tables with secondary indexes on them, you must create them sequentially.\n Only one table with secondary indexes can be in the CREATING state at any given time.

\n

You can use the DescribeTable API to check the table status.

\n \n \n Create a Table\n This example creates a table named Thread. The table primary key consists of\n ForumName (hash) and Subject (range). A local secondary index is also created; its key consists of\n ForumName (hash) and LastPostDateTime (range).\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.CreateTable \n\n{\n \"AttributeDefinitions\": [\n {\n \"AttributeName\": \"ForumName\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"AttributeType\": \"S\"\n }\n ],\n \"TableName\": \"Thread\",\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"LocalSecondaryIndexes\": [\n {\n \"IndexName\": \"LastPostIndex\",\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"Projection\": {\n \"ProjectionType\": \"KEYS_ONLY\"\n }\n }\n ],\n \"ProvisionedThroughput\": {\n \"ReadCapacityUnits\": 5,\n \"WriteCapacityUnits\": 5\n }\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"TableDescription\": {\n \"AttributeDefinitions\": [\n {\n \"AttributeName\": \"ForumName\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"AttributeType\": \"S\"\n }\n ],\n \"CreationDateTime\": 1.36372808007E9,\n \"ItemCount\": 0,\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"LocalSecondaryIndexes\": [\n {\n \"IndexName\": \"LastPostIndex\",\n \"IndexSizeBytes\": 0,\n \"ItemCount\": 0,\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"Projection\": {\n \"ProjectionType\": \"KEYS_ONLY\"\n }\n }\n ],\n \"ProvisionedThroughput\": {\n \"NumberOfDecreasesToday\": 0,\n \"ReadCapacityUnits\": 5,\n \"WriteCapacityUnits\": 5\n },\n \"TableName\": \"Thread\",\n \"TableSizeBytes\": 0,\n \"TableStatus\": \"CREATING\"\n }\n}\n \n \n " + "documentation":"

The CreateTable operation adds a new table to your account. In an AWS account, table names must be unique within each region. That is, you can have two tables with same name if you create the tables in different regions.

CreateTable is an asynchronous operation. Upon receiving a CreateTable request, DynamoDB immediately returns a response with a TableStatus of CREATING. After the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform read and write operations only on an ACTIVE table.

If you want to create multiple tables with secondary indexes on them, you must create them sequentially. Only one table with secondary indexes can be in the CREATING state at any given time.

You can use the DescribeTable API to check the table status.

" }, "DeleteItem":{ "name":"DeleteItem", @@ -141,17 +141,17 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"ItemCollectionSizeLimitExceededException", "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or\n more local secondary indexes.

" + "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" }, { "shape":"InternalServerError", @@ -160,7 +160,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

Deletes a single item in a table by primary key. You can perform a conditional delete\n operation that deletes the item if it exists, or if it has an expected attribute value.

\n

In addition to deleting an item, you can also return the item's attribute values in the same\n operation, using the ReturnValues parameter.

\n

Unless you specify conditions, the DeleteItem is an idempotent operation; running it\n multiple times on the same item or attribute does not result in an error response.

\n

Conditional deletes are useful for only deleting items if specific conditions are met. If\n those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.

\n \n \n Delete an Item\n This example deletes an item from the Thread table, but only if that item does\n not have an attribute named Replies. Because ReturnValues is set to ALL_OLD, the response\n contains the item as it appeared before the delete.\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.DeleteItem \n\n{\n \"TableName\": \"Thread\",\n \"Key\": {\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"Subject\": {\n \"S\": \"How do I update multiple items?\"\n }\n },\n \"Expected\": {\n \"Replies\": {\n \"ComparisonOperator\": \"NULL\"\n }\n },\n \"ReturnValues\": \"ALL_OLD\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"Attributes\": {\n \"LastPostedBy\": {\n \"S\": \"fred@example.com\"\n },\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"LastPostDateTime\": {\n \"S\": \"201303201023\"\n },\n \"Tags\": {\n \"SS\": [\"Update\",\"Multiple Items\",\"HelpMe\"]\n },\n \"Subject\": {\n \"S\": \"How do I update multiple items?\"\n },\n \"Message\": {\n \"S\": \"I want to update multiple items in a single API call. What's the best way to do that?\"\n }\n }\n}\n \n \n " + "documentation":"

Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value.

In addition to deleting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

Unless you specify conditions, the DeleteItem is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Conditional deletes are useful for only deleting items if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.

" }, "DeleteTable":{ "name":"DeleteTable", @@ -180,17 +180,17 @@ { "shape":"ResourceInUseException", "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to\n recreate an existing table, or tried to delete a table currently in the CREATING\n state.

" + "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"LimitExceededException", "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the\n CREATING, DELETING or UPDATING state) exceeds the\n maximum allowed of 10.

\n

Also, for tables with secondary indexes, only one of those tables can be in the CREATING\n state at any point in time. Do not attempt to create more than one such table\n simultaneously.

\n

The total limit of tables in the ACTIVE state is 250.

" + "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" }, { "shape":"InternalServerError", @@ -199,7 +199,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

The DeleteTable operation deletes a table and all of its items. After a\n DeleteTable request, the specified table is in the DELETING state until\n DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete\n it. If a table is in CREATING or UPDATING states, then DynamoDB returns\n a ResourceInUseException. If the specified table does not exist, DynamoDB returns a\n ResourceNotFoundException. If table is already in the DELETING state, no\n error is returned.

\n \n

DynamoDB might continue to accept data read and write operations, such as GetItem and\n PutItem, on a table in the DELETING state until the table deletion is\n complete.

\n
\n

When you delete a table, any indexes on that table are also deleted.

\n\n

Use the DescribeTable API to check the status of the table.

\n\n \n \n Delete a Table\n This example deletes the Reply table.\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.DeleteTable \n\n{\n \"TableName\": \"Reply\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"TableDescription\": {\n \"ItemCount\": 0,\n \"ProvisionedThroughput\": {\n \"NumberOfDecreasesToday\": 0,\n \"ReadCapacityUnits\": 5,\n \"WriteCapacityUnits\": 5\n },\n \"TableName\": \"Reply\",\n \"TableSizeBytes\": 0,\n \"TableStatus\": \"DELETING\"\n }\n}\n \n \n " + "documentation":"

The DeleteTable operation deletes a table and all of its items. After a DeleteTable request, the specified table is in the DELETING state until DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete it. If a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException. If the specified table does not exist, DynamoDB returns a ResourceNotFoundException. If table is already in the DELETING state, no error is returned.

When you delete a table, any indexes on that table are also deleted.

Use the DescribeTable API to check the status of the table.

" }, "DescribeTable":{ "name":"DescribeTable", @@ -219,7 +219,7 @@ { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"InternalServerError", @@ -228,7 +228,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

Returns information about the table, including the current status of the table, when it was\n created, the primary key schema, and any indexes on the table.

\n \n \n Describe a Table\n \n

This example describes the Thread table.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.DescribeTable \n\n{\n \"TableName\":\"Thread\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"Table\": {\n \"AttributeDefinitions\": [\n {\n \"AttributeName\": \"ForumName\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"AttributeType\": \"S\"\n }\n ],\n \"CreationDateTime\": 1.363729002358E9,\n \"ItemCount\": 0,\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"LocalSecondaryIndexes\": [\n {\n \"IndexName\": \"LastPostIndex\",\n \"IndexSizeBytes\": 0,\n \"ItemCount\": 0,\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"Projection\": {\n \"ProjectionType\": \"KEYS_ONLY\"\n }\n }\n ],\n \"ProvisionedThroughput\": {\n \"NumberOfDecreasesToday\": 0,\n \"ReadCapacityUnits\": 5,\n \"WriteCapacityUnits\": 5\n },\n \"TableName\": \"Thread\",\n \"TableSizeBytes\": 0,\n \"TableStatus\": \"ACTIVE\"\n }\n}\n \n
\n
" + "documentation":"

Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any indexes on the table.

" }, "GetItem":{ "name":"GetItem", @@ -248,12 +248,12 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"InternalServerError", @@ -262,7 +262,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

The GetItem operation returns a set of attributes for the item with the given primary\n key. If there is no matching item, GetItem does not return any data.

\n

GetItem provides an eventually consistent read by default. If your application\n requires a strongly consistent read, set ConsistentRead to true. Although\n a strongly consistent read might take more time than an eventually consistent read, it always\n returns the last updated value.

\n \n \n Retrieve Item Attributes\n This example retrieves three attributes from the Thread table. In the response,\n the ConsumedCapacityUnits value is 1, because ConsistentRead is set to true. If\n ConsistentRead had been set to false (or not specified) for the same request, an\n eventually consistent read would have been used and ConsumedCapacityUnits would have been\n 0.5.\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.GetItem \n\n{\n \"TableName\": \"Thread\",\n \"Key\": {\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"Subject\": {\n \"S\": \"How do I update multiple items?\"\n }\n },\n \"AttributesToGet\": [\"LastPostDateTime\",\"Message\",\"Tags\"],\n \"ConsistentRead\": true,\n \"ReturnConsumedCapacity\": \"TOTAL\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"ConsumedCapacity\": {\n \"CapacityUnits\": 1,\n \"TableName\": \"Thread\"\n },\n \"Item\": {\n \"Tags\": {\n \"SS\": [\"Update\",\"Multiple Items\",\"HelpMe\"]\n },\n \"LastPostDateTime\": {\n \"S\": \"201303190436\"\n },\n \"Message\": {\n \"S\": \"I want to update multiple items in a single API call. What's the best way to do that?\"\n }\n }\n}\n \n \n " + "documentation":"

The GetItem operation returns a set of attributes for the item with the given primary key. If there is no matching item, GetItem does not return any data.

GetItem provides an eventually consistent read by default. If your application requires a strongly consistent read, set ConsistentRead to true. Although a strongly consistent read might take more time than an eventually consistent read, it always returns the last updated value.

" }, "ListTables":{ "name":"ListTables", @@ -286,7 +286,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

Returns an array of table names associated with the current account and endpoint. The output\n from ListTables is paginated, with each page returning a maximum of 100 table\n names.

\n \n \n List Tables\n \n

This example requests a list of tables, starting with a table named Forum and\n ending after three table names have been returned.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.ListTables \n\n{\n \"ExclusiveStartTableName\": \"Forum\",\n \"Limit\": 3\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"LastEvaluatedTableName\": \"Thread\",\n \"TableNames\": [\"Forum\",\"Reply\",\"Thread\"]\n}\n \n
\n
" + "documentation":"

Returns an array of table names associated with the current account and endpoint. The output from ListTables is paginated, with each page returning a maximum of 100 table names.

" }, "PutItem":{ "name":"PutItem", @@ -311,17 +311,17 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"ItemCollectionSizeLimitExceededException", "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or\n more local secondary indexes.

" + "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" }, { "shape":"InternalServerError", @@ -330,7 +330,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

Creates a new item, or replaces an old item with a new item. If an item already exists in the\n specified table with the same primary key, the new item completely replaces the existing item.\n You can perform a conditional put (insert a new item if one with the specified primary key\n doesn't exist), or replace an existing item if it has certain attribute values.

\n

In addition to putting an item, you can also return the item's attribute values in the same\n operation, using the ReturnValues parameter.

\n

When you add an item, the primary key attribute(s) are the only required attributes.\n Attribute values cannot be null. String and binary type attributes must have lengths greater\n than zero. Set type attributes cannot be empty. Requests with empty values will be rejected\n with a ValidationException.

\n

You can request that PutItem return either a copy of the old item (before the update)\n or a copy of the new item (after the update). For more information, see the\n ReturnValues description.

\n \n

To prevent a new item from replacing an existing item, use a conditional put operation with\n ComparisonOperator set to NULL for the primary key attribute, or attributes.

\n
\n

For more information about using this API, see Working with Items in the Amazon DynamoDB Developer Guide.

\n \n \n Put an Item\n \n

This example puts a new item into the Thread table. To prevent this new item from\n overwriting an existing item, \"ComparisonOperator\" is set to NULL for the primary key\n attributes.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.PutItem \n\n{\n \"TableName\": \"Thread\",\n \"Item\": {\n \"LastPostDateTime\": {\n \"S\": \"201303190422\"\n },\n \"Tags\": {\n \"SS\": [\"Update\",\"Multiple Items\",\"HelpMe\"]\n },\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"Message\": {\n \"S\": \"I want to update multiple items in a single API call. What's the best way to do that?\"\n },\n \"Subject\": {\n \"S\": \"How do I update multiple items?\"\n },\n \"LastPostedBy\": {\n \"S\": \"fred@example.com\"\n }\n },\n \"Expected\": {\n \"ForumName\": {\n \"ComparisonOperator\": \"NULL\",\n },\n \"Subject\": {\n \"ComparisonOperator\": \"NULL\",\n }\n }\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n}\n \n
\n
" + "documentation":"

Creates a new item, or replaces an old item with a new item. If an item already exists in the specified table with the same primary key, the new item completely replaces the existing item. You can perform a conditional put (insert a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values.

In addition to putting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

When you add an item, the primary key attribute(s) are the only required attributes. Attribute values cannot be null. String and binary type attributes must have lengths greater than zero. Set type attributes cannot be empty. Requests with empty values will be rejected with a ValidationException.

You can request that PutItem return either a copy of the old item (before the update) or a copy of the new item (after the update). For more information, see the ReturnValues description.

For more information about using this API, see Working with Items in the Amazon DynamoDB Developer Guide.

" }, "Query":{ "name":"Query", @@ -350,12 +350,12 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"InternalServerError", @@ -364,7 +364,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

A Query operation directly accesses items from a table using the table primary key, or\n from an index using the index key. You must provide a specific hash key value. You can narrow\n the scope of the query by using comparison operators on the range key value, or on the index\n key. You can use the ScanIndexForward parameter to get results in forward or reverse\n order, by range key or by index key.

\n

Queries that do not return results consume the minimum read capacity units according to the\n type of read.

\n

If the total number of items meeting the query criteria exceeds the result set size limit of\n 1 MB, the query stops and results are returned to the user with a\n LastEvaluatedKey to continue the query in a subsequent operation. Unlike a\n Scan operation, a Query operation never returns an empty result set and\n a LastEvaluatedKey. The LastEvaluatedKey is only provided if the results exceed\n 1 MB, or if you have used Limit.

\n

You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set\n ConsistentRead to true and obtain a strongly consistent result. Global secondary indexes support\n eventually consistent reads only, so do not specify ConsistentRead when querying a\n global secondary index.

\n \n \n Retrieving a Range of Items\n \n

This example queries the Thread table for postings between two dates. There is\n an index on LastPostDateTime to facilitate fast lookups on this attribute.

\n

All of the attributes will be returned. Any attributes that are not projected into the\n index will cause DynamoDB to fetch those attributes from the Thread table; this\n fetching occurs automatically.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.Query \n\n{\n \"TableName\": \"Thread\",\n \"IndexName\": \"LastPostIndex\",\n \"Select\": \"ALL_ATTRIBUTES\",\n \"Limit\":3,\n \"ConsistentRead\": true,\n \"KeyConditions\": {\n \"LastPostDateTime\": {\n \"AttributeValueList\": [\n {\n \"S\": \"20130101\"\n },\n {\n \"S\": \"20130115\"\n }\n ],\n \"ComparisonOperator\": \"BETWEEN\"\n },\n \"ForumName\": {\n \"AttributeValueList\": [\n {\n \"S\": \"Amazon DynamoDB\"\n }\n ],\n \"ComparisonOperator\": \"EQ\"\n }\n },\n \"ReturnConsumedCapacity\": \"TOTAL\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"Count\": 3,\n \"Items\": [\n {\n \"LastPostedBy\": {\n \"S\": \"fred@example.com\"\n },\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"LastPostDateTime\": {\n \"S\": \"20130102054211\"\n },\n \"Tags\": {\n \"SS\": [\"Problem\",\"Question\"]\n }\n },\n {\n \"LastPostedBy\": {\n \"S\": \"alice@example.com\"\n },\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"LastPostDateTime\": {\n \"S\": \"20130105111307\"\n },\n \"Tags\": {\n \"SS\": [\"Idea\"]\n }\n },\n {\n \"LastPostedBy\": {\n \"S\": \"bob@example.com\"\n },\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"LastPostDateTime\": {\n \"S\": \"20130108094417\"\n },\n \"Tags\": {\n \"SS\": [\"AppDesign\", \"HelpMe\"]\n }\n }\n ],\n \"ConsumedCapacity\": {\n \"TableName\": \"Thread\",\n \"CapacityUnits\": 1\n }\n}\n \n
\n \n Counting Items\n \n

This example returns the number of items in the Thread table for a particular\n forum.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.Query \n\n{\n \"TableName\": \"Thread\",\n \"Select\": \"COUNT\",\n \"ConsistentRead\": true,\n \"KeyConditions\": {\n \"ForumName\": {\n \"AttributeValueList\": [\n {\n \"S\": \"Amazon DynamoDB\"\n }\n ],\n \"ComparisonOperator\": \"EQ\"\n }\n }\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"Count\":`17\n}\n \n
\n
" + "documentation":"

A Query operation directly accesses items from a table using the table primary key, or from an index using the index key. You must provide a specific hash key value. You can narrow the scope of the query by using comparison operators on the range key value, or on the index key. You can use the ScanIndexForward parameter to get results in forward or reverse order, by range key or by index key.

Queries that do not return results consume the minimum read capacity units according to the type of read.

If the total number of items meeting the query criteria exceeds the result set size limit of 1 MB, the query stops and results are returned to the user with a LastEvaluatedKey to continue the query in a subsequent operation. Unlike a Scan operation, a Query operation never returns an empty result set and a LastEvaluatedKey. The LastEvaluatedKey is only provided if the results exceed 1 MB, or if you have used Limit.

You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set ConsistentRead to true and obtain a strongly consistent result. Global secondary indexes support eventually consistent reads only, so do not specify ConsistentRead when querying a global secondary index.

" }, "Scan":{ "name":"Scan", @@ -384,12 +384,12 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"InternalServerError", @@ -398,7 +398,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

The Scan operation returns one or more items and item attributes by accessing every\n item in the table. To have DynamoDB return fewer items, you can provide a ScanFilter.

\n\n

If the total number of scanned items exceeds the maximum data set size limit of\n 1 MB, the scan stops and results are returned to the user with a\n LastEvaluatedKey to continue the scan in a subsequent operation. The results also\n include the number of items exceeding the limit. A scan can result in no table data meeting\n the filter criteria.

\n

The result set is eventually consistent.

\n

By default, Scan operations proceed sequentially; however, for faster performance on\n large tables, applications can request a parallel Scan by specifying the Segment\n and TotalSegments parameters. For more information, see Parallel Scan in the\n Amazon DynamoDB Developer Guide.

\n \n \n Returning All Items\n This example returns all of the items in a table. No scan filter is\n applied.\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.Scan \n\n{\n \"TableName\": \"Reply\",\n \"ReturnConsumedCapacity\": \"TOTAL\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"ConsumedCapacity\": {\n \"CapacityUnits\": 0.5,\n \"TableName\": \"Reply\"\n },\n \"Count\": 4,\n \"Items\": [\n {\n \"PostedBy\": {\n \"S\": \"joe@example.com\"\n },\n \"ReplyDateTime\": {\n \"S\": \"20130320115336\"\n },\n \"Id\": {\n \"S\": \"Amazon DynamoDB#How do I update multiple items?\"\n },\n \"Message\": {\n \"S\": \"Have you looked at the BatchWriteItem API?\"\n }\n },\n {\n \"PostedBy\": {\n \"S\": \"fred@example.com\"\n },\n \"ReplyDateTime\": {\n \"S\": \"20130320115342\"\n },\n \"Id\": {\n \"S\": \"Amazon DynamoDB#How do I update multiple items?\"\n },\n \"Message\": {\n \"S\": \"No, I didn't know about that. Where can I find more information?\"\n }\n },\n {\n \"PostedBy\": {\n \"S\": \"joe@example.com\"\n },\n \"ReplyDateTime\": {\n \"S\": \"20130320115347\"\n },\n \"Id\": {\n \"S\": \"Amazon DynamoDB#How do I update multiple items?\"\n },\n \"Message\": {\n \"S\": \"BatchWriteItem is documented in the Amazon DynamoDB API Reference.\"\n }\n },\n {\n \"PostedBy\": {\n \"S\": \"fred@example.com\"\n },\n \"ReplyDateTime\": {\n \"S\": \"20130320115352\"\n },\n \"Id\": {\n \"S\": \"Amazon DynamoDB#How do I update multiple items?\"\n },\n \"Message\": {\n \"S\": \"OK, I'll take a look at that. Thanks!\"\n }\n }\n ],\n \"ScannedCount\": 4\n}\n \n \n \n Using a Scan Filter\n This example returns only those items matching specific criteria.\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.Scan \n\n{\n \"TableName\": \"Reply\",\n \"ScanFilter\": {\n \"PostedBy\": {\n \"AttributeValueList\": [\n {\n \"S\": \"joe@example.com\"\n }\n ],\n \"ComparisonOperator\": \"EQ\"\n }\n },\n \"ReturnConsumedCapacity\": \"TOTAL\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"ConsumedCapacity\": {\n \"CapacityUnits\": 0.5,\n \"TableName\": \"Reply\"\n },\n \"Count\": 2,\n \"Items\": [\n {\n \"PostedBy\": {\n \"S\": \"joe@example.com\"\n },\n \"ReplyDateTime\": {\n \"S\": \"20130320115336\"\n },\n \"Id\": {\n \"S\": \"Amazon DynamoDB#How do I update multiple items?\"\n },\n \"Message\": {\n \"S\": \"Have you looked at the BatchWriteItem API?\"\n }\n },\n {\n \"PostedBy\": {\n \"S\": \"joe@example.com\"\n },\n \"ReplyDateTime\": {\n \"S\": \"20130320115347\"\n },\n \"Id\": {\n \"S\": \"Amazon DynamoDB#How do I update multiple items?\"\n },\n \"Message\": {\n \"S\": \"BatchWriteItem is documented in the Amazon DynamoDB API Reference.\"\n }\n }\n ],\n \"ScannedCount\": 4\n}\n \n \n " + "documentation":"

The Scan operation returns one or more items and item attributes by accessing every item in the table. To have DynamoDB return fewer items, you can provide a ScanFilter.

If the total number of scanned items exceeds the maximum data set size limit of 1 MB, the scan stops and results are returned to the user with a LastEvaluatedKey to continue the scan in a subsequent operation. The results also include the number of items exceeding the limit. A scan can result in no table data meeting the filter criteria.

The result set is eventually consistent.

By default, Scan operations proceed sequentially; however, for faster performance on large tables, applications can request a parallel Scan by specifying the Segment and TotalSegments parameters. For more information, see Parallel Scan in the Amazon DynamoDB Developer Guide.

" }, "UpdateItem":{ "name":"UpdateItem", @@ -423,17 +423,17 @@ { "shape":"ProvisionedThroughputExceededException", "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"ItemCollectionSizeLimitExceededException", "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or\n more local secondary indexes.

" + "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" }, { "shape":"InternalServerError", @@ -442,7 +442,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

Edits an existing item's attributes, or inserts a new item if it does not already exist. You\n can put, delete, or add attribute values. You can also perform a conditional update (insert a\n new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if\n it has certain expected attribute values).

\n

In addition to updating an item, you can also return the item's attribute values in the same\n operation, using the ReturnValues parameter.

\n \n \n Conditional Update\n \n

This example updates the Thread table, changing the LastPostedBy attribute-but only if\n LastPostedBy is currently \"fred@example.com\". All of the item's attributes, as they\n appear after the update, are returned in the response.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.UpdateItem \n\n{\n \"TableName\": \"Thread\",\n \"Key\": {\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"Subject\": {\n \"S\": \"Maximum number of items?\"\n }\n },\n \"AttributeUpdates\": {\n \"LastPostedBy\": {\n \"Value\": {\n \"S\": \"alice@example.com\"\n },\n \"Action\": \"PUT\"\n }\n },\n \"Expected\": {\n \"LastPostedBy\": {\n \"ComparisonOperator\":\"EQ\",\n \"AttributeValueList\": [ { \"S\": \"fred@example.com\"} ]\n }\n },\n \"ReturnValues\": \"ALL_NEW\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> {\n \"Attributes\": {\n \"LastPostedBy\": {\n \"S\": \"alice@example.com\"\n },\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"LastPostDateTime\": {\n \"S\": \"20130320010350\"\n },\n \"Tags\": {\n \"SS\": [\"Update\",\"Multiple Items\",\"HelpMe\"]\n },\n \"Subject\": {\n \"S\": \"Maximum number of items?\"\n },\n \"Views\": {\n \"N\": \"5\"\n },\n \"Message\": {\n \"S\": \"I want to put 10 million data items to an Amazon DynamoDB table. Is there an upper limit?\"\n }\n }\n}\n \n
\n \n Atomic Counter\n \n

This example increments the Replies attribute in the Thread table whenever someone\n posts a reply. Because ReturnValues is set to NONE, no output appears in the response\n payload.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.UpdateItem \n\n{\n \"TableName\": \"Thread\",\n \"Key\": {\n \"ForumName\": {\n \"S\": \"Amazon DynamoDB\"\n },\n \"Subject\": {\n \"S\": \"A question about updates\"\n }\n },\n \"AttributeUpdates\": {\n \"Replies\": {\n \"Action\": \"ADD\",\n \"Value\": {\"N\": \"1\"}\n }\n },\n \"ReturnValues\" : \"NONE\"\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> { \n}\n \n
\n
" + "documentation":"

Edits an existing item's attributes, or inserts a new item if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values).

In addition to updating an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

" }, "UpdateTable":{ "name":"UpdateTable", @@ -462,17 +462,17 @@ { "shape":"ResourceInUseException", "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to\n recreate an existing table, or tried to delete a table currently in the CREATING\n state.

" + "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" }, { "shape":"ResourceNotFoundException", "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, { "shape":"LimitExceededException", "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the\n CREATING, DELETING or UPDATING state) exceeds the\n maximum allowed of 10.

\n

Also, for tables with secondary indexes, only one of those tables can be in the CREATING\n state at any point in time. Do not attempt to create more than one such table\n simultaneously.

\n

The total limit of tables in the ACTIVE state is 250.

" + "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" }, { "shape":"InternalServerError", @@ -481,7 +481,7 @@ "documentation":"

An error occurred on the server side.

" } ], - "documentation":"

Updates the provisioned throughput for the given table. Setting the throughput for a table\n helps you manage performance and is part of the provisioned throughput feature of DynamoDB.

\n

The provisioned throughput values can be upgraded or downgraded based on the maximums and\n minimums listed in the Limits section in the\n Amazon DynamoDB Developer Guide.

\n

The table must be in the ACTIVE state for this operation to succeed.\n UpdateTable is an asynchronous operation; while executing the operation, the table is\n in the UPDATING state. While the table is in the UPDATING state, the\n table still has the provisioned throughput from before the call. The new provisioned\n throughput setting is in effect only when the table returns to the ACTIVE state\n after the UpdateTable operation.

\n

You cannot add, modify or delete indexes using UpdateTable. Indexes can only be\n defined at table creation time.

\n\n \n \n Modify Provisioned Write Throughput\n \n

This example changes both the provisioned read and write throughput of the Thread\n table to 10 capacity units.

\n
\n .;\nX-Amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-length;content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-target, Signature=\nUser-Agent: \nx-amz-content-sha256: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nConnection: Keep-Alive]]> X-Amz-Target: DynamoDB_20120810.UpdateTable \n\n{\n \"TableName\": \"Thread\",\n \"ProvisionedThroughput\": {\n \"ReadCapacityUnits\": 10,\n \"WriteCapacityUnits\": 10\n }\n}\n \n \nx-amz-crc32: \nContent-Type: application/x-amz-json-1.0\nContent-Length: \nDate: \n]]> { \n \"TableDescription\": {\n \"AttributeDefinitions\": [\n {\n \"AttributeName\": \"ForumName\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"AttributeType\": \"S\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"AttributeType\": \"S\"\n }\n ],\n \"CreationDateTime\": 1.363801528686E9,\n \"ItemCount\": 0,\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"Subject\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"LocalSecondaryIndexes\": [\n {\n \"IndexName\": \"LastPostIndex\",\n \"IndexSizeBytes\": 0,\n \"ItemCount\": 0,\n \"KeySchema\": [\n {\n \"AttributeName\": \"ForumName\",\n \"KeyType\": \"HASH\"\n },\n {\n \"AttributeName\": \"LastPostDateTime\",\n \"KeyType\": \"RANGE\"\n }\n ],\n \"Projection\": {\n \"ProjectionType\": \"KEYS_ONLY\"\n }\n }\n ],\n \"ProvisionedThroughput\": {\n \"LastIncreaseDateTime\": 1.363801701282E9,\n \"NumberOfDecreasesToday\": 0,\n \"ReadCapacityUnits\": 5,\n \"WriteCapacityUnits\": 5\n },\n \"TableName\": \"Thread\",\n \"TableSizeBytes\": 0,\n \"TableStatus\": \"UPDATING\"\n }\n}\n \n
\n
" + "documentation":"

Updates the provisioned throughput for the given table. Setting the throughput for a table helps you manage performance and is part of the provisioned throughput feature of DynamoDB.

The provisioned throughput values can be upgraded or downgraded based on the maximums and minimums listed in the Limits section in the Amazon DynamoDB Developer Guide.

The table must be in the ACTIVE state for this operation to succeed. UpdateTable is an asynchronous operation; while executing the operation, the table is in the UPDATING state. While the table is in the UPDATING state, the table still has the provisioned throughput from before the call. The new provisioned throughput setting is in effect only when the table returns to the ACTIVE state after the UpdateTable operation.

You cannot add, modify or delete indexes using UpdateTable. Indexes can only be defined at table creation time.

" } }, "shapes":{ @@ -574,10 +574,10 @@ "Value":{"shape":"AttributeValue"}, "Action":{ "shape":"AttributeAction", - "documentation":"

Specifies how to perform the update. Valid values are PUT, DELETE,\n and ADD. The behavior depends on whether the specified primary key already exists\n in the table.

\n\n

\n If an item with the specified Key is found in the table:\n

\n\n
    \n
  • \n

    PUT - Adds the specified attribute to the item. If the attribute already\n exists, it is replaced by the new value.

    \n
  • \n
  • \n

    DELETE - If no value is specified, the attribute and its value are removed\n from the item. The data type of the specified value must match the existing value's data\n type.

    \n

    If a set of values is specified, then those values are subtracted from the old\n set. For example, if the attribute value was the set [a,b,c] and the\n DELETE action specified [a,c], then the final attribute value would\n be [b]. Specifying an empty set is an error.

    \n
  • \n
  • \n

    ADD - If the attribute does not already exist, then the attribute and its\n values are added to the item. If the attribute does exist, then the behavior of\n ADD depends on the data type of the attribute:

    \n
      \n
    • \n

      If the existing attribute is a number, and if Value is also a number, then the\n Value is mathematically added to the existing attribute. If Value is a\n negative number, then it is subtracted from the existing attribute.

      \n \n

      If you use ADD to increment or decrement a number value for an item\n that doesn't exist before the update, DynamoDB uses 0 as the initial value.

      \n

      In addition, if you use ADD to update an existing item, and intend to\n increment or decrement an attribute value which does not yet exist, DynamoDB uses\n 0 as the initial value. For example, suppose that the item you want\n to update does not yet have an attribute named itemcount, but you decide to\n ADD the number 3 to this attribute anyway, even though\n it currently does not exist. DynamoDB will create the itemcount attribute, set\n its initial value to 0, and finally add 3 to it. The\n result will be a new itemcount attribute in the item, with a value of\n 3.

      \n
      \n
    • \n
    • \n

      If the existing data type is a set, and if the Value is also a set, then the\n Value is added to the existing set. (This is a set operation, not\n mathematical addition.) For example, if the attribute value was the set\n [1,2], and the ADD action specified [3], then\n the final attribute value would be [1,2,3]. An error occurs if an Add\n action is specified for a set attribute and the attribute type specified does not\n match the existing set type.

      \n

      Both sets must have the same primitive data type. For example, if the existing data\n type is a set of strings, the Value must also be a set of strings. The same\n holds true for number sets and binary sets.

      \n
    • \n
    \n

    This action is only valid for an existing attribute whose data type is number or is a\n set. Do not use ADD for any other data types.

    \n
  • \n
\n\n

\n If no item with the specified Key is found:\n

\n\n
    \n
  • \n

    PUT - DynamoDB creates a new item with the specified primary key, and then adds\n the attribute.

    \n
  • \n
  • \n

    DELETE - Nothing happens; there is no attribute to delete.

    \n
  • \n
  • \n

    ADD - DynamoDB creates an item with the supplied primary key and number (or set\n of numbers) for the attribute value. The only data types allowed are number and number\n set; no other data types can be specified.

    \n
  • \n
" + "documentation":"

Specifies how to perform the update. Valid values are PUT, DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table.

If an item with the specified Key is found in the table:

  • PUT - Adds the specified attribute to the item. If the attribute already exists, it is replaced by the new value.

  • DELETE - If no value is specified, the attribute and its value are removed from the item. The data type of the specified value must match the existing value's data type.

    If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specified [a,c], then the final attribute value would be [b]. Specifying an empty set is an error.

  • ADD - If the attribute does not already exist, then the attribute and its values are added to the item. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute:

    • If the existing attribute is a number, and if Value is also a number, then the Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute.

    • If the existing data type is a set, and if the Value is also a set, then the Value is added to the existing set. (This is a set operation, not mathematical addition.) For example, if the attribute value was the set [1,2], and the ADD action specified [3], then the final attribute value would be [1,2,3]. An error occurs if an Add action is specified for a set attribute and the attribute type specified does not match the existing set type.

      Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The same holds true for number sets and binary sets.

    This action is only valid for an existing attribute whose data type is number or is a set. Do not use ADD for any other data types.

If no item with the specified Key is found:

  • PUT - DynamoDB creates a new item with the specified primary key, and then adds the attribute.

  • DELETE - Nothing happens; there is no attribute to delete.

  • ADD - DynamoDB creates an item with the supplied primary key and number (or set of numbers) for the attribute value. The only data types allowed are number and number set; no other data types can be specified.

" } }, - "documentation":"

For the UpdateItem operation, represents the attributes to be modified, the action to\n perform on each, and the new value for each.

\n \n

You cannot use UpdateItem to update any primary key attributes. Instead, you will\n need to delete the item, and then use PutItem to create a new item with new\n attributes.

\n
\n

Attribute values cannot be null; string and binary type attributes must have lengths greater\n than zero; and set type attributes must not be empty. Requests with empty values will be\n rejected with a ValidationException.

" + "documentation":"

For the UpdateItem operation, represents the attributes to be modified, the action to perform on each, and the new value for each.

Attribute values cannot be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException.

" }, "BatchGetItemInput":{ "type":"structure", @@ -585,7 +585,7 @@ "members":{ "RequestItems":{ "shape":"BatchGetRequestMap", - "documentation":"

A map of one or more table names and, for each table, the corresponding primary keys for the\n items to retrieve. Each table name can be invoked only once.

\n

Each element in the map consists of the following:

\n
    \n
  • \n

    Keys - An array of primary key attribute values that define specific items in the\n table. For each primary key, you must provide all of the key attributes. For\n example, with a hash type primary key, you only need to specify the hash attribute. For a\n hash-and-range type primary key, you must specify both the hash attribute and the\n range attribute.

    \n
  • \n\n
  • \n

    AttributesToGet - One or more attributes to be retrieved from the table. By\n default, all attributes are returned. If a specified attribute is not found, it does not\n appear in the result.

    \n

    Note that AttributesToGet has no effect on provisioned throughput consumption.\n DynamoDB determines capacity units consumed based on item size, not on the amount of data\n that is returned to an application.

    \n
  • \n\n
  • \n

    ConsistentRead - If true, a strongly consistent read is used; if\n false (the default), an eventually consistent read is used.

    \n
  • \n
" + "documentation":"

A map of one or more table names and, for each table, the corresponding primary keys for the items to retrieve. Each table name can be invoked only once.

Each element in the map consists of the following:

  • Keys - An array of primary key attribute values that define specific items in the table. For each primary key, you must provide all of the key attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

  • AttributesToGet - One or more attributes to be retrieved from the table. By default, all attributes are returned. If a specified attribute is not found, it does not appear in the result.

    Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

  • ConsistentRead - If true, a strongly consistent read is used; if false (the default), an eventually consistent read is used.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"} }, @@ -596,15 +596,15 @@ "members":{ "Responses":{ "shape":"BatchGetResponseMap", - "documentation":"

A map of table name to a list of items. Each object in Responses consists of a table\n name, along with a map of attribute data consisting of the data type and attribute value.

" + "documentation":"

A map of table name to a list of items. Each object in Responses consists of a table name, along with a map of attribute data consisting of the data type and attribute value.

" }, "UnprocessedKeys":{ "shape":"BatchGetRequestMap", - "documentation":"

A map of tables and their respective keys that were not processed with the current response.\n The UnprocessedKeys value is in the same form as RequestItems, so the value can\n be provided directly to a subsequent BatchGetItem operation. For more information, see\n RequestItems in the Request Parameters section.

\n

Each element consists of:

\n
    \n
  • \n

    Keys - An array of primary key attribute values that define specific items in the\n table.

    \n
  • \n
  • \n

    AttributesToGet - One or more attributes to be retrieved from the table or index.\n By default, all attributes are returned. If a specified attribute is not found, it does\n not appear in the result.

    \n
  • \n
  • \n

    ConsistentRead - The consistency of a read operation. If set to true,\n then a strongly consistent read is used; otherwise, an eventually consistent read is\n used.

    \n
  • \n
\n

If there are no unprocessed keys remaining, the response contains an empty\n UnprocessedKeys map.

" + "documentation":"

A map of tables and their respective keys that were not processed with the current response. The UnprocessedKeys value is in the same form as RequestItems, so the value can be provided directly to a subsequent BatchGetItem operation. For more information, see RequestItems in the Request Parameters section.

Each element consists of:

  • Keys - An array of primary key attribute values that define specific items in the table.

  • AttributesToGet - One or more attributes to be retrieved from the table or index. By default, all attributes are returned. If a specified attribute is not found, it does not appear in the result.

  • ConsistentRead - The consistency of a read operation. If set to true, then a strongly consistent read is used; otherwise, an eventually consistent read is used.

If there are no unprocessed keys remaining, the response contains an empty UnprocessedKeys map.

" }, "ConsumedCapacity":{ "shape":"ConsumedCapacityMultiple", - "documentation":"

The write capacity units consumed by the operation.

\n

Each element consists of:

\n
    \n
  • \n

    TableName - The table that consumed the provisioned throughput.

    \n
  • \n\n
  • \n

    CapacityUnits - The total number of capacity units consumed.

    \n
  • \n
" + "documentation":"

The write capacity units consumed by the operation.

Each element consists of:

  • TableName - The table that consumed the provisioned throughput.

  • CapacityUnits - The total number of capacity units consumed.

" } }, "documentation":"

Represents the output of a BatchGetItem operation.

" @@ -627,12 +627,12 @@ "members":{ "RequestItems":{ "shape":"BatchWriteItemRequestMap", - "documentation":"

A map of one or more table names and, for each table, a list of operations to be performed\n (DeleteRequest or PutRequest). Each element in the map consists of the\n following:

\n
    \n
  • \n

    DeleteRequest - Perform a DeleteItem operation on the specified item. The\n item to be deleted is identified by a Key subelement:

    \n
      \n
    • \n

      Key - A map of primary key attribute values that uniquely identify the ! item.\n Each entry in this map consists of an attribute name and an attribute value. For each\n primary key, you must provide all of the key attributes. For example, with a\n hash type primary key, you only need to specify the hash attribute. For a\n hash-and-range type primary key, you must specify both the hash attribute and\n the range attribute.

      \n
    • \n
    \n
  • \n
  • \n

    PutRequest - Perform a PutItem operation on the specified item. The item to\n be put is identified by an Item subelement:

    \n
      \n
    • \n

      Item - A map of attributes and their values. Each entry in this map consists\n of an attribute name and an attribute value. Attribute values must not be null; string\n and binary type attributes must have lengths greater than zero; and set type\n attributes must not be empty. Requests that contain empty values will be rejected with\n a ValidationException.

      \n

      If you specify any attributes that are part of an index key, then the data types for\n those attributes must match those of the schema in the table's attribute\n definition.

      \n
    • \n
    \n
  • \n
" + "documentation":"

A map of one or more table names and, for each table, a list of operations to be performed (DeleteRequest or PutRequest). Each element in the map consists of the following:

  • DeleteRequest - Perform a DeleteItem operation on the specified item. The item to be deleted is identified by a Key subelement:

    • Key - A map of primary key attribute values that uniquely identify the ! item. Each entry in this map consists of an attribute name and an attribute value. For each primary key, you must provide all of the key attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

  • PutRequest - Perform a PutItem operation on the specified item. The item to be put is identified by an Item subelement:

    • Item - A map of attributes and their values. Each entry in this map consists of an attribute name and an attribute value. Attribute values must not be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests that contain empty values will be rejected with a ValidationException.

      If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, "ReturnItemCollectionMetrics":{ "shape":"ReturnItemCollectionMetrics", - "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" } }, "documentation":"

Represents the input of a BatchWriteItem operation.

" @@ -642,15 +642,15 @@ "members":{ "UnprocessedItems":{ "shape":"BatchWriteItemRequestMap", - "documentation":"

A map of tables and requests against those tables that were not processed. The\n UnprocessedItems value is in the same form as RequestItems, so you can provide\n this value directly to a subsequent BatchGetItem operation. For more information, see\n RequestItems in the Request Parameters section.

\n

Each UnprocessedItems entry consists of a table name and, for that table, a list of\n operations to perform (DeleteRequest or PutRequest).

\n
    \n
  • \n

    DeleteRequest - Perform a DeleteItem operation on the specified item. The\n item to be deleted is identified by a Key subelement:

    \n
      \n
    • \n

      Key - A map of primary key attribute values that uniquely identify the item.\n Each entry in this map consists of an attribute name and an attribute value.

      \n
    • \n
    \n
  • \n
  • \n

    PutRequest - Perform a PutItem operation on the specified item. The item to\n be put is identified by an Item subelement:

    \n
      \n
    • \n

      Item - A map of attributes and their values. Each entry in this map consists\n of an attribute name and an attribute value. Attribute values must not be null; string\n and binary type attributes must have lengths greater than zero; and set type\n attributes must not be empty. Requests that contain empty values will be rejected with\n a ValidationException.

      \n

      If you specify any attributes that are part of an index key, then the data types for\n those attributes must match those of the schema in the table's attribute\n definition.

      \n
    • \n
    \n
  • \n
\n

If there are no unprocessed items remaining, the response contains an empty\n UnprocessedItems map.

" + "documentation":"

A map of tables and requests against those tables that were not processed. The UnprocessedItems value is in the same form as RequestItems, so you can provide this value directly to a subsequent BatchGetItem operation. For more information, see RequestItems in the Request Parameters section.

Each UnprocessedItems entry consists of a table name and, for that table, a list of operations to perform (DeleteRequest or PutRequest).

  • DeleteRequest - Perform a DeleteItem operation on the specified item. The item to be deleted is identified by a Key subelement:

    • Key - A map of primary key attribute values that uniquely identify the item. Each entry in this map consists of an attribute name and an attribute value.

  • PutRequest - Perform a PutItem operation on the specified item. The item to be put is identified by an Item subelement:

    • Item - A map of attributes and their values. Each entry in this map consists of an attribute name and an attribute value. Attribute values must not be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests that contain empty values will be rejected with a ValidationException.

      If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

If there are no unprocessed items remaining, the response contains an empty UnprocessedItems map.

" }, "ItemCollectionMetrics":{ "shape":"ItemCollectionMetricsPerTable", - "documentation":"

A list of tables that were processed by BatchWriteItem and, for each table,\n information about any item collections that were affected by individual DeleteItem or\n PutItem operations.

\n

Each entry consists of the following subelements:

\n
    \n
  • \n

    ItemCollectionKey - The hash key value of the item collection. This is the same as\n the hash key of the item.

    \n
  • \n
  • \n

    SizeEstimateRange - An estimate of item collection size, expressed in GB. This is\n a two-element array containing a lower bound and an upper bound for the estimate. The\n estimate includes the size of all the items in the table, plus the size of all attributes\n projected into all of the local secondary indexes on the table. Use this estimate to measure whether a\n local secondary index is approaching its size limit.

    \n

    The estimate is subject to change over time; therefore, do not rely on the precision or\n accuracy of the estimate.

    \n
  • \n
" + "documentation":"

A list of tables that were processed by BatchWriteItem and, for each table, information about any item collections that were affected by individual DeleteItem or PutItem operations.

Each entry consists of the following subelements:

  • ItemCollectionKey - The hash key value of the item collection. This is the same as the hash key of the item.

  • SizeEstimateRange - An estimate of item collection size, expressed in GB. This is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on the table. Use this estimate to measure whether a local secondary index is approaching its size limit.

    The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

" }, "ConsumedCapacity":{ "shape":"ConsumedCapacityMultiple", - "documentation":"

The capacity units consumed by the operation.

\n

Each element consists of:

\n
    \n
  • \n

    TableName - The table that consumed the provisioned throughput.

    \n
  • \n
  • \n

    CapacityUnits - The total number of capacity units consumed.

    \n
  • \n
" + "documentation":"

The capacity units consumed by the operation.

Each element consists of:

  • TableName - The table that consumed the provisioned throughput.

  • CapacityUnits - The total number of capacity units consumed.

" } }, "documentation":"

Represents the output of a BatchWriteItem operation.

" @@ -676,7 +676,7 @@ "documentation":"

The total number of capacity units consumed on a table or an index.

" } }, - "documentation":"

Represents the amount of provisioned throughput capacity consumed on a table or an index.\n

" + "documentation":"

Represents the amount of provisioned throughput capacity consumed on a table or an index.

" }, "ComparisonOperator":{ "type":"string", @@ -702,14 +702,14 @@ "members":{ "AttributeValueList":{ "shape":"AttributeValueList", - "documentation":"

One or more values to evaluate against the supplied attribute. The number of values in the\n list depends on the ComparisonOperator being used.

\n

For type Number, value comparisons are numeric.

\n

String value comparisons for greater than, equals, or less than are based on ASCII character\n code values. For example, a is greater than A, and aa\n is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

\n

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

" + "documentation":"

One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

For type Number, value comparisons are numeric.

String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

" }, "ComparisonOperator":{ "shape":"ComparisonOperator", - "documentation":"

A comparator for evaluating attributes. For example, equals, greater than, less than,\n etc.

\n

The following comparison operators are available:

\n

EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

\n \n

The following are descriptions of each comparison\n operator.

\n
    \n
  • EQ : Equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • NE : Not equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • LE : Less than or equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • LT : Less than.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • GE : Greater than or equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • GT : Greater than.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • NOT_NULL : The attribute exists.

    \n
  • \n
  • NULL : The attribute does not exist.

    \n
  • \n
  • CONTAINS : checks for a subsequence, or value in a set.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for a substring match. If the target attribute of the comparison is\n Binary, then the operation looks for a subsequence of the target that matches the input.\n If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the\n operation checks for a member of the set (not as a substring).

    \n
  • \n
  • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in\n a set.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for the absence of a substring match. If the target attribute of the\n comparison is Binary, then the operation checks for the absence of a subsequence of the\n target that matches the input. If the target attribute of the comparison is a set (\"SS\",\n \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a\n substring).

  • \n
  • BEGINS_WITH : checks for a prefix.

    \n

    AttributeValueList can contain only one AttributeValue of type String or\n Binary (not a Number or a set). The target attribute of the comparison must be a String or\n Binary (not a Number or a set).

    \n

    \n

  • \n
  • IN : checks for exact matches.

    \n

    AttributeValueList can contain more than one AttributeValue of type String,\n Number, or Binary (not a set). The target attribute of the comparison must be of the same\n type and exact value to match. A String never matches a String set.

    \n
  • \n
  • BETWEEN : Greater than or equal to the first value, and less than or equal\n to the second value.

    \n

    AttributeValueList must contain two AttributeValue elements of the same\n type, either String, Number, or Binary (not a set). A target attribute matches if the\n target value is greater than, or equal to, the first element and less than, or equal to,\n the second element. If an item contains an AttributeValue of a different type than\n the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

    \n
  • \n
\n

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

" + "documentation":"

A comparator for evaluating attributes. For example, equals, greater than, less than, etc.

The following comparison operators are available:

EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

The following are descriptions of each comparison operator.

  • EQ : Equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

  • NE : Not equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

  • LE : Less than or equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • LT : Less than.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • GE : Greater than or equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • GT : Greater than.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • NOT_NULL : The attribute exists.

  • NULL : The attribute does not exist.

  • CONTAINS : checks for a subsequence, or value in a set.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for a member of the set (not as a substring).

  • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a substring).

  • BEGINS_WITH : checks for a prefix.

    AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

  • IN : checks for exact matches.

    AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

  • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

    AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

" } }, - "documentation":"

Represents the selection criteria for a Query or Scan operation:

\n
    \n
  • \n

    For a Query operation, Condition is used for specifying the\n KeyConditions to use when querying a table or an index. For KeyConditions,\n only the following comparison operators are supported:

    \n

    \n EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN\n

    \n

    Condition is also used in a QueryFilter, which evaluates the query results\n and returns only the desired values.

    \n
  • \n
  • \n

    For a Scan operation, Condition is used in a ScanFilter, which\n evaluates the scan results and returns only the desired values.

    \n
  • \n
" + "documentation":"

Represents the selection criteria for a Query or Scan operation:

  • For a Query operation, Condition is used for specifying the KeyConditions to use when querying a table or an index. For KeyConditions, only the following comparison operators are supported:

    EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN

    Condition is also used in a QueryFilter, which evaluates the query results and returns only the desired values.

  • For a Scan operation, Condition is used in a ScanFilter, which evaluates the scan results and returns only the desired values.

" }, "ConditionalCheckFailedException":{ "type":"structure", @@ -754,7 +754,7 @@ "documentation":"

The amount of throughput consumed on each global index affected by the operation.

" } }, - "documentation":"

Represents the capacity units consumed by an operation. The data returned includes the total\n provisioned throughput consumed, along with statistics for the table and any indexes involved\n in the operation. ConsumedCapacity is only returned if it was asked for in the request.\n For more information, see Provisioned\n Throughput in the Amazon DynamoDB Developer Guide.

" + "documentation":"

Represents the capacity units consumed by an operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if it was asked for in the request. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide.

" }, "ConsumedCapacityMultiple":{ "type":"list", @@ -780,15 +780,15 @@ }, "KeySchema":{ "shape":"KeySchema", - "documentation":"

Specifies the attributes that make up the primary key for a table or an index. The attributes\n in KeySchema must also be defined in the AttributeDefinitions array. For more\n information, see Data Model in the\n Amazon DynamoDB Developer Guide.

\n

Each KeySchemaElement in the array is composed of:

\n
    \n
  • \n

    AttributeName - The name of this key attribute.

    \n
  • \n
  • \n

    KeyType - Determines whether the key attribute is HASH or\n RANGE.

    \n
  • \n
\n

For a primary key that consists of a hash attribute, you must specify exactly one element\n with a KeyType of HASH.

\n

For a primary key that consists of hash and range attributes, you must specify exactly two\n elements, in this order: The first element must have a KeyType of HASH,\n and the second element must have a KeyType of RANGE.

\n

For more information, see Specifying the\n Primary Key in the Amazon DynamoDB Developer Guide.

" + "documentation":"

Specifies the attributes that make up the primary key for a table or an index. The attributes in KeySchema must also be defined in the AttributeDefinitions array. For more information, see Data Model in the Amazon DynamoDB Developer Guide.

Each KeySchemaElement in the array is composed of:

  • AttributeName - The name of this key attribute.

  • KeyType - Determines whether the key attribute is HASH or RANGE.

For a primary key that consists of a hash attribute, you must specify exactly one element with a KeyType of HASH.

For a primary key that consists of hash and range attributes, you must specify exactly two elements, in this order: The first element must have a KeyType of HASH, and the second element must have a KeyType of RANGE.

For more information, see Specifying the Primary Key in the Amazon DynamoDB Developer Guide.

" }, "LocalSecondaryIndexes":{ "shape":"LocalSecondaryIndexList", - "documentation":"

One or more local secondary indexes (the maximum is five) to be created on the table. Each index is scoped to\n a given hash key value. There is a 10 GB size limit per hash key;\n otherwise, the size of a local secondary index is unconstrained.

\n

Each local secondary index in the array includes the following:

\n
    \n
  • \n

    IndexName - The name of the local secondary index. Must be unique only for this table.

    \n

    \n
  • \n
  • \n

    KeySchema - Specifies the key schema for the local secondary index. The key schema must begin with\n the same hash key attribute as the table.

    \n
  • \n
  • Projection - Specifies\n attributes that are copied (projected) from the table into the index. These are in\n addition to the primary key attributes and index key\n attributes, which are automatically projected. Each\n attribute specification is composed of:

    \n
      \n
    • \n

      ProjectionType - One\n of the following:

      \n
        \n
      • \n

        KEYS_ONLY - Only the index and primary keys are projected into the\n index.

        \n
      • \n
      • \n

        INCLUDE - Only the specified table attributes are projected into the\n index. The list of projected attributes are\n in NonKeyAttributes.

        \n
      • \n
      • \n

        ALL - All of the table attributes are projected into the\n index.

        \n
      • \n
      \n
    • \n
    • \n

      NonKeyAttributes - A list of one or more non-key attribute names that are \n projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

      \n
    • \n
    \n
  • \n
" + "documentation":"

One or more local secondary indexes (the maximum is five) to be created on the table. Each index is scoped to a given hash key value. There is a 10 GB size limit per hash key; otherwise, the size of a local secondary index is unconstrained.

Each local secondary index in the array includes the following:

  • IndexName - The name of the local secondary index. Must be unique only for this table.

  • KeySchema - Specifies the key schema for the local secondary index. The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

" }, "GlobalSecondaryIndexes":{ "shape":"GlobalSecondaryIndexList", - "documentation":"

One or more global secondary indexes (the maximum is five) to be created on the table. Each global secondary index in the array\n includes the following:

\n
    \n
  • \n

    IndexName - The name of the global secondary index. Must be unique only for this table.

    \n

    \n
  • \n
  • \n

    KeySchema - Specifies the key schema for the global secondary index.

    \n
  • \n
  • Projection - Specifies\n attributes that are copied (projected) from the table into the index. These are in\n addition to the primary key attributes and index key\n attributes, which are automatically projected. Each\n attribute specification is composed of:

    \n
      \n
    • \n

      ProjectionType - One\n of the following:

      \n
        \n
      • \n

        KEYS_ONLY - Only the index and primary keys are projected into the\n index.

        \n
      • \n
      • \n

        INCLUDE - Only the specified table attributes are projected into the\n index. The list of projected attributes are\n in NonKeyAttributes.

        \n
      • \n
      • \n

        ALL - All of the table attributes are projected into the\n index.

        \n
      • \n
      \n
    • \n
    • \n

      NonKeyAttributes - A list of one or more non-key attribute names that are \n projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

      \n
    • \n
    \n
  • \n
  • \n

    ProvisionedThroughput - The provisioned throughput settings for the global secondary index,\n consisting of read and write capacity units.

    \n
  • \n
" + "documentation":"

One or more global secondary indexes (the maximum is five) to be created on the table. Each global secondary index in the array includes the following:

  • IndexName - The name of the global secondary index. Must be unique only for this table.

  • KeySchema - Specifies the key schema for the global secondary index.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units.

" }, "ProvisionedThroughput":{"shape":"ProvisionedThroughput"} }, @@ -815,24 +815,24 @@ }, "Key":{ "shape":"Key", - "documentation":"

A map of attribute names to AttributeValue objects, representing the primary key of\n the item to delete.

\n

For the primary key, you must provide all of the attributes. For example, with a hash\n type primary key, you only need to specify the hash attribute. For a hash-and-range type\n primary key, you must specify both the hash attribute and the range attribute.

" + "documentation":"

A map of attribute names to AttributeValue objects, representing the primary key of the item to delete.

For the primary key, you must provide all of the attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" }, "Expected":{ "shape":"ExpectedAttributeMap", - "documentation":"

A map of attribute/condition pairs. This is the conditional block for the DeleteItem\n operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

\n\n

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

\n

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

\n \n

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

\n \n
    \n
  • \n

    AttributeValueList - One or more values to evaluate against the supplied\n attribute. The number of values in the list depends on the ComparisonOperator\n being used.

    \n

    For type Number, value comparisons are numeric.

    \n

    String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    \n

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

    \n
  • \n
  • \n

    ComparisonOperator - A comparator for evaluating attributes in the\n AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    \n

    The following comparison operators are available:

    \n

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    \n\n

    The following are descriptions of each comparison operator.

    \n
      \n
    • EQ : Equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • NE : Not equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • LE : Less than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • LT : Less than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GE : Greater than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GT : Greater than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • NOT_NULL : The attribute exists.

      \n
    • \n
    • NULL : The attribute does not exist.

      \n
    • \n
    • CONTAINS : checks for a subsequence, or value in a set.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for a substring match. If the target attribute of the comparison is\n Binary, then the operation looks for a subsequence of the target that matches the input.\n If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the\n operation checks for a member of the set (not as a substring).

      \n
    • \n
    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in\n a set.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for the absence of a substring match. If the target attribute of the\n comparison is Binary, then the operation checks for the absence of a subsequence of the\n target that matches the input. If the target attribute of the comparison is a set (\"SS\",\n \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a\n substring).

    • \n
    • BEGINS_WITH : checks for a prefix.

      \n

      AttributeValueList can contain only one AttributeValue of type String or\n Binary (not a Number or a set). The target attribute of the comparison must be a String or\n Binary (not a Number or a set).

      \n

      \n

    • \n
    • IN : checks for exact matches.

      \n

      AttributeValueList can contain more than one AttributeValue of type String,\n Number, or Binary (not a set). The target attribute of the comparison must be of the same\n type and exact value to match. A String never matches a String set.

      \n
    • \n
    • BETWEEN : Greater than or equal to the first value, and less than or equal\n to the second value.

      \n

      AttributeValueList must contain two AttributeValue elements of the same\n type, either String, Number, or Binary (not a set). A target attribute matches if the\n target value is greater than, or equal to, the first element and less than, or equal to,\n the second element. If an item contains an AttributeValue of a different type than\n the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

      \n
    • \n
    \n
  • \n
\n

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

\n \n

For backward compatibility with previous DynamoDB releases, the following parameters can be\n used instead of AttributeValueList and ComparisonOperator:

\n
    \n
  • \n

    Value - A value for DynamoDB to compare with an attribute.

    \n
  • \n
  • \n

    Exists - Causes DynamoDB to evaluate the value before attempting the conditional\n operation:

    \n
      \n
    • \n

      If Exists is true, DynamoDB will check to see if that attribute\n value already exists in the table. If it is found, then the condition evaluates to\n true; otherwise the condition evaluate to false.

      \n
    • \n
    • If Exists is false, DynamoDB assumes that the attribute value\n does not exist in the table. If in fact the value does not exist, then the\n assumption is valid and the condition evaluates to true. If the value is found,\n despite the assumption that it does not exist, the condition evaluates to\n false.

    • \n
    \n
  • \n
\n

Even though DynamoDB continues to accept the Value and Exists parameters, they\n are now deprecated. We recommend that you use AttributeValueList and\n ComparisonOperator instead, since they allow you to construct a much wider range of\n conditions.

\n

The Value and Exists parameters are incompatible with\n AttributeValueList and ComparisonOperator. If you attempt to use both sets\n of parameters at once, DynamoDB will throw a ValidationException.

\n
" + "documentation":"

A map of attribute/condition pairs. This is the conditional block for the DeleteItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

" }, "ConditionalOperator":{ "shape":"ConditionalOperator", - "documentation":"

A logical operator to apply to the conditions in the Expected map:

\n
    \n
  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
\n

If you omit ConditionalOperator, then AND is the default.

\n

The operation will succeed only if the entire map evaluates to true.

" + "documentation":"

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" }, "ReturnValues":{ "shape":"ReturnValue", - "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared before they\n were deleted. For DeleteItem, the valid values are:

\n
    \n
  • \n

    NONE - If ReturnValues is not specified, or if its value is\n NONE, then nothing is returned. (This is the default for\n ReturnValues.)

    \n
  • \n
  • \n

    ALL_OLD - The content of the old item is returned.

    \n
  • \n
" + "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared before they were deleted. For DeleteItem, the valid values are:

  • NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This is the default for ReturnValues.)

  • ALL_OLD - The content of the old item is returned.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, "ReturnItemCollectionMetrics":{ "shape":"ReturnItemCollectionMetrics", - "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" } }, "documentation":"

Represents the input of a DeleteItem operation.

" @@ -842,12 +842,12 @@ "members":{ "Attributes":{ "shape":"AttributeMap", - "documentation":"

A map of attribute names to AttributeValue objects, representing the item as it\n appeared before the DeleteItem operation. This map appears in the response only if\n ReturnValues was specified as ALL_OLD in the request.

" + "documentation":"

A map of attribute names to AttributeValue objects, representing the item as it appeared before the DeleteItem operation. This map appears in the response only if ReturnValues was specified as ALL_OLD in the request.

" }, "ConsumedCapacity":{"shape":"ConsumedCapacity"}, "ItemCollectionMetrics":{ "shape":"ItemCollectionMetrics", - "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if it was asked for in the request. If the table\n does not have any local secondary indexes, this information is not\n returned in the response.

\n

Each ItemCollectionMetrics\n element consists of:

\n
    \n
  • ItemCollectionKey - The hash key value of the item\n collection. This is the same as the hash key of the item.

  • \n
  • SizeEstimateRange - An estimate of item collection size,\n measured in gigabytes. This is a two-element array\n containing a lower bound and an upper bound for the\n estimate. The estimate includes the size of all the\n items in the table, plus the size of all attributes\n projected into all of the local secondary indexes on that\n table. Use this estimate to measure whether a local secondary index is approaching its size limit.

    \n

    The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

    \n
  • \n
" + "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if it was asked for in the request. If the table does not have any local secondary indexes, this information is not returned in the response.

Each ItemCollectionMetrics element consists of:

  • ItemCollectionKey - The hash key value of the item collection. This is the same as the hash key of the item.

  • SizeEstimateRange - An estimate of item collection size, measured in gigabytes. This is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit.

    The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

" } }, "documentation":"

Represents the output of a DeleteItem operation.

" @@ -858,7 +858,7 @@ "members":{ "Key":{ "shape":"Key", - "documentation":"

A map of attribute name to attribute values, representing the primary key of the item to\n delete. All of the table's primary key attributes must be specified, and their data types must\n match those of the table's key schema.

" + "documentation":"

A map of attribute name to attribute values, representing the primary key of the item to delete. All of the table's primary key attributes must be specified, and their data types must match those of the table's key schema.

" } }, "documentation":"

Represents a request to perform a DeleteItem operation on an item.

" @@ -911,18 +911,18 @@ "Value":{"shape":"AttributeValue"}, "Exists":{ "shape":"BooleanObject", - "documentation":"

Causes DynamoDB to evaluate the value before attempting a conditional operation:

\n
    \n
  • \n

    If Exists is true, DynamoDB will check to see if that attribute value\n already exists in the table. If it is found, then the operation succeeds. If it is not\n found, the operation fails with a ConditionalCheckFailedException.

    \n
  • \n
  • \n

    If Exists is false, DynamoDB assumes that the attribute value does\n not exist in the table. If in fact the value does not exist, then the assumption\n is valid and the operation succeeds. If the value is found, despite the assumption that it\n does not exist, the operation fails with a ConditionalCheckFailedException.

    \n
  • \n
\n

The default setting for Exists is true. If you supply a Value all\n by itself, DynamoDB assumes the attribute exists: You don't have to set Exists to\n true, because it is implied.

\n

DynamoDB returns a ValidationException if:

\n
    \n
  • \n

    Exists is true but there is no Value to check. (You expect a\n value to exist, but don't specify what that value is.)

    \n
  • \n
  • \n

    Exists is false but you also specify a Value. (You cannot\n expect an attribute to have a value, while also expecting it not to exist.)

    \n
  • \n
" + "documentation":"

Causes DynamoDB to evaluate the value before attempting a conditional operation:

  • If Exists is true, DynamoDB will check to see if that attribute value already exists in the table. If it is found, then the operation succeeds. If it is not found, the operation fails with a ConditionalCheckFailedException.

  • If Exists is false, DynamoDB assumes that the attribute value does not exist in the table. If in fact the value does not exist, then the assumption is valid and the operation succeeds. If the value is found, despite the assumption that it does not exist, the operation fails with a ConditionalCheckFailedException.

The default setting for Exists is true. If you supply a Value all by itself, DynamoDB assumes the attribute exists: You don't have to set Exists to true, because it is implied.

DynamoDB returns a ValidationException if:

  • Exists is true but there is no Value to check. (You expect a value to exist, but don't specify what that value is.)

  • Exists is false but you also specify a Value. (You cannot expect an attribute to have a value, while also expecting it not to exist.)

" }, "ComparisonOperator":{ "shape":"ComparisonOperator", - "documentation":"

A comparator for evaluating attributes in the AttributeValueList. For example, equals,\n greater than, less than, etc.

\n

The following comparison operators are available:

\n

EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

\n \n

The following are descriptions of each comparison operator.

\n
    \n
  • EQ : Equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • NE : Not equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • LE : Less than or equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • LT : Less than.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • GE : Greater than or equal.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • GT : Greater than.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    \n

    \n

  • \n
  • NOT_NULL : The attribute exists.

    \n
  • \n
  • NULL : The attribute does not exist.

    \n
  • \n
  • CONTAINS : checks for a subsequence, or value in a set.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for a substring match. If the target attribute of the comparison is\n Binary, then the operation looks for a subsequence of the target that matches the input.\n If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the\n operation checks for a member of the set (not as a substring).

    \n
  • \n
  • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in\n a set.

    \n

    AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for the absence of a substring match. If the target attribute of the\n comparison is Binary, then the operation checks for the absence of a subsequence of the\n target that matches the input. If the target attribute of the comparison is a set (\"SS\",\n \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a\n substring).

  • \n
  • BEGINS_WITH : checks for a prefix.

    \n

    AttributeValueList can contain only one AttributeValue of type String or\n Binary (not a Number or a set). The target attribute of the comparison must be a String or\n Binary (not a Number or a set).

    \n

    \n

  • \n
  • IN : checks for exact matches.

    \n

    AttributeValueList can contain more than one AttributeValue of type String,\n Number, or Binary (not a set). The target attribute of the comparison must be of the same\n type and exact value to match. A String never matches a String set.

    \n
  • \n
  • BETWEEN : Greater than or equal to the first value, and less than or equal\n to the second value.

    \n

    AttributeValueList must contain two AttributeValue elements of the same\n type, either String, Number, or Binary (not a set). A target attribute matches if the\n target value is greater than, or equal to, the first element and less than, or equal to,\n the second element. If an item contains an AttributeValue of a different type than\n the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

    \n
  • \n
" + "documentation":"

A comparator for evaluating attributes in the AttributeValueList. For example, equals, greater than, less than, etc.

The following comparison operators are available:

EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

The following are descriptions of each comparison operator.

  • EQ : Equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

  • NE : Not equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

  • LE : Less than or equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • LT : Less than.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • GE : Greater than or equal.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • GT : Greater than.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

  • NOT_NULL : The attribute exists.

  • NULL : The attribute does not exist.

  • CONTAINS : checks for a subsequence, or value in a set.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for a member of the set (not as a substring).

  • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

    AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a substring).

  • BEGINS_WITH : checks for a prefix.

    AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

  • IN : checks for exact matches.

    AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

  • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

    AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

" }, "AttributeValueList":{ "shape":"AttributeValueList", - "documentation":"

One or more values to evaluate against the supplied attribute.\n The number of values in the list depends on the ComparisonOperator being used.

\n

For type Number, value comparisons are numeric.

\n

String value comparisons for greater than, equals, or less than are based on ASCII character\n code values. For example, a is greater than A, and aa\n is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

\n

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

\n

For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

" + "documentation":"

One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

For type Number, value comparisons are numeric.

String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

" } }, - "documentation":"

Represents a condition to be compared with an attribute value. This condition can be used\n with DeleteItem, PutItem or UpdateItem operations; if the comparison\n evaluates to true, the operation succeeds; if not the operation fails. You can use\n ExpectedAttributeValue in one of two different ways:

\n
    \n
  • \n

    Use AttributeValueList to specify one or more values to compare against an\n attribute. Use ComparisonOperator to specify how you want to perform the\n comparison. If the comparison evaluates to true, then the conditional operation\n succeeds.

    \n
  • \n
  • \n

    Use Value to specify a value that DynamoDB will compare against an attribute. If the\n values match, then ExpectedAttributeValue evaluates to true and the conditional\n operation succeeds. Optionally, you can also set Exists to false, indicating that\n you do not expect to find the attribute value in the table. In this case, the\n conditional operation succeeds only if the comparison evaluates to false.

    \n
  • \n
\n

Value and Exists are incompatible with AttributeValueList and \n ComparisonOperator. If you attempt to use both sets of parameters at once, DynamoDB will\n throw a ValidationException.

\n\n \n

The Value and Exists parameters are deprecated. Even though DynamoDB will\n continue to support these parameters, we recommend that you use AttributeValueList\n and ComparisonOperator instead. AttributeValueList and\n ComparisonOperator let you construct a much wider range of conditions than is\n possible with Value and Exists.

\n
" + "documentation":"

Represents a condition to be compared with an attribute value. This condition can be used with DeleteItem, PutItem or UpdateItem operations; if the comparison evaluates to true, the operation succeeds; if not the operation fails. You can use ExpectedAttributeValue in one of two different ways:

  • Use AttributeValueList to specify one or more values to compare against an attribute. Use ComparisonOperator to specify how you want to perform the comparison. If the comparison evaluates to true, then the conditional operation succeeds.

  • Use Value to specify a value that DynamoDB will compare against an attribute. If the values match, then ExpectedAttributeValue evaluates to true and the conditional operation succeeds. Optionally, you can also set Exists to false, indicating that you do not expect to find the attribute value in the table. In this case, the conditional operation succeeds only if the comparison evaluates to false.

Value and Exists are incompatible with AttributeValueList and ComparisonOperator. If you attempt to use both sets of parameters at once, DynamoDB will throw a ValidationException.

The Value and Exists parameters are deprecated. Even though DynamoDB will continue to support these parameters, we recommend that you use AttributeValueList and ComparisonOperator instead. AttributeValueList and ComparisonOperator let you construct a much wider range of conditions than is possible with Value and Exists.

" }, "FilterConditionMap":{ "type":"map", @@ -942,15 +942,15 @@ }, "Key":{ "shape":"Key", - "documentation":"

A map of attribute names to AttributeValue objects, representing the primary key of\n the item to retrieve.

\n

For the primary key, you must provide all of the attributes. For example, with a hash\n type primary key, you only need to specify the hash attribute. For a hash-and-range type\n primary key, you must specify both the hash attribute and the range attribute.

" + "documentation":"

A map of attribute names to AttributeValue objects, representing the primary key of the item to retrieve.

For the primary key, you must provide all of the attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" }, "AttributesToGet":{ "shape":"AttributeNameList", - "documentation":"

The names of one or more attributes to retrieve. If no attribute\n names are specified, then all attributes will be returned. If\n any of the requested attributes are not found, they will not\n appear in the result.

\n

Note that AttributesToGet has no effect on provisioned throughput consumption. \n DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

" + "documentation":"

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

" }, "ConsistentRead":{ "shape":"ConsistentRead", - "documentation":"

If set to true, then the operation uses strongly consistent reads; otherwise, eventually\n consistent reads are used.

" + "documentation":"

If set to true, then the operation uses strongly consistent reads; otherwise, eventually consistent reads are used.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"} }, @@ -961,7 +961,7 @@ "members":{ "Item":{ "shape":"AttributeMap", - "documentation":"

A map of attribute names to AttributeValue objects, as specified by\n AttributesToGet.

" + "documentation":"

A map of attribute names to AttributeValue objects, as specified by AttributesToGet.

" }, "ConsumedCapacity":{"shape":"ConsumedCapacity"} }, @@ -982,7 +982,7 @@ }, "KeySchema":{ "shape":"KeySchema", - "documentation":"

The complete key schema for a global secondary index, which consists of one or more pairs of attribute names\n and key types (HASH or RANGE).

" + "documentation":"

The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types (HASH or RANGE).

" }, "Projection":{"shape":"Projection"}, "ProvisionedThroughput":{"shape":"ProvisionedThroughput"} @@ -998,21 +998,21 @@ }, "KeySchema":{ "shape":"KeySchema", - "documentation":"

The complete key schema for the global secondary index, consisting of one or more pairs of attribute names and\n key types (HASH or RANGE).

" + "documentation":"

The complete key schema for the global secondary index, consisting of one or more pairs of attribute names and key types (HASH or RANGE).

" }, "Projection":{"shape":"Projection"}, "IndexStatus":{ "shape":"IndexStatus", - "documentation":"

The current state of the global secondary index:

\n
    \n
  • \n

    CREATING - The index is being created, as the result of a CreateTable or\n UpdateTable operation.

    \n
  • \n
  • \n

    UPDATING - The index is being updated, as the result of a CreateTable or\n UpdateTable operation.

    \n
  • \n
  • \n

    DELETING - The index is being deleted, as the result of a DeleteTable\n operation.

    \n
  • \n
  • \n

    ACTIVE - The index is ready for use.

    \n
  • \n
" + "documentation":"

The current state of the global secondary index:

  • CREATING - The index is being created, as the result of a CreateTable or UpdateTable operation.

  • UPDATING - The index is being updated, as the result of a CreateTable or UpdateTable operation.

  • DELETING - The index is being deleted, as the result of a DeleteTable operation.

  • ACTIVE - The index is ready for use.

" }, "ProvisionedThroughput":{"shape":"ProvisionedThroughputDescription"}, "IndexSizeBytes":{ "shape":"Long", - "documentation":"

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

" + "documentation":"

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" }, "ItemCount":{ "shape":"Long", - "documentation":"

The number of items in the specified index. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

" + "documentation":"

The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" } }, "documentation":"

Represents the properties of a global secondary index.

" @@ -1030,7 +1030,7 @@ "members":{ "Update":{ "shape":"UpdateGlobalSecondaryIndexAction", - "documentation":"

The name of a global secondary index, along with the updated provisioned throughput settings that are to be\n applied to that index.

" + "documentation":"

The name of a global secondary index, along with the updated provisioned throughput settings that are to be applied to that index.

" } }, "documentation":"

Represents the new provisioned throughput settings to apply to a global secondary index.

" @@ -1081,10 +1081,10 @@ }, "SizeEstimateRangeGB":{ "shape":"ItemCollectionSizeEstimateRange", - "documentation":"

An estimate of item collection size, measured in gigabytes. This is a two-element array\n containing a lower bound and an upper bound for the estimate. The estimate includes the size\n of all the items in the table, plus the size of all attributes projected into all of the\n local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size\n limit.

\n

The estimate is subject to change over time; therefore, do not rely on the precision or\n accuracy of the estimate.

" + "documentation":"

An estimate of item collection size, measured in gigabytes. This is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit.

The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

" } }, - "documentation":"

Information about item collections, if any, that were affected by the operation.\n ItemCollectionMetrics is only returned if it was asked for in the request. If the\n table does not have any local secondary indexes, this information is not returned in the response.

" + "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if it was asked for in the request. If the table does not have any local secondary indexes, this information is not returned in the response.

" }, "ItemCollectionMetricsMultiple":{ "type":"list", @@ -1109,7 +1109,7 @@ } }, "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or\n more local secondary indexes.

" + "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" }, "ItemList":{ "type":"list", @@ -1158,7 +1158,7 @@ "documentation":"

The attribute data, consisting of the data type and the attribute value itself.

" } }, - "documentation":"

Represents a single element of a key schema. A key schema specifies the attributes\n that make up the primary key of a table, or the key attributes of an index.

\n

A KeySchemaElement represents exactly one attribute of the primary key. For example, a\n hash type primary key would be represented by one KeySchemaElement. A hash-and-range\n type primary key would require one KeySchemaElement for the hash attribute, and another\n KeySchemaElement for the range attribute.

" + "documentation":"

Represents a single element of a key schema. A key schema specifies the attributes that make up the primary key of a table, or the key attributes of an index.

A KeySchemaElement represents exactly one attribute of the primary key. For example, a hash type primary key would be represented by one KeySchemaElement. A hash-and-range type primary key would require one KeySchemaElement for the hash attribute, and another KeySchemaElement for the range attribute.

" }, "KeyType":{ "type":"string", @@ -1173,18 +1173,18 @@ "members":{ "Keys":{ "shape":"KeyList", - "documentation":"

The primary key attribute values that define the items and the attributes associated with the\n items.

" + "documentation":"

The primary key attribute values that define the items and the attributes associated with the items.

" }, "AttributesToGet":{ "shape":"AttributeNameList", - "documentation":"

One or more attributes to retrieve from the table or index. If no attribute names are\n specified then all attributes will be returned. If any of the specified attributes are not\n found, they will not appear in the result.

" + "documentation":"

One or more attributes to retrieve from the table or index. If no attribute names are specified then all attributes will be returned. If any of the specified attributes are not found, they will not appear in the result.

" }, "ConsistentRead":{ "shape":"ConsistentRead", - "documentation":"

The consistency of a read operation. If set to true, then a strongly consistent\n read is used; otherwise, an eventually consistent read is used.

" + "documentation":"

The consistency of a read operation. If set to true, then a strongly consistent read is used; otherwise, an eventually consistent read is used.

" } }, - "documentation":"

Represents a set of primary keys and, for each key, the attributes to retrieve from the\n table.

\n

For each primary key, you must provide all of the key attributes. For example, with a\n hash type primary key, you only need to specify the hash attribute. For a hash-and-range type\n primary key, you must specify both the hash attribute and the range attribute.

" + "documentation":"

Represents a set of primary keys and, for each key, the attributes to retrieve from the table.

For each primary key, you must provide all of the key attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" }, "LimitExceededException":{ "type":"structure", @@ -1195,18 +1195,18 @@ } }, "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the\n CREATING, DELETING or UPDATING state) exceeds the\n maximum allowed of 10.

\n

Also, for tables with secondary indexes, only one of those tables can be in the CREATING\n state at any point in time. Do not attempt to create more than one such table\n simultaneously.

\n

The total limit of tables in the ACTIVE state is 250.

" + "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" }, "ListTablesInput":{ "type":"structure", "members":{ "ExclusiveStartTableName":{ "shape":"TableName", - "documentation":"

The first table name that this operation will evaluate. Use the value that was returned for\n LastEvaluatedTableName in a previous operation, so that you can obtain the next page\n of results.

" + "documentation":"

The first table name that this operation will evaluate. Use the value that was returned for LastEvaluatedTableName in a previous operation, so that you can obtain the next page of results.

" }, "Limit":{ "shape":"ListTablesInputLimit", - "documentation":"

A maximum number of table names to return. If this parameter is not specified, the limit is\n 100.

" + "documentation":"

A maximum number of table names to return. If this parameter is not specified, the limit is 100.

" } }, "documentation":"

Represents the input of a ListTables operation.

" @@ -1221,11 +1221,11 @@ "members":{ "TableNames":{ "shape":"TableNameList", - "documentation":"

The names of the tables associated with the current account at the current endpoint. The\n maximum size of this array is 100.

\n

If LastEvaluatedTableName also appears in the output, you can use this value as the\n ExclusiveStartTableName parameter in a subsequent ListTables request and\n obtain the next page of results.

" + "documentation":"

The names of the tables associated with the current account at the current endpoint. The maximum size of this array is 100.

If LastEvaluatedTableName also appears in the output, you can use this value as the ExclusiveStartTableName parameter in a subsequent ListTables request and obtain the next page of results.

" }, "LastEvaluatedTableName":{ "shape":"TableName", - "documentation":"

The name of the last table in the current page of results. Use this value as the\n ExclusiveStartTableName in a new request to obtain the next page of results, until\n all the table names are returned.

\n

If you do not receive a LastEvaluatedTableName value in the response, this means that\n there are no more table names to be retrieved.

" + "documentation":"

The name of the last table in the current page of results. Use this value as the ExclusiveStartTableName in a new request to obtain the next page of results, until all the table names are returned.

If you do not receive a LastEvaluatedTableName value in the response, this means that there are no more table names to be retrieved.

" } }, "documentation":"

Represents the output of a ListTables operation.

" @@ -1244,7 +1244,7 @@ }, "KeySchema":{ "shape":"KeySchema", - "documentation":"

The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and\n key types (HASH or RANGE).

" + "documentation":"

The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types (HASH or RANGE).

" }, "Projection":{"shape":"Projection"} }, @@ -1259,16 +1259,16 @@ }, "KeySchema":{ "shape":"KeySchema", - "documentation":"The complete index key schema,\n which consists of one or more pairs of attribute names and key types (HASH or\n RANGE)." + "documentation":"The complete index key schema, which consists of one or more pairs of attribute names and key types (HASH or RANGE)." }, "Projection":{"shape":"Projection"}, "IndexSizeBytes":{ "shape":"Long", - "documentation":"

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

" + "documentation":"

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" }, "ItemCount":{ "shape":"Long", - "documentation":"

The number of items in the specified index. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

" + "documentation":"

The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" } }, "documentation":"

Represents the properties of a local secondary index.

" @@ -1311,14 +1311,14 @@ "members":{ "ProjectionType":{ "shape":"ProjectionType", - "documentation":"

The set of attributes that are projected into the index:

\n
    \n
  • \n

    KEYS_ONLY - Only the index and primary keys are projected into the\n index.

    \n
  • \n
  • \n

    INCLUDE - Only the specified table attributes are projected into the index.\n The list of projected attributes are in NonKeyAttributes.

    \n
  • \n
  • \n

    ALL - All of the table attributes are projected into the index.

    \n
  • \n
" + "documentation":"

The set of attributes that are projected into the index:

  • KEYS_ONLY - Only the index and primary keys are projected into the index.

  • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

  • ALL - All of the table attributes are projected into the index.

" }, "NonKeyAttributes":{ "shape":"NonKeyAttributeNameList", - "documentation":"

Represents the non-key attribute names which will be projected into the index.

\n

For local secondary indexes, the total count of NonKeyAttributes summed across all of the local secondary indexes,\n must not exceed 20. If you project the same attribute into two\n different indexes, this counts as two distinct attributes when determining the total.

" + "documentation":"

Represents the non-key attribute names which will be projected into the index.

For local secondary indexes, the total count of NonKeyAttributes summed across all of the local secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

" } }, - "documentation":"

Represents attributes that are copied (projected) from the table into an index. These are in\n addition to the primary key attributes and index key attributes, which are automatically\n projected.

" + "documentation":"

Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.

" }, "ProjectionType":{ "type":"string", @@ -1337,14 +1337,14 @@ "members":{ "ReadCapacityUnits":{ "shape":"PositiveLongObject", - "documentation":"

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a\n ThrottlingException. For more information, see Specifying Read and Write\n Requirements in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB Developer Guide.

" }, "WriteCapacityUnits":{ "shape":"PositiveLongObject", - "documentation":"

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException. For more information, see Specifying Read and Write\n Requirements in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB Developer Guide.

" } }, - "documentation":"

Represents the provisioned throughput settings for a specified table or index. The settings\n can be modified using the UpdateTable operation.

\n

For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide.

" + "documentation":"

Represents the provisioned throughput settings for a specified table or index. The settings can be modified using the UpdateTable operation.

For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide.

" }, "ProvisionedThroughputDescription":{ "type":"structure", @@ -1359,18 +1359,18 @@ }, "NumberOfDecreasesToday":{ "shape":"PositiveLongObject", - "documentation":"

The number of provisioned throughput decreases for this table during this UTC calendar day.\n For current maximums on provisioned throughput decreases, see Limits in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The number of provisioned throughput decreases for this table during this UTC calendar day. For current maximums on provisioned throughput decreases, see Limits in the Amazon DynamoDB Developer Guide.

" }, "ReadCapacityUnits":{ "shape":"PositiveLongObject", - "documentation":"

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a\n ThrottlingException. Eventually consistent reads require less effort than strongly\n consistent reads, so a setting of 50 ReadCapacityUnits per second provides 100\n eventually consistent ReadCapacityUnits per second.

" + "documentation":"

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException. Eventually consistent reads require less effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits per second provides 100 eventually consistent ReadCapacityUnits per second.

" }, "WriteCapacityUnits":{ "shape":"PositiveLongObject", - "documentation":"

The maximum number of writes consumed per second before DynamoDB returns a\n ThrottlingException.

" + "documentation":"

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException.

" } }, - "documentation":"

Represents the provisioned throughput settings for the table, consisting of read and write\n capacity units, along with data about increases and decreases.

" + "documentation":"

Represents the provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.

" }, "ProvisionedThroughputExceededException":{ "type":"structure", @@ -1381,7 +1381,7 @@ } }, "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to\n accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore,\n your request will eventually succeed, unless the request is too large or your retry queue is\n too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" }, "PutItemInput":{ "type":"structure", @@ -1396,24 +1396,24 @@ }, "Item":{ "shape":"PutItemInputAttributeMap", - "documentation":"

A map of attribute name/value pairs, one for each attribute. Only the primary key attributes\n are required; you can optionally provide other attribute name-value pairs for the item.

\n

You must provide all of the attributes for the primary key. For example, with a hash\n type primary key, you only need to specify the hash attribute. For a hash-and-range type\n primary key, you must specify both the hash attribute and the range attribute.

\n

If you specify any attributes that are part of an index key, then the data types for those\n attributes must match those of the schema in the table's attribute definition.

\n

For more information about primary keys, see Primary Key in the\n Amazon DynamoDB Developer Guide.

\n

Each element in the Item map is an AttributeValue object.

" + "documentation":"

A map of attribute name/value pairs, one for each attribute. Only the primary key attributes are required; you can optionally provide other attribute name-value pairs for the item.

You must provide all of the attributes for the primary key. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer Guide.

Each element in the Item map is an AttributeValue object.

" }, "Expected":{ "shape":"ExpectedAttributeMap", - "documentation":"

A map of attribute/condition pairs. This is the conditional block for the PutItem\n operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

\n\n

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

\n

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

\n \n

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

\n \n
    \n
  • \n

    AttributeValueList - One or more values to evaluate against the supplied\n attribute. The number of values in the list depends on the ComparisonOperator\n being used.

    \n

    For type Number, value comparisons are numeric.

    \n

    String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    \n

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

    \n
  • \n
  • \n

    ComparisonOperator - A comparator for evaluating attributes in the\n AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    \n

    The following comparison operators are available:

    \n

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    \n\n

    The following are descriptions of each comparison operator.

    \n
      \n
    • EQ : Equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • NE : Not equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • LE : Less than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • LT : Less than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GE : Greater than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GT : Greater than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • NOT_NULL : The attribute exists.

      \n
    • \n
    • NULL : The attribute does not exist.

      \n
    • \n
    • CONTAINS : checks for a subsequence, or value in a set.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for a substring match. If the target attribute of the comparison is\n Binary, then the operation looks for a subsequence of the target that matches the input.\n If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the\n operation checks for a member of the set (not as a substring).

      \n
    • \n
    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in\n a set.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for the absence of a substring match. If the target attribute of the\n comparison is Binary, then the operation checks for the absence of a subsequence of the\n target that matches the input. If the target attribute of the comparison is a set (\"SS\",\n \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a\n substring).

    • \n
    • BEGINS_WITH : checks for a prefix.

      \n

      AttributeValueList can contain only one AttributeValue of type String or\n Binary (not a Number or a set). The target attribute of the comparison must be a String or\n Binary (not a Number or a set).

      \n

      \n

    • \n
    • IN : checks for exact matches.

      \n

      AttributeValueList can contain more than one AttributeValue of type String,\n Number, or Binary (not a set). The target attribute of the comparison must be of the same\n type and exact value to match. A String never matches a String set.

      \n
    • \n
    • BETWEEN : Greater than or equal to the first value, and less than or equal\n to the second value.

      \n

      AttributeValueList must contain two AttributeValue elements of the same\n type, either String, Number, or Binary (not a set). A target attribute matches if the\n target value is greater than, or equal to, the first element and less than, or equal to,\n the second element. If an item contains an AttributeValue of a different type than\n the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

      \n
    • \n
    \n
  • \n
\n

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

\n \n

For backward compatibility with previous DynamoDB releases, the following parameters can be\n used instead of AttributeValueList and ComparisonOperator:

\n
    \n
  • \n

    Value - A value for DynamoDB to compare with an attribute.

    \n
  • \n
  • \n

    Exists - Causes DynamoDB to evaluate the value before attempting the conditional\n operation:

    \n
      \n
    • \n

      If Exists is true, DynamoDB will check to see if that attribute\n value already exists in the table. If it is found, then the condition evaluates to\n true; otherwise the condition evaluate to false.

      \n
    • \n
    • If Exists is false, DynamoDB assumes that the attribute value\n does not exist in the table. If in fact the value does not exist, then the\n assumption is valid and the condition evaluates to true. If the value is found,\n despite the assumption that it does not exist, the condition evaluates to\n false.

    • \n
    \n
  • \n
\n

Even though DynamoDB continues to accept the Value and Exists parameters, they\n are now deprecated. We recommend that you use AttributeValueList and\n ComparisonOperator instead, since they allow you to construct a much wider range of\n conditions.

\n

The Value and Exists parameters are incompatible with\n AttributeValueList and ComparisonOperator. If you attempt to use both sets\n of parameters at once, DynamoDB will throw a ValidationException.

\n
" + "documentation":"

A map of attribute/condition pairs. This is the conditional block for the PutItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

" }, "ReturnValues":{ "shape":"ReturnValue", - "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared before they\n were updated with the PutItem request. For PutItem, the valid values are:

\n
    \n
  • \n

    NONE - If ReturnValues is not specified, or if its value is\n NONE, then nothing is returned. (This is the default for\n ReturnValues.)

    \n
  • \n
  • \n

    ALL_OLD - If PutItem overwrote an attribute name-value pair, then the\n content of the old item is returned.

    \n
  • \n
" + "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared before they were updated with the PutItem request. For PutItem, the valid values are:

  • NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This is the default for ReturnValues.)

  • ALL_OLD - If PutItem overwrote an attribute name-value pair, then the content of the old item is returned.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, "ReturnItemCollectionMetrics":{ "shape":"ReturnItemCollectionMetrics", - "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" }, "ConditionalOperator":{ "shape":"ConditionalOperator", - "documentation":"

A logical operator to apply to the conditions in the Expected map:

\n
    \n
  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
\n

If you omit ConditionalOperator, then AND is the default.

\n

The operation will succeed only if the entire map evaluates to true.

" + "documentation":"

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" } }, "documentation":"

Represents the input of a PutItem operation.

" @@ -1428,12 +1428,12 @@ "members":{ "Attributes":{ "shape":"AttributeMap", - "documentation":"

The attribute values as they appeared before the PutItem operation, but only if\n ReturnValues is specified as ALL_OLD in the request. Each element\n consists of an attribute name and an attribute value.

" + "documentation":"

The attribute values as they appeared before the PutItem operation, but only if ReturnValues is specified as ALL_OLD in the request. Each element consists of an attribute name and an attribute value.

" }, "ConsumedCapacity":{"shape":"ConsumedCapacity"}, "ItemCollectionMetrics":{ "shape":"ItemCollectionMetrics", - "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if it was asked for in the request. If the table\n does not have any local secondary indexes, this information is not\n returned in the response.

\n

Each ItemCollectionMetrics\n element consists of:

\n
    \n
  • ItemCollectionKey - The hash key value of the item\n collection. This is the same as the hash key of the item.

  • \n
  • SizeEstimateRange - An estimate of item collection size,\n measured in gigabytes. This is a two-element array\n containing a lower bound and an upper bound for the\n estimate. The estimate includes the size of all the\n items in the table, plus the size of all attributes\n projected into all of the local secondary indexes on that\n table. Use this estimate to measure whether a local secondary index is approaching its size limit.

    \n

    The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

    \n
  • \n
" + "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if it was asked for in the request. If the table does not have any local secondary indexes, this information is not returned in the response.

Each ItemCollectionMetrics element consists of:

  • ItemCollectionKey - The hash key value of the item collection. This is the same as the hash key of the item.

  • SizeEstimateRange - An estimate of item collection size, measured in gigabytes. This is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit.

    The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

" } }, "documentation":"

Represents the output of a PutItem operation.

" @@ -1444,7 +1444,7 @@ "members":{ "Item":{ "shape":"PutItemInputAttributeMap", - "documentation":"

A map of attribute name to attribute values, representing the primary key of an item to be\n processed by PutItem. All of the table's primary key attributes must be specified, and\n their data types must match those of the table's key schema. If any attributes are present in\n the item which are part of an index key schema for the table, their types must match the index\n key schema.

" + "documentation":"

A map of attribute name to attribute values, representing the primary key of an item to be processed by PutItem. All of the table's primary key attributes must be specified, and their data types must match those of the table's key schema. If any attributes are present in the item which are part of an index key schema for the table, their types must match the index key schema.

" } }, "documentation":"

Represents a request to perform a PutItem operation on an item.

" @@ -1466,39 +1466,39 @@ }, "Select":{ "shape":"Select", - "documentation":"

The attributes to be returned in the result. You can retrieve all item attributes, specific\n item attributes, the count of matching items, or in the case of an index, some or all of the\n attributes projected into the index.

\n
    \n
  • \n

    ALL_ATTRIBUTES: Returns all of the item attributes from the specified table\n or index. If you are querying a local secondary index, then for each matching item in the index DynamoDB will\n fetch the entire item from the parent table. If the index is configured to project all\n item attributes, then all of the data can be obtained from the local secondary index, and no fetching is\n required..

    \n
  • \n
  • \n

    ALL_PROJECTED_ATTRIBUTES: Allowed only when querying an index. Retrieves all\n attributes which have been projected into the index. If the index is configured to project\n all attributes, this is equivalent to specifying ALL_ATTRIBUTES.

    \n
  • \n
  • \n

    COUNT: Returns the number of matching items, rather than the matching items\n themselves.

    \n
  • \n
  • \n

    \n SPECIFIC_ATTRIBUTES : Returns only the attributes listed in\n AttributesToGet. This is equivalent to specifying AttributesToGet without\n specifying any value for Select.

    If you are querying a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency.

    \n\n

    If you are querying a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.

    \n
  • \n
\n

If neither Select nor AttributesToGet are specified, DynamoDB defaults to\n ALL_ATTRIBUTES when accessing a table, and\n ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot use both\n Select and AttributesToGet together in a single request, unless the\n value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to\n specifying AttributesToGet without any value for Select.)

" + "documentation":"

The attributes to be returned in the result. You can retrieve all item attributes, specific item attributes, the count of matching items, or in the case of an index, some or all of the attributes projected into the index.

  • ALL_ATTRIBUTES: Returns all of the item attributes from the specified table or index. If you are querying a local secondary index, then for each matching item in the index DynamoDB will fetch the entire item from the parent table. If the index is configured to project all item attributes, then all of the data can be obtained from the local secondary index, and no fetching is required..

  • ALL_PROJECTED_ATTRIBUTES: Allowed only when querying an index. Retrieves all attributes which have been projected into the index. If the index is configured to project all attributes, this is equivalent to specifying ALL_ATTRIBUTES.

  • COUNT: Returns the number of matching items, rather than the matching items themselves.

  • SPECIFIC_ATTRIBUTES : Returns only the attributes listed in AttributesToGet. This is equivalent to specifying AttributesToGet without specifying any value for Select.

    If you are querying a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency.

    If you are querying a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.

If neither Select nor AttributesToGet are specified, DynamoDB defaults to ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot use both Select and AttributesToGet together in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

" }, "AttributesToGet":{ "shape":"AttributeNameList", - "documentation":"

The names of one or more attributes to retrieve. If no attribute\n names are specified, then all attributes will be returned. If\n any of the requested attributes are not found, they will not\n appear in the result.

\n

Note that AttributesToGet has no effect on provisioned throughput consumption. \n DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

\n

You cannot use both\n AttributesToGet and Select together in a Query request, unless\n the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to\n specifying AttributesToGet without any value for Select.)

If you are querying a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency.

\n\n

If you are querying a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.

" + "documentation":"

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

You cannot use both AttributesToGet and Select together in a Query request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

If you are querying a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency.

If you are querying a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.

" }, "Limit":{ "shape":"PositiveIntegerObject", - "documentation":"

The maximum number of items to evaluate (not necessarily the number of matching items). If\n DynamoDB processes the number of items up to the limit while processing the results, it stops the\n operation and returns the matching values up to that point, and a LastEvaluatedKey to \n apply in\n a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size\n exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values\n up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to\n continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

" }, "ConsistentRead":{ "shape":"ConsistentRead", - "documentation":"

If set to true, then the operation uses strongly consistent reads; otherwise, eventually\n consistent reads are used.

\n

Strongly consistent reads\n are not supported on global secondary indexes. If you query a global secondary index with ConsistentRead set to\n true, you will receive an error message.

" + "documentation":"

If set to true, then the operation uses strongly consistent reads; otherwise, eventually consistent reads are used.

Strongly consistent reads are not supported on global secondary indexes. If you query a global secondary index with ConsistentRead set to true, you will receive an error message.

" }, "KeyConditions":{ "shape":"KeyConditions", - "documentation":"

The selection criteria for the query.

\n

For a query on a table, you can only have conditions on the table primary key attributes. You\n must specify the hash key attribute name and value as an EQ condition.\n You can optionally specify a second condition, referring to the range key\n attribute.

\n

For a query on an index, you can only have conditions on the index key attributes. You\n must specify the index hash attribute name and value as an EQ condition. You can\n optionally specify a second condition, referring to the index key range\n attribute.

\n

If you specify more than one condition in the KeyConditions map, then by default all\n of the conditions must evaluate to true. In other words, the conditions are ANDed together.\n (You can use the ConditionalOperator parameter to OR the conditions instead. If you do\n this, then at least one of the conditions must evaluate to true, rather than all of them.)

\n

Each KeyConditions element consists of an attribute name to compare, along with the\n following:

\n
    \n
  • \n

    AttributeValueList - One or more values to evaluate against the supplied\n attribute. The number of values in the list depends on the ComparisonOperator being\n used.

    \n

    For type Number, value comparisons are numeric.

    \n

    String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    \n

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

    \n
  • \n
  • \n

    ComparisonOperator - A comparator for evaluating attributes. For example, equals,\n greater than, less than, etc.

    \n\n

    For KeyConditions, only the following comparison operators are supported:

    \n

    \n EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN\n

    \n

    The following are descriptions of these comparison operators.

    \n
      \n
    • \n

      EQ : Equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a\n different type than the one specified in the request, the value does not match. For\n example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n
    • \n
    • LE : Less than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • LT : Less than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GE : Greater than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GT : Greater than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • BEGINS_WITH : checks for a prefix.

      \n

      AttributeValueList can contain only one AttributeValue of type String or\n Binary (not a Number or a set). The target attribute of the comparison must be a String or\n Binary (not a Number or a set).

      \n

      \n

    • \n
    • BETWEEN : Greater than or equal to the first value, and less than or equal\n to the second value.

      \n

      AttributeValueList must contain two AttributeValue elements of the same\n type, either String, Number, or Binary (not a set). A target attribute matches if the\n target value is greater than, or equal to, the first element and less than, or equal to,\n the second element. If an item contains an AttributeValue of a different type than\n the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

      \n
    • \n
    \n
  • \n
\n

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions\n in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The selection criteria for the query.

For a query on a table, you can only have conditions on the table primary key attributes. You must specify the hash key attribute name and value as an EQ condition. You can optionally specify a second condition, referring to the range key attribute.

For a query on an index, you can only have conditions on the index key attributes. You must specify the index hash attribute name and value as an EQ condition. You can optionally specify a second condition, referring to the index key range attribute.

If you specify more than one condition in the KeyConditions map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

Each KeyConditions element consists of an attribute name to compare, along with the following:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes. For example, equals, greater than, less than, etc.

    For KeyConditions, only the following comparison operators are supported:

    EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN

    The following are descriptions of these comparison operators.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

" }, "QueryFilter":{ "shape":"FilterConditionMap", - "documentation":"

Evaluates the query results and returns only the desired values.

\n

If you specify more than one condition in the QueryFilter map, then by default all of\n the conditions must evaluate to true. In other words, the conditions are ANDed together. (You\n can use the ConditionalOperator parameter to OR the conditions instead. If you do this,\n then at least one of the conditions must evaluate to true, rather than all of them.)

\n

Each QueryFilter element consists of an attribute name to compare, along with the\n following:

\n
    \n
  • \n

    AttributeValueList - One or more values to evaluate against the supplied\n attribute. The number of values in the list depends on the ComparisonOperator being\n used.

    \n

    For type Number, value comparisons are numeric.

    \n

    String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    \n

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

    \n

    For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

    \n
  • \n
  • \n

    ComparisonOperator - A comparator for evaluating attributes. For example,\n equals, greater than, less than, etc.

    The following comparison operators are available:

    \n

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    \n

    For complete\n descriptions of all comparison operators, see API_Condition.html.

    \n
  • \n
" + "documentation":"

Evaluates the query results and returns only the desired values.

If you specify more than one condition in the QueryFilter map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

Each QueryFilter element consists of an attribute name to compare, along with the following:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

    For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

  • ComparisonOperator - A comparator for evaluating attributes. For example, equals, greater than, less than, etc.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    For complete descriptions of all comparison operators, see API_Condition.html.

" }, "ConditionalOperator":{ "shape":"ConditionalOperator", - "documentation":"

A logical operator to apply to the conditions in the QueryFilter map:

\n
    \n
  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
\n

If you omit ConditionalOperator, then AND is the default.

\n

The operation will succeed only if the entire map evaluates to true.

" + "documentation":"

A logical operator to apply to the conditions in the QueryFilter map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" }, "ScanIndexForward":{ "shape":"BooleanObject", - "documentation":"

Specifies ascending (true) or descending (false) traversal of the index. DynamoDB returns\n results reflecting the requested order determined by the range key. If the data type is\n Number, the results are returned in numeric order. For String, the results are returned in\n order of ASCII character code values. For Binary, DynamoDB treats each byte of the binary data as\n unsigned when it compares binary values.

\n

If ScanIndexForward is not specified, the results are returned in ascending order.

" + "documentation":"

Specifies ascending (true) or descending (false) traversal of the index. DynamoDB returns results reflecting the requested order determined by the range key. If the data type is Number, the results are returned in numeric order. For String, the results are returned in order of ASCII character code values. For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values.

If ScanIndexForward is not specified, the results are returned in ascending order.

" }, "ExclusiveStartKey":{ "shape":"Key", - "documentation":"

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

\n

The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed.

" + "documentation":"

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"} }, @@ -1509,19 +1509,19 @@ "members":{ "Items":{ "shape":"ItemList", - "documentation":"

An array of item attributes that match the query criteria. Each element in this array\n consists of an attribute name and the value for that attribute.

" + "documentation":"

An array of item attributes that match the query criteria. Each element in this array consists of an attribute name and the value for that attribute.

" }, "Count":{ "shape":"Integer", - "documentation":"

The number of items in the response.

\n

If you used a QueryFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before the filter was applied.

\n

If you did not use a filter in the request, then Count and ScannedCount are the same.

" + "documentation":"

The number of items in the response.

If you used a QueryFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before the filter was applied.

If you did not use a filter in the request, then Count and ScannedCount are the same.

" }, "ScannedCount":{ "shape":"Integer", - "documentation":"

The number of items evaluated, before any QueryFilter is applied. A high\n ScannedCount value with few, or no, Count results indicates an inefficient\n Query operation. For more information, see Count and ScannedCount in the\n Amazon DynamoDB Developer Guide.

\n

If you did not use a filter in the request, then ScannedCount is the same as Count.

" + "documentation":"

The number of items evaluated, before any QueryFilter is applied. A high ScannedCount value with few, or no, Count results indicates an inefficient Query operation. For more information, see Count and ScannedCount in the Amazon DynamoDB Developer Guide.

If you did not use a filter in the request, then ScannedCount is the same as Count.

" }, "LastEvaluatedKey":{ "shape":"Key", - "documentation":"

The primary key of the item where the operation\n stopped, inclusive of the previous result set. Use this value to\n start a new operation, excluding this value in the new\n request.

\n

If LastEvaluatedKey is empty, then the \"last page\" of results has been processed and there is no more data to be retrieved.

\n

If LastEvaluatedKey is not empty, this does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty.

" + "documentation":"

The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request.

If LastEvaluatedKey is empty, then the \"last page\" of results has been processed and there is no more data to be retrieved.

If LastEvaluatedKey is not empty, this does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty.

" }, "ConsumedCapacity":{"shape":"ConsumedCapacity"} }, @@ -1536,7 +1536,7 @@ } }, "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to\n recreate an existing table, or tried to delete a table currently in the CREATING\n state.

" + "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" }, "ResourceNotFoundException":{ "type":"structure", @@ -1547,7 +1547,7 @@ } }, "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified\n correctly, or its status may not be ACTIVE.

" + "documentation":"

The operation tried to access a nonexistent table or index. The resource may not be specified correctly, or its status may not be ACTIVE.

" }, "ReturnConsumedCapacity":{ "type":"string", @@ -1556,7 +1556,7 @@ "TOTAL", "NONE" ], - "documentation":"

If set to TOTAL, the response includes ConsumedCapacity data for tables\n and indexes. If set to INDEXES, the response includes ConsumedCapacity for\n indexes. If set to NONE (the default), ConsumedCapacity is not included in\n the response.

" + "documentation":"

If set to TOTAL, the response includes ConsumedCapacity data for tables and indexes. If set to INDEXES, the response includes ConsumedCapacity for indexes. If set to NONE (the default), ConsumedCapacity is not included in the response.

" }, "ReturnItemCollectionMetrics":{ "type":"string", @@ -1593,36 +1593,36 @@ }, "AttributesToGet":{ "shape":"AttributeNameList", - "documentation":"

The names of one or more attributes to retrieve. If no attribute\n names are specified, then all attributes will be returned. If\n any of the requested attributes are not found, they will not\n appear in the result.

\n

Note that AttributesToGet has no effect on provisioned throughput consumption. \n DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

" + "documentation":"

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

" }, "Limit":{ "shape":"PositiveIntegerObject", - "documentation":"

The maximum number of items to evaluate (not necessarily the number of matching items). If\n DynamoDB processes the number of items up to the limit while processing the results, it stops the\n operation and returns the matching values up to that point, and a LastEvaluatedKey to \n apply in\n a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size\n exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values\n up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to\n continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

" + "documentation":"

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

" }, "Select":{ "shape":"Select", - "documentation":"

The attributes to be returned in the result. You can retrieve all item attributes, specific\n item attributes, or the count of matching items.

\n
    \n
  • \n

    ALL_ATTRIBUTES: Returns all of the item attributes.

    \n
  • \n
  • \n

    COUNT: Returns the number of matching items, rather than the matching items\n themselves.

    \n
  • \n
  • \n

    \n SPECIFIC_ATTRIBUTES : Returns only the attributes listed in\n AttributesToGet. This is equivalent to specifying AttributesToGet without\n specifying any value for Select.

    \n
  • \n
\n

If neither Select nor AttributesToGet are specified, DynamoDB defaults to\n ALL_ATTRIBUTES. You cannot use both Select and AttributesToGet\n together in a single request, unless the value for Select is\n SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying\n AttributesToGet without any value for Select.)

" + "documentation":"

The attributes to be returned in the result. You can retrieve all item attributes, specific item attributes, or the count of matching items.

  • ALL_ATTRIBUTES: Returns all of the item attributes.

  • COUNT: Returns the number of matching items, rather than the matching items themselves.

  • SPECIFIC_ATTRIBUTES : Returns only the attributes listed in AttributesToGet. This is equivalent to specifying AttributesToGet without specifying any value for Select.

If neither Select nor AttributesToGet are specified, DynamoDB defaults to ALL_ATTRIBUTES. You cannot use both Select and AttributesToGet together in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

" }, "ScanFilter":{ "shape":"FilterConditionMap", - "documentation":"

Evaluates the scan results and returns only the desired values.

\n\n

If you specify more than one condition in the ScanFilter map, then by default all of\n the conditions must evaluate to true. In other words, the conditions are ANDed together. (You\n can use the ConditionalOperator parameter to OR the conditions instead. If you do this,\n then at least one of the conditions must evaluate to true, rather than all of them.)

\n

Each ScanFilter element consists of an attribute name to compare, along with the\n following:

\n
    \n
  • \n

    AttributeValueList - One or more values to evaluate against the supplied\n attribute. The number of values in the list depends on the ComparisonOperator being\n used.

    \n

    For type Number, value comparisons are numeric.

    \n

    String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    \n

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

    \n

    For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

    \n
  • \n
  • \n

    ComparisonOperator - A comparator for evaluating attributes. For example,\n equals, greater than, less than, etc.

    The following comparison operators are available:

    \n

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    \n

    For complete\n descriptions of all comparison operators, see Condition.

    \n
  • \n
" + "documentation":"

Evaluates the scan results and returns only the desired values.

If you specify more than one condition in the ScanFilter map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

Each ScanFilter element consists of an attribute name to compare, along with the following:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

    For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

  • ComparisonOperator - A comparator for evaluating attributes. For example, equals, greater than, less than, etc.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    For complete descriptions of all comparison operators, see Condition.

" }, "ConditionalOperator":{ "shape":"ConditionalOperator", - "documentation":"

A logical operator to apply to the conditions in the ScanFilter map:

\n
    \n
  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
\n

If you omit ConditionalOperator, then AND is the default.

\n

The operation will succeed only if the entire map evaluates to true.

" + "documentation":"

A logical operator to apply to the conditions in the ScanFilter map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" }, "ExclusiveStartKey":{ "shape":"Key", - "documentation":"

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

\n

The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed.

\n

In a parallel scan, a\n Scan request that includes ExclusiveStartKey must specify the same segment\n whose previous Scan returned the corresponding value of LastEvaluatedKey.

" + "documentation":"

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed.

In a parallel scan, a Scan request that includes ExclusiveStartKey must specify the same segment whose previous Scan returned the corresponding value of LastEvaluatedKey.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, "TotalSegments":{ "shape":"ScanTotalSegments", - "documentation":"

For a parallel Scan request, TotalSegments represents the total number of\n segments into which the Scan operation will be divided. The value of\n TotalSegments corresponds to the number of application workers that will perform the\n parallel scan. For example, if you want to scan a table using four application threads, you\n would specify a TotalSegments value of 4.

\n

The value for TotalSegments must be greater than or equal to 1, and less than or equal\n to 4096. If you specify a TotalSegments value of 1, the Scan will be sequential\n rather than parallel.

\n

If you specify TotalSegments, you must also specify Segment.

" + "documentation":"

For a parallel Scan request, TotalSegments represents the total number of segments into which the Scan operation will be divided. The value of TotalSegments corresponds to the number of application workers that will perform the parallel scan. For example, if you want to scan a table using four application threads, you would specify a TotalSegments value of 4.

The value for TotalSegments must be greater than or equal to 1, and less than or equal to 4096. If you specify a TotalSegments value of 1, the Scan will be sequential rather than parallel.

If you specify TotalSegments, you must also specify Segment.

" }, "Segment":{ "shape":"ScanSegment", - "documentation":"

For a parallel Scan request, Segment identifies an individual segment to be\n scanned by an application worker.

\n

Segment IDs are zero-based, so the first segment is always 0. For example, if you want to\n scan a table using four application threads, the first thread would specify a Segment\n value of 0, the second thread would specify 1, and so on.

\n

The value of LastEvaluatedKey returned from a parallel Scan request must be\n used as ExclusiveStartKey with the same Segment ID in a subsequent Scan\n operation.

\n

The value for Segment must be greater than or equal to 0, and less than the value\n provided for TotalSegments.

\n

If you specify Segment, you must also specify TotalSegments.

" + "documentation":"

For a parallel Scan request, Segment identifies an individual segment to be scanned by an application worker.

Segment IDs are zero-based, so the first segment is always 0. For example, if you want to scan a table using four application threads, the first thread would specify a Segment value of 0, the second thread would specify 1, and so on.

The value of LastEvaluatedKey returned from a parallel Scan request must be used as ExclusiveStartKey with the same Segment ID in a subsequent Scan operation.

The value for Segment must be greater than or equal to 0, and less than the value provided for TotalSegments.

If you specify Segment, you must also specify TotalSegments.

" } }, "documentation":"

Represents the input of a Scan operation.

" @@ -1632,19 +1632,19 @@ "members":{ "Items":{ "shape":"ItemList", - "documentation":"

An array of item attributes that match the scan criteria. Each element in this array consists\n of an attribute name and the value for that attribute.

" + "documentation":"

An array of item attributes that match the scan criteria. Each element in this array consists of an attribute name and the value for that attribute.

" }, "Count":{ "shape":"Integer", - "documentation":"

The number of items in the response.

\n

If you used a ScanFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before the filter was applied.

\n

If you did not use a filter in the request, then Count is the same as ScannedCount.

" + "documentation":"

The number of items in the response.

If you used a ScanFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before the filter was applied.

If you did not use a filter in the request, then Count is the same as ScannedCount.

" }, "ScannedCount":{ "shape":"Integer", - "documentation":"

The number of items evaluated, before any ScanFilter is applied. A high\n ScannedCount value with few, or no, Count results indicates an inefficient\n Scan operation. For more information, see Count and ScannedCount in the\n Amazon DynamoDB Developer Guide.

\n

If you did not use a filter in the request, then ScannedCount is the same as Count.

" + "documentation":"

The number of items evaluated, before any ScanFilter is applied. A high ScannedCount value with few, or no, Count results indicates an inefficient Scan operation. For more information, see Count and ScannedCount in the Amazon DynamoDB Developer Guide.

If you did not use a filter in the request, then ScannedCount is the same as Count.

" }, "LastEvaluatedKey":{ "shape":"Key", - "documentation":"

The primary key of the item where the operation\n stopped, inclusive of the previous result set. Use this value to\n start a new operation, excluding this value in the new\n request.

\n

If LastEvaluatedKey is empty, then the \"last page\" of results has been processed and there is no more data to be retrieved.

\n

If LastEvaluatedKey is not empty, this does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty.

" + "documentation":"

The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request.

If LastEvaluatedKey is empty, then the \"last page\" of results has been processed and there is no more data to be retrieved.

If LastEvaluatedKey is not empty, this does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty.

" }, "ConsumedCapacity":{"shape":"ConsumedCapacity"} }, @@ -1684,7 +1684,7 @@ "members":{ "AttributeDefinitions":{ "shape":"AttributeDefinitions", - "documentation":"

An array of AttributeDefinition objects. Each of these objects describes one attribute\n in the table and index key schema.

\n

Each AttributeDefinition object in this array is composed of:

\n
    \n
  • \n

    AttributeName - The name of the attribute.

    \n
  • \n
  • \n

    AttributeType - The data type for the attribute.

    \n
  • \n
" + "documentation":"

An array of AttributeDefinition objects. Each of these objects describes one attribute in the table and index key schema.

Each AttributeDefinition object in this array is composed of:

  • AttributeName - The name of the attribute.

  • AttributeType - The data type for the attribute.

" }, "TableName":{ "shape":"TableName", @@ -1692,11 +1692,11 @@ }, "KeySchema":{ "shape":"KeySchema", - "documentation":"

The primary key structure for the table. Each KeySchemaElement consists of:

\n
    \n
  • \n

    AttributeName - The name of the attribute.

    \n
  • \n
  • \n

    KeyType - The key type for the attribute. Can be either HASH or\n RANGE.

    \n
  • \n
\n

For more information about primary keys, see Primary Key in the\n Amazon DynamoDB Developer Guide.

" + "documentation":"

The primary key structure for the table. Each KeySchemaElement consists of:

  • AttributeName - The name of the attribute.

  • KeyType - The key type for the attribute. Can be either HASH or RANGE.

For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer Guide.

" }, "TableStatus":{ "shape":"TableStatus", - "documentation":"

The current state of the table:

\n
    \n
  • \n

    CREATING - The table is being created, as the result of a CreateTable\n operation.

    \n
  • \n
  • \n

    UPDATING - The table is being updated, as the result of an UpdateTable\n operation.

    \n
  • \n
  • \n

    DELETING - The table is being deleted, as the result of a DeleteTable\n operation.

    \n
  • \n
  • \n

    ACTIVE - The table is ready for use.

    \n
  • \n
" + "documentation":"

The current state of the table:

  • CREATING - The table is being created, as the result of a CreateTable operation.

  • UPDATING - The table is being updated, as the result of an UpdateTable operation.

  • DELETING - The table is being deleted, as the result of a DeleteTable operation.

  • ACTIVE - The table is ready for use.

" }, "CreationDateTime":{ "shape":"Date", @@ -1704,23 +1704,23 @@ }, "ProvisionedThroughput":{ "shape":"ProvisionedThroughputDescription", - "documentation":"

The provisioned throughput settings for the table, consisting of read and write capacity\n units, along with data about increases and decreases.

" + "documentation":"

The provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.

" }, "TableSizeBytes":{ "shape":"Long", - "documentation":"

The total size of the specified table, in bytes. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

" + "documentation":"

The total size of the specified table, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" }, "ItemCount":{ "shape":"Long", - "documentation":"

The number of items in the specified table. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

" + "documentation":"

The number of items in the specified table. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" }, "LocalSecondaryIndexes":{ "shape":"LocalSecondaryIndexDescriptionList", - "documentation":"

Represents one or more local secondary indexes on the table. Each index is scoped to a given hash key value.\n Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount\n of data within a given item collection cannot exceed 10 GB. Each element is composed of:

\n
    \n
  • \n

    IndexName - The name of the local secondary index.

    \n
  • \n
  • \n

    KeySchema - Specifies the complete index key schema. The attribute names in the\n key schema must be between 1 and 255 characters (inclusive). The key schema must begin\n with the same hash key attribute as the table.

    \n
  • \n
  • Projection - Specifies\n attributes that are copied (projected) from the table into the index. These are in\n addition to the primary key attributes and index key\n attributes, which are automatically projected. Each\n attribute specification is composed of:

    \n
      \n
    • \n

      ProjectionType - One\n of the following:

      \n
        \n
      • \n

        KEYS_ONLY - Only the index and primary keys are projected into the\n index.

        \n
      • \n
      • \n

        INCLUDE - Only the specified table attributes are projected into the\n index. The list of projected attributes are\n in NonKeyAttributes.

        \n
      • \n
      • \n

        ALL - All of the table attributes are projected into the\n index.

        \n
      • \n
      \n
    • \n
    • \n

      NonKeyAttributes - A list of one or more non-key attribute names that are \n projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

      \n
    • \n
    \n
  • \n
  • \n

    IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB updates\n this value approximately every six hours. Recent changes might not be reflected in this\n value.

    \n
  • \n
  • \n

    ItemCount - Represents the number of items in the index. DynamoDB updates this value\n approximately every six hours. Recent changes might not be reflected in this value.

    \n
  • \n
\n

If the table is in the DELETING state, no information about indexes will be\n returned.

" + "documentation":"

Represents one or more local secondary indexes on the table. Each index is scoped to a given hash key value. Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount of data within a given item collection cannot exceed 10 GB. Each element is composed of:

  • IndexName - The name of the local secondary index.

  • KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • IndexSizeBytes - Represents the total size of the index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • ItemCount - Represents the number of items in the index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

If the table is in the DELETING state, no information about indexes will be returned.

" }, "GlobalSecondaryIndexes":{ "shape":"GlobalSecondaryIndexDescriptionList", - "documentation":"

The global secondary indexes, if any, on the table. Each index is scoped to a given hash key value. Each\n element is composed of:

\n
    \n\n
  • \n

    IndexName - The name of the global secondary index.

    \n
  • \n
  • \n

    IndexSizeBytes - The total size of the global secondary index, in bytes. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

    \n
  • \n
  • \n

    IndexStatus - The current status of the global secondary index:

    \n
      \n
    • \n

      CREATING - The index is being created.

      \n
    • \n
    • \n

      UPDATING - The index is being updated.

      \n
    • \n
    • \n

      DELETING - The index is being deleted.

      \n
    • \n
    • \n

      ACTIVE - The index is ready for use.

      \n
    • \n
    \n
  • \n
  • \n

    ItemCount - The number of items in the global secondary index. DynamoDB updates this value approximately every six\n hours. Recent changes might not be reflected in this value.\n

    \n
  • \n
  • \n

    KeySchema - Specifies the complete index key schema. The attribute names in the\n key schema must be between 1 and 255 characters (inclusive). The key schema must begin\n with the same hash key attribute as the table.

    \n
  • \n
  • Projection - Specifies\n attributes that are copied (projected) from the table into the index. These are in\n addition to the primary key attributes and index key\n attributes, which are automatically projected. Each\n attribute specification is composed of:

    \n
      \n
    • \n

      ProjectionType - One\n of the following:

      \n
        \n
      • \n

        KEYS_ONLY - Only the index and primary keys are projected into the\n index.

        \n
      • \n
      • \n

        INCLUDE - Only the specified table attributes are projected into the\n index. The list of projected attributes are\n in NonKeyAttributes.

        \n
      • \n
      • \n

        ALL - All of the table attributes are projected into the\n index.

        \n
      • \n
      \n
    • \n
    • \n

      NonKeyAttributes - A list of one or more non-key attribute names that are \n projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

      \n
    • \n
    \n
  • \n
  • \n

    ProvisionedThroughput - The provisioned throughput settings for the global secondary index,\n consisting of read and write capacity units, along with data about increases and\n decreases.

    \n
  • \n\n\n\n\n
\n

If the table is in the DELETING state, no information about indexes will be\n returned.

" + "documentation":"

The global secondary indexes, if any, on the table. Each index is scoped to a given hash key value. Each element is composed of:

  • IndexName - The name of the global secondary index.

  • IndexSizeBytes - The total size of the global secondary index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • IndexStatus - The current status of the global secondary index:

    • CREATING - The index is being created.

    • UPDATING - The index is being updated.

    • DELETING - The index is being deleted.

    • ACTIVE - The index is ready for use.

  • ItemCount - The number of items in the global secondary index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

  • KeySchema - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same hash key attribute as the table.

  • Projection - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:

    • ProjectionType - One of the following:

      • KEYS_ONLY - Only the index and primary keys are projected into the index.

      • INCLUDE - Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes.

      • ALL - All of the table attributes are projected into the index.

    • NonKeyAttributes - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes specified in NonKeyAttributes, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.

  • ProvisionedThroughput - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units, along with data about increases and decreases.

If the table is in the DELETING state, no information about indexes will be returned.

" } }, "documentation":"

Represents the properties of a table.

" @@ -1772,28 +1772,28 @@ }, "Key":{ "shape":"Key", - "documentation":"

The primary key of the item to be updated. Each element consists of an attribute name and a\n value for that attribute.

\n

For the primary key, you must provide all of the attributes. For example, with a hash\n type primary key, you only need to specify the hash attribute. For a hash-and-range type\n primary key, you must specify both the hash attribute and the range attribute.

" + "documentation":"

The primary key of the item to be updated. Each element consists of an attribute name and a value for that attribute.

For the primary key, you must provide all of the attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" }, "AttributeUpdates":{ "shape":"AttributeUpdates", - "documentation":"

The names of attributes to be modified, the action to perform on each, and the new value for\n each. If you are updating an attribute that is an index key attribute for any indexes on that\n table, the attribute type must match the index key type defined in the\n AttributesDefinition of the table description. You can use UpdateItem to\n update any non-key attributes.

\n

Attribute values cannot be null. String and binary type attributes must have lengths greater\n than zero. Set type attributes must not be empty. Requests with empty values will be rejected\n with a ValidationException.

\n

Each AttributeUpdates element consists of an attribute name to modify, along with the\n following:

\n
    \n
  • \n

    Value - The new value, if applicable, for this attribute.

    \n
  • \n
  • \n

    Action - Specifies how to perform the update. Valid values for Action are\n PUT, DELETE, and ADD. The behavior depends on\n whether the specified primary key already exists in the table.

    \n\n

    \n If an item with the specified Key is found in the table:\n

    \n\n
      \n
    • \n

      PUT - Adds the specified attribute to the item. If the attribute already\n exists, it is replaced by the new value.

      \n
    • \n
    • \n

      DELETE - If no value is specified, the attribute and its value are\n removed from the item. The data type of the specified value must match the existing\n value's data type.

      \n

      If a set of values is specified, then those values are subtracted from the old\n set. For example, if the attribute value was the set [a,b,c] and the\n DELETE action specified [a,c], then the final attribute value\n would be [b]. Specifying an empty set is an error.

      \n
    • \n
    • \n

      ADD - If the attribute does not already exist, then the attribute and\n its values are added to the item. If the attribute does exist, then the behavior of\n ADD depends on the data type of the attribute:

      \n
        \n
      • \n

        If the existing attribute is a number, and if Value is also a number, then\n the Value is mathematically added to the existing attribute. If\n Value is a negative number, then it is subtracted from the existing\n attribute.

        \n \n

        If you use ADD to increment or decrement a number value for an\n item that doesn't exist before the update, DynamoDB uses 0 as the initial\n value.

        \n

        In addition, if you use ADD to update an existing item, and intend\n to increment or decrement an attribute value which does not yet exist, DynamoDB\n uses 0 as the initial value. For example, suppose that the item you\n want to update does not yet have an attribute named itemcount, but you\n decide to ADD the number 3 to this attribute anyway,\n even though it currently does not exist. DynamoDB will create the itemcount\n attribute, set its initial value to 0, and finally add\n 3 to it. The result will be a new itemcount attribute in\n the item, with a value of 3.

        \n
        \n
      • \n
      • \n

        If the existing data type is a set, and if the Value is also a set, then\n the Value is added to the existing set. (This is a set operation,\n not mathematical addition.) For example, if the attribute value was the set\n [1,2], and the ADD action specified [3],\n then the final attribute value would be [1,2,3]. An error occurs if\n an Add action is specified for a set attribute and the attribute type specified\n does not match the existing set type.

        \n

        Both sets must have the same primitive data type. For example, if the existing\n data type is a set of strings, the Value must also be a set of strings. The\n same holds true for number sets and binary sets.

        \n
      • \n
      \n

      This action is only valid for an existing attribute whose data type is number or is a\n set. Do not use ADD for any other data types.

      \n
    • \n
    \n\n

    \n If no item with the specified Key is found:\n

    \n\n
      \n
    • \n

      PUT - DynamoDB creates a new item with the specified primary key, and then\n adds the attribute.

      \n
    • \n
    • \n

      DELETE - Nothing happens; there is no attribute to delete.

      \n
    • \n
    • \n

      ADD - DynamoDB creates an item with the supplied primary key and number (or\n set of numbers) for the attribute value. The only data types allowed are number and\n number set; no other data types can be specified.

      \n
    • \n
    \n
  • \n
\n

If you specify any attributes that are part of an index key, then the data types for those\n attributes must match those of the schema in the table's attribute definition.

" + "documentation":"

The names of attributes to be modified, the action to perform on each, and the new value for each. If you are updating an attribute that is an index key attribute for any indexes on that table, the attribute type must match the index key type defined in the AttributesDefinition of the table description. You can use UpdateItem to update any non-key attributes.

Attribute values cannot be null. String and binary type attributes must have lengths greater than zero. Set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException.

Each AttributeUpdates element consists of an attribute name to modify, along with the following:

  • Value - The new value, if applicable, for this attribute.

  • Action - Specifies how to perform the update. Valid values for Action are PUT, DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table.

    If an item with the specified Key is found in the table:

    • PUT - Adds the specified attribute to the item. If the attribute already exists, it is replaced by the new value.

    • DELETE - If no value is specified, the attribute and its value are removed from the item. The data type of the specified value must match the existing value's data type.

      If a set of values is specified, then those values are subtracted from the old set. For example, if the attribute value was the set [a,b,c] and the DELETE action specified [a,c], then the final attribute value would be [b]. Specifying an empty set is an error.

    • ADD - If the attribute does not already exist, then the attribute and its values are added to the item. If the attribute does exist, then the behavior of ADD depends on the data type of the attribute:

      • If the existing attribute is a number, and if Value is also a number, then the Value is mathematically added to the existing attribute. If Value is a negative number, then it is subtracted from the existing attribute.

      • If the existing data type is a set, and if the Value is also a set, then the Value is added to the existing set. (This is a set operation, not mathematical addition.) For example, if the attribute value was the set [1,2], and the ADD action specified [3], then the final attribute value would be [1,2,3]. An error occurs if an Add action is specified for a set attribute and the attribute type specified does not match the existing set type.

        Both sets must have the same primitive data type. For example, if the existing data type is a set of strings, the Value must also be a set of strings. The same holds true for number sets and binary sets.

      This action is only valid for an existing attribute whose data type is number or is a set. Do not use ADD for any other data types.

    If no item with the specified Key is found:

    • PUT - DynamoDB creates a new item with the specified primary key, and then adds the attribute.

    • DELETE - Nothing happens; there is no attribute to delete.

    • ADD - DynamoDB creates an item with the supplied primary key and number (or set of numbers) for the attribute value. The only data types allowed are number and number set; no other data types can be specified.

If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

" }, "Expected":{ "shape":"ExpectedAttributeMap", - "documentation":"

A map of attribute/condition pairs. This is the conditional block for the UpdateItem\n operation.

\n

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

\n\n

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

\n

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

\n \n

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

\n \n
    \n
  • \n

    AttributeValueList - One or more values to evaluate against the supplied\n attribute. The number of values in the list depends on the ComparisonOperator\n being used.

    \n

    For type Number, value comparisons are numeric.

    \n

    String value comparisons for greater than, equals, or less than are based on ASCII\n character code values. For example, a is greater than A, and\n aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    \n

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary\n values, for example when evaluating query expressions.

    \n
  • \n
  • \n

    ComparisonOperator - A comparator for evaluating attributes in the\n AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    \n

    The following comparison operators are available:

    \n

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    \n\n

    The following are descriptions of each comparison operator.

    \n
      \n
    • EQ : Equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • NE : Not equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • LE : Less than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • LT : Less than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GE : Greater than or equal.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • GT : Greater than.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If an item contains an AttributeValue of a different\n type than the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

      \n

      \n

    • \n
    • NOT_NULL : The attribute exists.

      \n
    • \n
    • NULL : The attribute does not exist.

      \n
    • \n
    • CONTAINS : checks for a subsequence, or value in a set.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for a substring match. If the target attribute of the comparison is\n Binary, then the operation looks for a subsequence of the target that matches the input.\n If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the\n operation checks for a member of the set (not as a substring).

      \n
    • \n
    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in\n a set.

      \n

      AttributeValueList can contain only one AttributeValue of type String,\n Number, or Binary (not a set). If the target attribute of the comparison is a String, then\n the operation checks for the absence of a substring match. If the target attribute of the\n comparison is Binary, then the operation checks for the absence of a subsequence of the\n target that matches the input. If the target attribute of the comparison is a set (\"SS\",\n \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a\n substring).

    • \n
    • BEGINS_WITH : checks for a prefix.

      \n

      AttributeValueList can contain only one AttributeValue of type String or\n Binary (not a Number or a set). The target attribute of the comparison must be a String or\n Binary (not a Number or a set).

      \n

      \n

    • \n
    • IN : checks for exact matches.

      \n

      AttributeValueList can contain more than one AttributeValue of type String,\n Number, or Binary (not a set). The target attribute of the comparison must be of the same\n type and exact value to match. A String never matches a String set.

      \n
    • \n
    • BETWEEN : Greater than or equal to the first value, and less than or equal\n to the second value.

      \n

      AttributeValueList must contain two AttributeValue elements of the same\n type, either String, Number, or Binary (not a set). A target attribute matches if the\n target value is greater than, or equal to, the first element and less than, or equal to,\n the second element. If an item contains an AttributeValue of a different type than\n the one specified in the request, the value does not match. For example,\n {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also,\n {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

      \n
    • \n
    \n
  • \n
\n

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

\n \n

For backward compatibility with previous DynamoDB releases, the following parameters can be\n used instead of AttributeValueList and ComparisonOperator:

\n
    \n
  • \n

    Value - A value for DynamoDB to compare with an attribute.

    \n
  • \n
  • \n

    Exists - Causes DynamoDB to evaluate the value before attempting the conditional\n operation:

    \n
      \n
    • \n

      If Exists is true, DynamoDB will check to see if that attribute\n value already exists in the table. If it is found, then the condition evaluates to\n true; otherwise the condition evaluate to false.

      \n
    • \n
    • If Exists is false, DynamoDB assumes that the attribute value\n does not exist in the table. If in fact the value does not exist, then the\n assumption is valid and the condition evaluates to true. If the value is found,\n despite the assumption that it does not exist, the condition evaluates to\n false.

    • \n
    \n
  • \n
\n

Even though DynamoDB continues to accept the Value and Exists parameters, they\n are now deprecated. We recommend that you use AttributeValueList and\n ComparisonOperator instead, since they allow you to construct a much wider range of\n conditions.

\n

The Value and Exists parameters are incompatible with\n AttributeValueList and ComparisonOperator. If you attempt to use both sets\n of parameters at once, DynamoDB will throw a ValidationException.

\n
" + "documentation":"

A map of attribute/condition pairs. This is the conditional block for the UpdateItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Each item in Expected represents an attribute name for DynamoDB to check, along with an AttributeValueList and a ComparisonOperator:

  • AttributeValueList - One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

    For type Number, value comparisons are numeric.

    String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

    For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

  • ComparisonOperator - A comparator for evaluating attributes in the AttributeValueList. When performing the comparison, DynamoDB uses strongly consistent reads.

    The following comparison operators are available:

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

    The following are descriptions of each comparison operator.

    • EQ : Equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    • NE : Not equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, Binary, String Set, Number Set, or Binary Set. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not equal {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LE : Less than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • LT : Less than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GE : Greater than or equal.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • GT : Greater than.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not equal {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}.

    • NOT_NULL : The attribute exists.

    • NULL : The attribute does not exist.

    • CONTAINS : checks for a subsequence, or value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for a substring match. If the target attribute of the comparison is Binary, then the operation looks for a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for a member of the set (not as a substring).

    • NOT_CONTAINS : checks for absence of a subsequence, or absence of a value in a set.

      AttributeValueList can contain only one AttributeValue of type String, Number, or Binary (not a set). If the target attribute of the comparison is a String, then the operation checks for the absence of a substring match. If the target attribute of the comparison is Binary, then the operation checks for the absence of a subsequence of the target that matches the input. If the target attribute of the comparison is a set (\"SS\", \"NS\", or \"BS\"), then the operation checks for the absence of a member of the set (not as a substring).

    • BEGINS_WITH : checks for a prefix.

      AttributeValueList can contain only one AttributeValue of type String or Binary (not a Number or a set). The target attribute of the comparison must be a String or Binary (not a Number or a set).

    • IN : checks for exact matches.

      AttributeValueList can contain more than one AttributeValue of type String, Number, or Binary (not a set). The target attribute of the comparison must be of the same type and exact value to match. A String never matches a String set.

    • BETWEEN : Greater than or equal to the first value, and less than or equal to the second value.

      AttributeValueList must contain two AttributeValue elements of the same type, either String, Number, or Binary (not a set). A target attribute matches if the target value is greater than, or equal to, the first element and less than, or equal to, the second element. If an item contains an AttributeValue of a different type than the one specified in the request, the value does not match. For example, {\"S\":\"6\"} does not compare to {\"N\":\"6\"}. Also, {\"N\":\"6\"} does not compare to {\"NS\":[\"6\", \"2\", \"1\"]}

For usage examples of AttributeValueList and ComparisonOperator, see Conditional Expressions in the Amazon DynamoDB Developer Guide.

" }, "ConditionalOperator":{ "shape":"ConditionalOperator", - "documentation":"

A logical operator to apply to the conditions in the Expected map:

\n
    \n
  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

  • \n
\n

If you omit ConditionalOperator, then AND is the default.

\n

The operation will succeed only if the entire map evaluates to true.

" + "documentation":"

A logical operator to apply to the conditions in the Expected map:

  • AND - If all of the conditions evaluate to true, then the entire map evaluates to true.

  • OR - If at least one of the conditions evaluate to true, then the entire map evaluates to true.

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" }, "ReturnValues":{ "shape":"ReturnValue", - "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared either before\n or after they were updated. For UpdateItem, the valid values are:

\n
    \n
  • \n

    NONE - If ReturnValues is not specified, or if its value is\n NONE, then nothing is returned. (This is the default for\n ReturnValues.)

    \n
  • \n
  • \n

    ALL_OLD - If UpdateItem overwrote an attribute name-value pair, then\n the content of the old item is returned.

    \n
  • \n
  • \n

    UPDATED_OLD - The old versions of only the updated attributes are\n returned.

    \n
  • \n
  • \n

    ALL_NEW - All of the attributes of the new version of the item are\n returned.

    \n
  • \n
  • \n

    UPDATED_NEW - The new versions of only the updated attributes are\n returned.

    \n
  • \n
" + "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared either before or after they were updated. For UpdateItem, the valid values are:

  • NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This is the default for ReturnValues.)

  • ALL_OLD - If UpdateItem overwrote an attribute name-value pair, then the content of the old item is returned.

  • UPDATED_OLD - The old versions of only the updated attributes are returned.

  • ALL_NEW - All of the attributes of the new version of the item are returned.

  • UPDATED_NEW - The new versions of only the updated attributes are returned.

" }, "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, "ReturnItemCollectionMetrics":{ "shape":"ReturnItemCollectionMetrics", - "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during\n the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" + "documentation":"

If set to SIZE, statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" } }, "documentation":"

Represents the input of an UpdateItem operation.

" @@ -1803,7 +1803,7 @@ "members":{ "Attributes":{ "shape":"AttributeMap", - "documentation":"

A map of attribute values as they appeared before the UpdateItem operation, but only\n if ReturnValues was specified as something other than NONE in the request.\n Each element represents one attribute.

" + "documentation":"

A map of attribute values as they appeared before the UpdateItem operation, but only if ReturnValues was specified as something other than NONE in the request. Each element represents one attribute.

" }, "ConsumedCapacity":{"shape":"ConsumedCapacity"}, "ItemCollectionMetrics":{"shape":"ItemCollectionMetrics"} @@ -1821,7 +1821,7 @@ "ProvisionedThroughput":{"shape":"ProvisionedThroughput"}, "GlobalSecondaryIndexUpdates":{ "shape":"GlobalSecondaryIndexUpdateList", - "documentation":"

An array of one or more global secondary indexes on the table, together with provisioned throughput settings\n for each index.

" + "documentation":"

An array of one or more global secondary indexes on the table, together with provisioned throughput settings for each index.

" } }, "documentation":"

Represents the input of an UpdateTable operation.

" @@ -1845,7 +1845,7 @@ "documentation":"

A request to perform a DeleteItem operation.

" } }, - "documentation":"

Represents an operation to perform - either DeleteItem or PutItem. You can only\n specify one of these operations, not both, in a single WriteRequest. If you do need to\n perform both of these operations, you will need to specify two separate WriteRequest\n objects.

" + "documentation":"

Represents an operation to perform - either DeleteItem or PutItem. You can only specify one of these operations, not both, in a single WriteRequest. If you do need to perform both of these operations, you will need to specify two separate WriteRequest objects.

" }, "WriteRequests":{ "type":"list", diff --git a/EC2/AWSEC2.h b/EC2/AWSEC2.h index a291f1ef232..b0b800e9a14 100644 --- a/EC2/AWSEC2.h +++ b/EC2/AWSEC2.h @@ -25,14 +25,13 @@ @interface AWSEC2 : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultEC2; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

Accept a VPC peering connection request. To accept a request, the VPC peering connection must be in the pending-acceptance state, and you must be the owner of the peer VPC. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

+ *

Accept a VPC peering connection request. To accept a request, the VPC peering connection must be in the pending-acceptance state, and you must be the owner of the peer VPC. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

* * @param request A container for the necessary parameters to execute the AcceptVpcPeeringConnection service method. * @@ -44,7 +43,7 @@ - (BFTask *)acceptVpcPeeringConnection:(AWSEC2AcceptVpcPeeringConnectionRequest *)request; /** - *

Acquires an Elastic IP address.

An Elastic IP address is for use either in the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

+ *

Acquires an Elastic IP address.

An Elastic IP address is for use either in the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the AllocateAddress service method. * @@ -56,7 +55,7 @@ - (BFTask *)allocateAddress:(AWSEC2AllocateAddressRequest *)request; /** - *

Assigns one or more secondary private IP addresses to the specified network interface. You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see Instance Types in the Amazon Elastic Compute Cloud User Guide. For more information about Elastic IP addresses, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

AssignPrivateIpAddresses is available only in EC2-VPC.

+ *

Assigns one or more secondary private IP addresses to the specified network interface. You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see Instance Types in the Amazon Elastic Compute Cloud User Guide. For more information about Elastic IP addresses, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

AssignPrivateIpAddresses is available only in EC2-VPC.

* * @param request A container for the necessary parameters to execute the AssignPrivateIpAddresses service method. * @@ -67,7 +66,7 @@ - (BFTask *)assignPrivateIpAddresses:(AWSEC2AssignPrivateIpAddressesRequest *)request; /** - *

Associates an Elastic IP address with an instance or a network interface.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

[EC2-Classic, default VPC] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance.

[EC2-VPC] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

+ *

Associates an Elastic IP address with an instance or a network interface.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

[EC2-Classic, default VPC] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance.

[EC2-VPC] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

* * @param request A container for the necessary parameters to execute the AssociateAddress service method. * @@ -79,7 +78,7 @@ - (BFTask *)associateAddress:(AWSEC2AssociateAddressRequest *)request; /** - *

Associates a set of DHCP options (that you've previously created) with the specified VPC, or associates no DHCP options with the VPC.

After you associate the options with the VPC, any existing instances and all new instances that you launch in that VPC use the options. You don't need to restart or relaunch the instances. They automatically pick up the changes within a few hours, depending on how frequently the instance renews its DHCP lease. You can explicitly renew the lease using the operating system on the instance.

For more information, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

+ *

Associates a set of DHCP options (that you've previously created) with the specified VPC, or associates no DHCP options with the VPC.

After you associate the options with the VPC, any existing instances and all new instances that you launch in that VPC use the options. You don't need to restart or relaunch the instances. They automatically pick up the changes within a few hours, depending on how frequently the instance renews its DHCP lease. You can explicitly renew the lease using the operating system on the instance.

For more information, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the AssociateDhcpOptions service method. * @@ -90,7 +89,7 @@ - (BFTask *)associateDhcpOptions:(AWSEC2AssociateDhcpOptionsRequest *)request; /** - *

Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

+ *

Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the AssociateRouteTable service method. * @@ -102,7 +101,7 @@ - (BFTask *)associateRouteTable:(AWSEC2AssociateRouteTableRequest *)request; /** - *

Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

+ *

Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the AttachInternetGateway service method. * @@ -125,7 +124,7 @@ - (BFTask *)attachNetworkInterface:(AWSEC2AttachNetworkInterfaceRequest *)request; /** - *

Attaches an Amazon EBS volume to a running or stopped instance and exposes it to the instancewith the specified device name.

Encrypted Amazon EBS volumes may only be attached toinstances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in theAmazon Elastic Compute Cloud User Guide.

For a list of supported device names, see Attaching an Amazon EBS Volume to an Instance. Any device names that aren't reserved for instance store volumes can be used for Amazon EBS volumes. For more information, see Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide.

If a volume has an AWS Marketplace product code:

  • The volume can only be attached as the root device of a stopped instance.
  • You must be subscribed to the AWS Marketplace code that is on the volume.
  • The configuration (instance type, operating system) of the instance must support that specific AWS Marketplace code. For example, you cannot take a volume from a Windows instance and attach it to a Linux instance.
  • AWS Marketplace product codes are copied from the volume to the instance.

For an overview of the AWS Marketplace, see https://aws.amazon.com/marketplace/help/200900000. For more information about how to use the AWS Marketplace, see AWS Marketplace.

For more information about Amazon EBS volumes, see Attaching Amazon EBS Volumes in theAmazon Elastic Compute Cloud User Guide.

+ *

Attaches an Amazon EBS volume to a running or stopped instance and exposes it to the instance with the specified device name.

Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

For a list of supported device names, see Attaching an Amazon EBS Volume to an Instance. Any device names that aren't reserved for instance store volumes can be used for Amazon EBS volumes. For more information, see Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide.

If a volume has an AWS Marketplace product code:

  • The volume can only be attached as the root device of a stopped instance.
  • You must be subscribed to the AWS Marketplace code that is on the volume.
  • The configuration (instance type, operating system) of the instance must support that specific AWS Marketplace code. For example, you cannot take a volume from a Windows instance and attach it to a Linux instance.
  • AWS Marketplace product codes are copied from the volume to the instance.

For an overview of the AWS Marketplace, see https://aws.amazon.com/marketplace/help/200900000. For more information about how to use the AWS Marketplace, see AWS Marketplace.

For more information about Amazon EBS volumes, see Attaching Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the AttachVolume service method. * @@ -137,7 +136,7 @@ - (BFTask *)attachVolume:(AWSEC2AttachVolumeRequest *)request; /** - *

Attaches a virtual private gateway to a VPC. For more information, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Attaches a virtual private gateway to a VPC. For more information, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the AttachVpnGateway service method. * @@ -149,7 +148,7 @@ - (BFTask *)attachVpnGateway:(AWSEC2AttachVpnGatewayRequest *)request; /** - *

Adds one or more egress rules to a security group for use with a VPC. Specifically, this action permits instances to send traffic to one or more CIDR IP address ranges, or to one or more security groups for the same VPC.

You can have up to 50 rules per security group (covering both ingress and egress rules).

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. This action doesn't apply to security groups for use in EC2-Classic. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

Each rule consists of the protocol (for example, TCP), plus either a CIDR range or a source group. For the TCP and UDP protocols, you must also specify the destination port or port range. For the ICMP protocol, you must also specify the ICMP type and code. You can use -1 for the type or code to mean all types or all codes.

Rule changes are propagated to affected instances as quickly as possible. However, a small delay might occur.

+ *

Adds one or more egress rules to a security group for use with a VPC. Specifically, this action permits instances to send traffic to one or more CIDR IP address ranges, or to one or more security groups for the same VPC.

You can have up to 50 rules per security group (covering both ingress and egress rules).

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. This action doesn't apply to security groups for use in EC2-Classic. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

Each rule consists of the protocol (for example, TCP), plus either a CIDR range or a source group. For the TCP and UDP protocols, you must also specify the destination port or port range. For the ICMP protocol, you must also specify the ICMP type and code. You can use -1 for the type or code to mean all types or all codes.

Rule changes are propagated to affected instances as quickly as possible. However, a small delay might occur.

* * @param request A container for the necessary parameters to execute the AuthorizeSecurityGroupEgress service method. * @@ -160,7 +159,7 @@ - (BFTask *)authorizeSecurityGroupEgress:(AWSEC2AuthorizeSecurityGroupEgressRequest *)request; /** - *

Adds one or more ingress rules to a security group.

EC2-Classic: You can have up to 100 rules per group.

EC2-VPC: You can have up to 50 rules per group (covering both ingress and egress rules).

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

[EC2-Classic] This action gives one or more CIDR IP address ranges permission to access a security group in your account, or gives one or more security groups (called the source groups) permission to access a security group for your account. A source group can be for your own AWS account, or another.

[EC2-VPC] This action gives one or more CIDR IP address ranges permission to access a security group in your VPC, or gives one or more other security groups (called the source groups) permission to access a security group for your VPC. The security groups must all be for the same VPC.

+ *

Adds one or more ingress rules to a security group.

EC2-Classic: You can have up to 100 rules per group.

EC2-VPC: You can have up to 50 rules per group (covering both ingress and egress rules).

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

[EC2-Classic] This action gives one or more CIDR IP address ranges permission to access a security group in your account, or gives one or more security groups (called the source groups) permission to access a security group for your account. A source group can be for your own AWS account, or another.

[EC2-VPC] This action gives one or more CIDR IP address ranges permission to access a security group in your VPC, or gives one or more other security groups (called the source groups) permission to access a security group for your VPC. The security groups must all be for the same VPC.

* * @param request A container for the necessary parameters to execute the AuthorizeSecurityGroupIngress service method. * @@ -171,7 +170,7 @@ - (BFTask *)authorizeSecurityGroupIngress:(AWSEC2AuthorizeSecurityGroupIngressRequest *)request; /** - *

Bundles an Amazon instance store-backed Windows instance.

During bundling, only the root device volume (C:\) is bundled. Data on other instance store volumes is not preserved.

This procedure is not applicable for Linux/Unix instances or Windows instances that are backed by Amazon EBS.

For more information, see Creating an Instance Store-Backed Windows AMI.

+ *

Bundles an Amazon instance store-backed Windows instance.

During bundling, only the root device volume (C:\) is bundled. Data on other instance store volumes is not preserved.

For more information, see Creating an Instance Store-Backed Windows AMI.

* * @param request A container for the necessary parameters to execute the BundleInstance service method. * @@ -195,7 +194,7 @@ - (BFTask *)cancelBundleTask:(AWSEC2CancelBundleTaskRequest *)request; /** - *

Cancels an active conversion task. The task can be the import of an instance or volume. Theaction removes all artifacts of the conversion, including a partially uploaded volume orinstance. If the conversion is complete or is in the process of transferring the final diskimage, the command fails and returns an exception.

For more information, see Using the Command Line Tools to Import Your Virtual Machine to AmazonEC2 in the Amazon Elastic Compute Cloud User Guide.

+ *

Cancels an active conversion task. The task can be the import of an instance or volume. The action removes all artifacts of the conversion, including a partially uploaded volume or instance. If the conversion is complete or is in the process of transferring the final disk image, the command fails and returns an exception.

For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CancelConversionTask service method. * @@ -206,7 +205,7 @@ - (BFTask *)cancelConversionTask:(AWSEC2CancelConversionRequest *)request; /** - *

Cancels an active export task. The request removes all artifacts of the export,including any partially-created Amazon S3 objects. If the export task is complete oris in the process of transferring the final disk image, the command fails andreturns an error.

+ *

Cancels an active export task. The request removes all artifacts of the export, including any partially-created Amazon S3 objects. If the export task is complete or is in the process of transferring the final disk image, the command fails and returns an error.

* * @param request A container for the necessary parameters to execute the CancelExportTask service method. * @@ -217,7 +216,7 @@ - (BFTask *)cancelExportTask:(AWSEC2CancelExportTaskRequest *)request; /** - *

Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace.

For more information, seeReserved Instance Marketplacein the Amazon Elastic Compute Cloud User Guide.

+ *

Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CancelReservedInstancesListing service method. * @@ -229,7 +228,7 @@ - (BFTask *)cancelReservedInstancesListing:(AWSEC2CancelReservedInstancesListingRequest *)request; /** - *

Cancels one or more Spot Instance requests. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

Canceling a Spot Instance request does not terminate running Spot Instances associated with the request.

+ *

Cancels one or more Spot Instance requests. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

Canceling a Spot Instance request does not terminate running Spot Instances associated with the request.

* * @param request A container for the necessary parameters to execute the CancelSpotInstanceRequests service method. * @@ -241,7 +240,7 @@ - (BFTask *)cancelSpotInstanceRequests:(AWSEC2CancelSpotInstanceRequestsRequest *)request; /** - *

Determines whether a product code is associated with an instance. This action can only be used by the owner of the product code. It is useful when a product code owner needs to verify whether another user's instance is eligible for support.

+ *

Determines whether a product code is associated with an instance. This action can only be used by the owner of the product code. It is useful when a product code owner needs to verify whether another user's instance is eligible for support.

* * @param request A container for the necessary parameters to execute the ConfirmProductInstance service method. * @@ -253,7 +252,7 @@ - (BFTask *)confirmProductInstance:(AWSEC2ConfirmProductInstanceRequest *)request; /** - *

Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and can't be behind a device performing network address translation (NAT).

For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range).

Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with the exception of 7224, which is reserved in the us-east-1 region, and 9059, which is reserved in the eu-west-1 region.

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and can't be behind a device performing network address translation (NAT).

For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range).

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateCustomerGateway service method. * @@ -265,7 +264,7 @@ - (BFTask *)createCustomerGateway:(AWSEC2CreateCustomerGatewayRequest *)request; /** - *

Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see RFC 2132.

  • domain-name-servers - The IP addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas.
  • domain-name - If you're using AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS in another region, specify region.compute.internal (for example, ap-northeast-1.compute.internal). Otherwise, specify a domain name (for example, MyCompany.com).
  • ntp-servers - The IP addresses of up to four Network Time Protocol (NTP) servers.
  • netbios-name-servers - The IP addresses of up to four NetBIOS name servers.
  • netbios-node-type - The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported). For more information about these node types, see RFC 2132.

For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see RFC 2132.

  • domain-name-servers - The IP addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas.
  • domain-name - If you're using AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS in another region, specify region.compute.internal (for example, ap-northeast-1.compute.internal). Otherwise, specify a domain name (for example, MyCompany.com). If specifying more than one domain name, separate them with spaces.
  • ntp-servers - The IP addresses of up to four Network Time Protocol (NTP) servers.
  • netbios-name-servers - The IP addresses of up to four NetBIOS name servers.
  • netbios-node-type - The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported). For more information about these node types, see RFC 2132.

For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateDhcpOptions service method. * @@ -277,7 +276,7 @@ - (BFTask *)createDhcpOptions:(AWSEC2CreateDhcpOptionsRequest *)request; /** - *

Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either running or stopped.

If you customized your instance with instance store volumes or EBS volumes in addition to the root device volume, the new AMI contains block device mapping information for those volumes. When you launch an instance from this new AMI, the instance automatically launches with those additional volumes.

For more information, see Creating Amazon EBS-Backed Linux AMIs in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either running or stopped.

If you customized your instance with instance store volumes or EBS volumes in addition to the root device volume, the new AMI contains block device mapping information for those volumes. When you launch an instance from this new AMI, the instance automatically launches with those additional volumes.

For more information, see Creating Amazon EBS-Backed Linux AMIs in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateImage service method. * @@ -289,7 +288,7 @@ - (BFTask *)createImage:(AWSEC2CreateImageRequest *)request; /** - *

Exports a running or stopped instance to an Amazon S3 bucket.

For information about the supported operating systems, image formats, and known limitations for the types of instances you can export, see Exporting EC2 Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Exports a running or stopped instance to an Amazon S3 bucket.

For information about the supported operating systems, image formats, and known limitations for the types of instances you can export, see Exporting EC2 Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateInstanceExportTask service method. * @@ -301,7 +300,7 @@ - (BFTask *)createInstanceExportTask:(AWSEC2CreateInstanceExportTaskRequest *)request; /** - *

Creates an Internet gateway for use with a VPC. After creating the Internet gateway, you attach it to a VPC using AttachInternetGateway.

For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

+ *

Creates an Internet gateway for use with a VPC. After creating the Internet gateway, you attach it to a VPC using AttachInternetGateway.

For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateInternetGateway service method. * @@ -313,7 +312,7 @@ - (BFTask *)createInternetGateway:(AWSEC2CreateInternetGatewayRequest *)request; /** - *

Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key and displays the private key for you to save to a file. The private key is returned as an unencrypted PEM encoded PKCS#8 private key. If a key with the specified name already exists, Amazon EC2 returns an error.

You can have up to five thousand key pairs per region.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key and displays the private key for you to save to a file. The private key is returned as an unencrypted PEM encoded PKCS#8 private key. If a key with the specified name already exists, Amazon EC2 returns an error.

You can have up to five thousand key pairs per region.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateKeyPair service method. * @@ -325,7 +324,7 @@ - (BFTask *)createKeyPair:(AWSEC2CreateKeyPairRequest *)request; /** - *

Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition to security groups) for the instances in your VPC.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition to security groups) for the instances in your VPC.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateNetworkAcl service method. * @@ -337,7 +336,7 @@ - (BFTask *)createNetworkAcl:(AWSEC2CreateNetworkAclRequest *)request; /** - *

Creates an entry (a rule) in a network ACL with the specified rule number. Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the ACL, we process the entries in the ACL according to the rule numbers, in ascending order. Each network ACL has a set of ingress rules and a separate set of egress rules.

We recommend that you leave room between the rule numbers (for example, 100, 110, 120, ...), and not number them one right after the other (for example, 101, 102, 103, ...). This makes it easier to add a rule between existing ones without having to renumber the rules.

After you add an entry, you can't modify it; you must either replace it, or create an entry and delete the old one.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

+ *

Creates an entry (a rule) in a network ACL with the specified rule number. Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the ACL, we process the entries in the ACL according to the rule numbers, in ascending order. Each network ACL has a set of ingress rules and a separate set of egress rules.

We recommend that you leave room between the rule numbers (for example, 100, 110, 120, ...), and not number them one right after the other (for example, 101, 102, 103, ...). This makes it easier to add a rule between existing ones without having to renumber the rules.

After you add an entry, you can't modify it; you must either replace it, or create an entry and delete the old one.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateNetworkAclEntry service method. * @@ -348,7 +347,7 @@ - (BFTask *)createNetworkAclEntry:(AWSEC2CreateNetworkAclEntryRequest *)request; /** - *

Creates a network interface in the specified subnet.

For more information about network interfaces, see Elastic Network Interfaces in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates a network interface in the specified subnet.

For more information about network interfaces, see Elastic Network Interfaces in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateNetworkInterface service method. * @@ -360,7 +359,7 @@ - (BFTask *)createNetworkInterface:(AWSEC2CreateNetworkInterfaceRequest *)request; /** - *

Creates a placement group that you launch cluster instances into. You must give the group a name that's unique within the scope of your account.

For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates a placement group that you launch cluster instances into. You must give the group a name that's unique within the scope of your account.

For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreatePlacementGroup service method. * @@ -371,7 +370,7 @@ - (BFTask *)createPlacementGroup:(AWSEC2CreatePlacementGroupRequest *)request; /** - *

Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved Instance Marketplace.You can submit one Reserved Instance listing at a time.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved Instance Marketplace. You can submit one Reserved Instance listing at a time.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateReservedInstancesListing service method. * @@ -383,7 +382,7 @@ - (BFTask *)createReservedInstancesListing:(AWSEC2CreateReservedInstancesListingRequest *)request; /** - *

Creates a route in a route table within a VPC.

You must specify one of the following targets: Internet gateway, NAT instance, VPC peering connection, or network interface.

When determining how to route traffic, we use the route with the most specific match. For example, let's say the traffic is destined for 192.0.2.3, and the route table includes the following two routes:

  • 192.0.2.0/24 (goes to some target A)

  • 192.0.2.0/28 (goes to some target B)

Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a route in a route table within a VPC.

You must specify one of the following targets: Internet gateway, NAT instance, VPC peering connection, or network interface.

When determining how to route traffic, we use the route with the most specific match. For example, let's say the traffic is destined for 192.0.2.3, and the route table includes the following two routes:

  • 192.0.2.0/24 (goes to some target A)

  • 192.0.2.0/28 (goes to some target B)

Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateRoute service method. * @@ -394,7 +393,7 @@ - (BFTask *)createRoute:(AWSEC2CreateRouteRequest *)request; /** - *

Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateRouteTable service method. * @@ -406,7 +405,7 @@ - (BFTask *)createRouteTable:(AWSEC2CreateRouteTableRequest *)request; /** - *

Creates a security group.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

EC2-Classic: You can have up to 500 security groups.

EC2-VPC: You can create up to 100 security groups per VPC.

When you create a security group, you specify a friendly name of your choice. You can have a security group for use in EC2-Classic with the same name as a security group for use in a VPC. However, you can't have two security groups for use in EC2-Classic with the same name or two security groups for use in a VPC with the same name.

You have a default security group for use in EC2-Classic and a default security group for use in your VPC. If you don't specify a security group when you launch an instance, the instance is launched into the appropriate default security group. A default security group includes a default rule that grants instances unrestricted network access to each other.

You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress.

+ *

Creates a security group.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

EC2-Classic: You can have up to 500 security groups.

EC2-VPC: You can create up to 100 security groups per VPC.

When you create a security group, you specify a friendly name of your choice. You can have a security group for use in EC2-Classic with the same name as a security group for use in a VPC. However, you can't have two security groups for use in EC2-Classic with the same name or two security groups for use in a VPC with the same name.

You have a default security group for use in EC2-Classic and a default security group for use in your VPC. If you don't specify a security group when you launch an instance, the instance is launched into the appropriate default security group. A default security group includes a default rule that grants instances unrestricted network access to each other.

You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress.

* * @param request A container for the necessary parameters to execute the CreateSecurityGroup service method. * @@ -418,7 +417,7 @@ - (BFTask *)createSecurityGroup:(AWSEC2CreateSecurityGroupRequest *)request; /** - *

Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make copies of Amazon EBS volumes, and to save data before shutting down an instance.

When a snapshot is created, any AWS Marketplace product codes that are associated with the source volume are propagated to the snapshot.

You can take a snapshot of an attached volume that is in use. However, snapshots only capture data that has been written to your Amazon EBS volume at the time the snapshot command is issued; this may exclude any data that has been cached by any applications or the operating system. If you can pause any file writes to the volume long enough to take a snapshot, your snapshot should be complete. However, if you cannot pause all file writes to the volume, you should unmount the volume from within the instance, issue the snapshot command, and then remount the volume to ensure a consistent and complete snapshot. You may remount and use your volume while the snapshot status is pending.

To create a snapshot for Amazon EBS volumes that serve as root devices, you should stop the instancebefore taking the snapshot.

Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and any associated snapshots always remain protected.

For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make copies of Amazon EBS volumes, and to save data before shutting down an instance.

When a snapshot is created, any AWS Marketplace product codes that are associated with the source volume are propagated to the snapshot.

You can take a snapshot of an attached volume that is in use. However, snapshots only capture data that has been written to your Amazon EBS volume at the time the snapshot command is issued; this may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the volume long enough to take a snapshot, your snapshot should be complete. However, if you cannot pause all file writes to the volume, you should unmount the volume from within the instance, issue the snapshot command, and then remount the volume to ensure a consistent and complete snapshot. You may remount and use your volume while the snapshot status is pending.

To create a snapshot for Amazon EBS volumes that serve as root devices, you should stop the instance before taking the snapshot.

Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and any associated snapshots always remain protected.

For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateSnapshot service method. * @@ -430,7 +429,7 @@ - (BFTask *)createSnapshot:(AWSEC2CreateSnapshotRequest *)request; /** - *

Creates a datafeed for Spot Instances, enabling you to view Spot Instance usage logs. You can create one data feed per AWS account. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates a datafeed for Spot Instances, enabling you to view Spot Instance usage logs. You can create one data feed per AWS account. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateSpotDatafeedSubscription service method. * @@ -442,7 +441,7 @@ - (BFTask *)createSpotDatafeedSubscription:(AWSEC2CreateSpotDatafeedSubscriptionRequest *)request; /** - *

Creates a subnet in an existing VPC.

When you create each subnet, you provide the VPC ID and the CIDR block you want for the subnet. After you create a subnet, you can't change its CIDR block. The subnet's CIDR block can be the same as the VPC's CIDR block (assuming you want only a single subnet in the VPC), or a subset of the VPC's CIDR block. If you create more than one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest subnet (and VPC) you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses).

AWS reserves both the first four and the last IP address in each subnet'sCIDR block. They're not available for use.

If you add more than one subnet to a VPC, they're set up in a star topology with a logical router in the middle.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a subnet in an existing VPC.

When you create each subnet, you provide the VPC ID and the CIDR block you want for the subnet. After you create a subnet, you can't change its CIDR block. The subnet's CIDR block can be the same as the VPC's CIDR block (assuming you want only a single subnet in the VPC), or a subset of the VPC's CIDR block. If you create more than one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest subnet (and VPC) you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses).

AWS reserves both the first four and the last IP address in each subnet's CIDR block. They're not available for use.

If you add more than one subnet to a VPC, they're set up in a star topology with a logical router in the middle.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateSubnet service method. * @@ -454,7 +453,7 @@ - (BFTask *)createSubnet:(AWSEC2CreateSubnetRequest *)request; /** - *

Adds or overwrites one or more tags for the specified EC2 resource or resources.Each resource can have a maximum of 10 tags. Each tag consists of a key and optionalvalue. Tag keys must be unique per resource.

For more information about tags, see TaggingYour Resources in the Amazon Elastic Compute Cloud User Guide.

+ *

Adds or overwrites one or more tags for the specified EC2 resource or resources. Each resource can have a maximum of 10 tags. Each tag consists of a key and optional value. Tag keys must be unique per resource.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateTags service method. * @@ -465,7 +464,7 @@ - (BFTask *)createTags:(AWSEC2CreateTagsRequest *)request; /** - *

Creates an Amazon EBS volume that can be attached to an instance in the same Availability Zone. The volume is created in the specified region.

You can create a new empty volume or restore a volume from an Amazon EBS snapshot. Any AWS Marketplace product codes from the snapshot are propagated to the volume.

You can create encrypted volumes with the Encrypted parameter. Encrypted volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

For more information, see Creating or Restoring an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates an Amazon EBS volume that can be attached to an instance in the same Availability Zone. The volume is created in the specified region.

You can create a new empty volume or restore a volume from an Amazon EBS snapshot. Any AWS Marketplace product codes from the snapshot are propagated to the volume.

You can create encrypted volumes with the Encrypted parameter. Encrypted volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

For more information, see Creating or Restoring an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateVolume service method. * @@ -477,7 +476,7 @@ - (BFTask *)createVolume:(AWSEC2CreateVolumeRequest *)request; /** - *

Creates a VPC with the specified CIDR block.

The smallest VPC you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses). To help you decide how big to make your VPC, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

By default, each instance you launch in the VPC has the default DHCP options, which includes only a default DNS server that we provide (AmazonProvidedDNS). For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a VPC with the specified CIDR block.

The smallest VPC you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses). To help you decide how big to make your VPC, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

By default, each instance you launch in the VPC has the default DHCP options, which includes only a default DNS server that we provide (AmazonProvidedDNS). For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateVpc service method. * @@ -489,7 +488,7 @@ - (BFTask *)createVpc:(AWSEC2CreateVpcRequest *)request; /** - *

Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer VPC with which to create the connection. The peer VPC can belong to another AWS account. The requester VPC and peer VPC cannot have overlapping CIDR blocks.

The owner of the peer VPC must accept the peering request to activate the peering connection. The VPC peering connection request expires after 7 days, after which it cannot be accepted or rejected.

A CreateVpcPeeringConnection request between VPCs with overlapping CIDR blocks results in the VPC peering connection having a status of failed.

+ *

Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer VPC with which to create the connection. The peer VPC can belong to another AWS account. The requester VPC and peer VPC cannot have overlapping CIDR blocks.

The owner of the peer VPC must accept the peering request to activate the peering connection. The VPC peering connection request expires after 7 days, after which it cannot be accepted or rejected.

A CreateVpcPeeringConnection request between VPCs with overlapping CIDR blocks results in the VPC peering connection having a status of failed.

* * @param request A container for the necessary parameters to execute the CreateVpcPeeringConnection service method. * @@ -501,7 +500,7 @@ - (BFTask *)createVpcPeeringConnection:(AWSEC2CreateVpcPeeringConnectionRequest *)request; /** - *

Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The only supported connection type is ipsec.1.

The response includes information that you need to give to your network administrator to configure your customer gateway.

We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway.

If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The only supported connection type is ipsec.1.

The response includes information that you need to give to your network administrator to configure your customer gateway.

We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway.

If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateVpnConnection service method. * @@ -513,7 +512,7 @@ - (BFTask *)createVpnConnection:(AWSEC2CreateVpnConnectionRequest *)request; /** - *

Creates a static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateVpnConnectionRoute service method. * @@ -524,7 +523,7 @@ - (BFTask *)createVpnConnectionRoute:(AWSEC2CreateVpnConnectionRouteRequest *)request; /** - *

Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.

For more information about virtual private gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.

For more information about virtual private gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the CreateVpnGateway service method. * @@ -536,7 +535,7 @@ - (BFTask *)createVpnGateway:(AWSEC2CreateVpnGatewayRequest *)request; /** - *

Deletes the specified customer gateway. You must delete the VPN connection before you can delete the customer gateway.

+ *

Deletes the specified customer gateway. You must delete the VPN connection before you can delete the customer gateway.

* * @param request A container for the necessary parameters to execute the DeleteCustomerGateway service method. * @@ -547,7 +546,7 @@ - (BFTask *)deleteCustomerGateway:(AWSEC2DeleteCustomerGatewayRequest *)request; /** - *

Deletes the specified set of DHCP options. You must disassociate the set of DHCP options before you can delete it. You can disassociate the set of DHCP options by associating either a new set of options or the default set of options with the VPC.

+ *

Deletes the specified set of DHCP options. You must disassociate the set of DHCP options before you can delete it. You can disassociate the set of DHCP options by associating either a new set of options or the default set of options with the VPC.

* * @param request A container for the necessary parameters to execute the DeleteDhcpOptions service method. * @@ -558,7 +557,7 @@ - (BFTask *)deleteDhcpOptions:(AWSEC2DeleteDhcpOptionsRequest *)request; /** - *

Deletes the specified Internet gateway. You must detach the Internet gateway from the VPC before you can delete it.

+ *

Deletes the specified Internet gateway. You must detach the Internet gateway from the VPC before you can delete it.

* * @param request A container for the necessary parameters to execute the DeleteInternetGateway service method. * @@ -580,7 +579,7 @@ - (BFTask *)deleteKeyPair:(AWSEC2DeleteKeyPairRequest *)request; /** - *

Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. You can't delete the default network ACL.

+ *

Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. You can't delete the default network ACL.

* * @param request A container for the necessary parameters to execute the DeleteNetworkAcl service method. * @@ -602,7 +601,7 @@ - (BFTask *)deleteNetworkAclEntry:(AWSEC2DeleteNetworkAclEntryRequest *)request; /** - *

Deletes the specified network interface. You must detach the network interface before you can delete it.

+ *

Deletes the specified network interface. You must detach the network interface before you can delete it.

* * @param request A container for the necessary parameters to execute the DeleteNetworkInterface service method. * @@ -613,7 +612,7 @@ - (BFTask *)deleteNetworkInterface:(AWSEC2DeleteNetworkInterfaceRequest *)request; /** - *

Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DeletePlacementGroup service method. * @@ -635,7 +634,7 @@ - (BFTask *)deleteRoute:(AWSEC2DeleteRouteRequest *)request; /** - *

Deletes the specified route table. You must disassociate the route table from any subnets before you can delete it. You can't delete the main route table.

+ *

Deletes the specified route table. You must disassociate the route table from any subnets before you can delete it. You can't delete the main route table.

* * @param request A container for the necessary parameters to execute the DeleteRouteTable service method. * @@ -646,7 +645,7 @@ - (BFTask *)deleteRouteTable:(AWSEC2DeleteRouteTableRequest *)request; /** - *

Deletes a security group.

If you attempt to delete a security group that is associated with an instance, or is referenced by another security group, the operation fails with InvalidGroup.InUse in EC2-Classic or DependencyViolation in EC2-VPC.

+ *

Deletes a security group.

If you attempt to delete a security group that is associated with an instance, or is referenced by another security group, the operation fails with InvalidGroup.InUse in EC2-Classic or DependencyViolation in EC2-VPC.

* * @param request A container for the necessary parameters to execute the DeleteSecurityGroup service method. * @@ -657,7 +656,7 @@ - (BFTask *)deleteSecurityGroup:(AWSEC2DeleteSecurityGroupRequest *)request; /** - *

Deletes the specified snapshot.

When you make periodic snapshots of a volume, the snapshots are incremental, and only the blocks on the device that have changed since your last snapshot are saved in the new snapshot. When you delete a snapshot, only the data not needed for any other snapshot is removed. So regardless of which prior snapshots have been deleted, all active snapshots will have access to all the information needed to restore the volume.

You cannot delete a snapshot of the root device of an Amazon EBS volume used by a registered AMI.You must first de-register the AMI before you can delete the snapshot.

For more information, see Deleting an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

+ *

Deletes the specified snapshot.

When you make periodic snapshots of a volume, the snapshots are incremental, and only the blocks on the device that have changed since your last snapshot are saved in the new snapshot. When you delete a snapshot, only the data not needed for any other snapshot is removed. So regardless of which prior snapshots have been deleted, all active snapshots will have access to all the information needed to restore the volume.

You cannot delete a snapshot of the root device of an Amazon EBS volume used by a registered AMI. You must first de-register the AMI before you can delete the snapshot.

For more information, see Deleting an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DeleteSnapshot service method. * @@ -668,7 +667,7 @@ - (BFTask *)deleteSnapshot:(AWSEC2DeleteSnapshotRequest *)request; /** - *

Deletes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Deletes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DeleteSpotDatafeedSubscription service method. * @@ -679,7 +678,7 @@ - (BFTask *)deleteSpotDatafeedSubscription:(AWSEC2DeleteSpotDatafeedSubscriptionRequest *)request; /** - *

Deletes the specified subnet. You must terminate all running instances in the subnet before you can delete the subnet.

+ *

Deletes the specified subnet. You must terminate all running instances in the subnet before you can delete the subnet.

* * @param request A container for the necessary parameters to execute the DeleteSubnet service method. * @@ -690,7 +689,7 @@ - (BFTask *)deleteSubnet:(AWSEC2DeleteSubnetRequest *)request; /** - *

Deletes the specified set of tags from the specified set of resources. This call is designedto follow a DescribeTags request.

For more information about tags, see TaggingYour Resources in the Amazon Elastic Compute Cloud User Guide.

+ *

Deletes the specified set of tags from the specified set of resources. This call is designed to follow a DescribeTags request.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DeleteTags service method. * @@ -701,7 +700,7 @@ - (BFTask *)deleteTags:(AWSEC2DeleteTagsRequest *)request; /** - *

Deletes the specified Amazon EBS volume. The volume must be in the available state (notattached to an instance).

The volume may remain in the deleting state for several minutes.

For more information, see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

+ *

Deletes the specified Amazon EBS volume. The volume must be in the available state (not attached to an instance).

For more information, see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DeleteVolume service method. * @@ -712,7 +711,7 @@ - (BFTask *)deleteVolume:(AWSEC2DeleteVolumeRequest *)request; /** - *

Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on.

+ *

Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on.

* * @param request A container for the necessary parameters to execute the DeleteVpc service method. * @@ -723,7 +722,7 @@ - (BFTask *)deleteVpc:(AWSEC2DeleteVpcRequest *)request; /** - *

Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the peer VPC can delete the VPC peering connection if it's in the active state. The owner of the requester VPC can delete a VPC peering connection in the pending-acceptance state.

+ *

Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the peer VPC can delete the VPC peering connection if it's in the active state. The owner of the requester VPC can delete a VPC peering connection in the pending-acceptance state.

* * @param request A container for the necessary parameters to execute the DeleteVpcPeeringConnection service method. * @@ -735,7 +734,7 @@ - (BFTask *)deleteVpcPeeringConnection:(AWSEC2DeleteVpcPeeringConnectionRequest *)request; /** - *

Deletes the specified VPN connection.

If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection.

+ *

Deletes the specified VPN connection.

If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection.

* * @param request A container for the necessary parameters to execute the DeleteVpnConnection service method. * @@ -746,7 +745,7 @@ - (BFTask *)deleteVpnConnection:(AWSEC2DeleteVpnConnectionRequest *)request; /** - *

Deletes the specified static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

+ *

Deletes the specified static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

* * @param request A container for the necessary parameters to execute the DeleteVpnConnectionRoute service method. * @@ -757,7 +756,7 @@ - (BFTask *)deleteVpnConnectionRoute:(AWSEC2DeleteVpnConnectionRouteRequest *)request; /** - *

Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network.

+ *

Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network.

* * @param request A container for the necessary parameters to execute the DeleteVpnGateway service method. * @@ -768,7 +767,7 @@ - (BFTask *)deleteVpnGateway:(AWSEC2DeleteVpnGatewayRequest *)request; /** - *

Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances.

This command does not delete the AMI.

+ *

Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances.

This command does not delete the AMI.

* * @param request A container for the necessary parameters to execute the DeregisterImage service method. * @@ -779,7 +778,7 @@ - (BFTask *)deregisterImage:(AWSEC2DeregisterImageRequest *)request; /** - *

Describes the specified attribute of your AWS account.

+ *

Describes the specified attribute of your AWS account.

* * @param request A container for the necessary parameters to execute the DescribeAccountAttributes service method. * @@ -791,7 +790,7 @@ - (BFTask *)describeAccountAttributes:(AWSEC2DescribeAccountAttributesRequest *)request; /** - *

Describes one or more of your Elastic IP addresses.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of your Elastic IP addresses.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeAddresses service method. * @@ -803,7 +802,7 @@ - (BFTask *)describeAddresses:(AWSEC2DescribeAddressesRequest *)request; /** - *

Describes one or more of the Availability Zones that are available to you. The results include zones only for the region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone.

For more information, see Regions and Availability Zones in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of the Availability Zones that are available to you. The results include zones only for the region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone.

For more information, see Regions and Availability Zones in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeAvailabilityZones service method. * @@ -815,7 +814,7 @@ - (BFTask *)describeAvailabilityZones:(AWSEC2DescribeAvailabilityZonesRequest *)request; /** - *

Describes one or more of your bundling tasks.

Completed bundle tasks are listed for only a limited time. If your bundle task is no longer in the list, you can still register an AMI from it. Just use RegisterImage with the Amazon S3 bucket name and image manifest name you provided to the bundle task.

+ *

Describes one or more of your bundling tasks.

* * @param request A container for the necessary parameters to execute the DescribeBundleTasks service method. * @@ -827,7 +826,7 @@ - (BFTask *)describeBundleTasks:(AWSEC2DescribeBundleTasksRequest *)request; /** - *

Describes one or more of your conversion tasks. For more information, see Using the Command LineTools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of your conversion tasks. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeConversionTasks service method. * @@ -839,7 +838,7 @@ - (BFTask *)describeConversionTasks:(AWSEC2DescribeConversionTasksRequest *)request; /** - *

Describes one or more of your VPN customer gateways.

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your VPN customer gateways.

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeCustomerGateways service method. * @@ -851,7 +850,7 @@ - (BFTask *)describeCustomerGateways:(AWSEC2DescribeCustomerGatewaysRequest *)request; /** - *

Describes one or more of your DHCP options sets.

For more information about DHCP options sets, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your DHCP options sets.

For more information about DHCP options sets, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeDhcpOptions service method. * @@ -863,7 +862,7 @@ - (BFTask *)describeDhcpOptions:(AWSEC2DescribeDhcpOptionsRequest *)request; /** - *

Describes one or more of your export tasks.

+ *

Describes one or more of your export tasks.

* * @param request A container for the necessary parameters to execute the DescribeExportTasks service method. * @@ -887,7 +886,7 @@ - (BFTask *)describeImageAttribute:(AWSEC2DescribeImageAttributeRequest *)request; /** - *

Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to you include public images, private images that you own, and private images owned by other AWS accounts but for which you have explicit launch permissions.

Deregistered images are included in the returned results for an unspecified interval after deregistration.

+ *

Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to you include public images, private images that you own, and private images owned by other AWS accounts but for which you have explicit launch permissions.

* * @param request A container for the necessary parameters to execute the DescribeImages service method. * @@ -899,7 +898,7 @@ - (BFTask *)describeImages:(AWSEC2DescribeImagesRequest *)request; /** - *

Describes the specified attribute of the specified instance. You can specify only one attribute at a time.

+ *

Describes the specified attribute of the specified instance. You can specify only one attribute at a time.

* * @param request A container for the necessary parameters to execute the DescribeInstanceAttribute service method. * @@ -911,7 +910,7 @@ - (BFTask *)describeInstanceAttribute:(AWSEC2DescribeInstanceAttributeRequest *)request; /** - *

Describes the status of one or more instances, including any scheduled events.

Instance status has two main components:

  • System Status reports impaired functionality that stems from issues related to the systems that support an instance, such as such as hardware failures and network connectivity problems. This call reports such problems as impaired reachability.

  • Instance Status reports impaired functionality that arises from problems internal to the instance. This call reports such problems as impaired reachability.

Instance status provides information about four types of scheduled events for an instance that may require your attention:

  • Scheduled Reboot: When Amazon EC2 determines that an instance must be rebooted, the instances status returns one of two event codes: system-reboot or instance-reboot. System reboot commonly occurs if certain maintenance or upgrade operations require a reboot of the underlying host that supports an instance. Instance reboot commonly occurs if the instance must be rebooted, rather than the underlying host. Rebooting events include a scheduled start and end time.

  • System Maintenance: When Amazon EC2 determines that an instance requires maintenance that requires power or network impact, the instance status is the event code system-maintenance. System maintenance is either power maintenance or network maintenance. For power maintenance, your instance will be unavailable for a brief period of time and then rebooted. For network maintenance, your instance will experience a brief loss of network connectivity. System maintenance events include a scheduled start and end time. You will also be notified by email if one of your instances is set for system maintenance. The email message indicates when your instance is scheduled for maintenance.

  • Scheduled Retirement: When Amazon EC2 determines that an instance must be shut down, the instance status is the event code instance-retirement. Retirement commonly occurs when the underlying host is degraded and must be replaced. Retirement events include a scheduled start and end time. You will also be notified by email if one of your instances is set to retiring. The email message indicates when your instance will be permanently retired.

  • Scheduled Stop: When Amazon EC2 determines that an instance must be shut down, the instances status returns an event code called instance-stop. Stop events include a scheduled start and end time. You will also be notified by email if one of your instances is set to stop. The email message indicates when your instance will be stopped.

When your instance is retired, it will either be terminated (if its root device type is the instance-store) or stopped (if its root device type is an EBS volume). Instances stopped due to retirement will not be restarted, but you can do so manually. You can also avoid retirement of EBS-backed instances by manually restarting your instance when its event code is instance-retirement. This ensures that your instance is started on a different underlying host.

For more information about failed status checks, see Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. For more information about working with scheduled events, see Working with an Instance That Has a Scheduled Event in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes the status of one or more instances, including any scheduled events.

Instance status has two main components:

  • System Status reports impaired functionality that stems from issues related to the systems that support an instance, such as such as hardware failures and network connectivity problems. This call reports such problems as impaired reachability.

  • Instance Status reports impaired functionality that arises from problems internal to the instance. This call reports such problems as impaired reachability.

Instance status provides information about four types of scheduled events for an instance that may require your attention:

  • Scheduled Reboot: When Amazon EC2 determines that an instance must be rebooted, the instances status returns one of two event codes: system-reboot or instance-reboot. System reboot commonly occurs if certain maintenance or upgrade operations require a reboot of the underlying host that supports an instance. Instance reboot commonly occurs if the instance must be rebooted, rather than the underlying host. Rebooting events include a scheduled start and end time.

  • System Maintenance: When Amazon EC2 determines that an instance requires maintenance that requires power or network impact, the instance status is the event code system-maintenance. System maintenance is either power maintenance or network maintenance. For power maintenance, your instance will be unavailable for a brief period of time and then rebooted. For network maintenance, your instance will experience a brief loss of network connectivity. System maintenance events include a scheduled start and end time. You will also be notified by email if one of your instances is set for system maintenance. The email message indicates when your instance is scheduled for maintenance.

  • Scheduled Retirement: When Amazon EC2 determines that an instance must be shut down, the instance status is the event code instance-retirement. Retirement commonly occurs when the underlying host is degraded and must be replaced. Retirement events include a scheduled start and end time. You will also be notified by email if one of your instances is set to retiring. The email message indicates when your instance will be permanently retired.

  • Scheduled Stop: When Amazon EC2 determines that an instance must be shut down, the instances status returns an event code called instance-stop. Stop events include a scheduled start and end time. You will also be notified by email if one of your instances is set to stop. The email message indicates when your instance will be stopped.

When your instance is retired, it will either be terminated (if its root device type is the instance-store) or stopped (if its root device type is an EBS volume). Instances stopped due to retirement will not be restarted, but you can do so manually. You can also avoid retirement of EBS-backed instances by manually restarting your instance when its event code is instance-retirement. This ensures that your instance is started on a different underlying host.

For more information about failed status checks, see Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. For more information about working with scheduled events, see Working with an Instance That Has a Scheduled Event in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeInstanceStatus service method. * @@ -923,7 +922,7 @@ - (BFTask *)describeInstanceStatus:(AWSEC2DescribeInstanceStatusRequest *)request; /** - *

Describes one or more of your instances.

If you specify one or more instance IDs, Amazon EC2 returns information for thoseinstances. If you do not specify instance IDs, Amazon EC2 returns information forall relevant instances. If you specify an instance ID that is not valid, an error is returned.If you specify an instance that you do not own, it is not included in the returnedresults.

Recently terminated instances might appear in the returned results. This intervalis usually less than one hour.

+ *

Describes one or more of your instances.

If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results.

Recently terminated instances might appear in the returned results. This interval is usually less than one hour.

* * @param request A container for the necessary parameters to execute the DescribeInstances service method. * @@ -947,7 +946,7 @@ - (BFTask *)describeInternetGateways:(AWSEC2DescribeInternetGatewaysRequest *)request; /** - *

Describes one or more of your key pairs.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of your key pairs.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeKeyPairs service method. * @@ -959,7 +958,7 @@ - (BFTask *)describeKeyPairs:(AWSEC2DescribeKeyPairsRequest *)request; /** - *

Describes one or more of your network ACLs.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your network ACLs.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeNetworkAcls service method. * @@ -971,7 +970,7 @@ - (BFTask *)describeNetworkAcls:(AWSEC2DescribeNetworkAclsRequest *)request; /** - *

Describes a network interface attribute. You can specify only one attribute at a time.

+ *

Describes a network interface attribute. You can specify only one attribute at a time.

* * @param request A container for the necessary parameters to execute the DescribeNetworkInterfaceAttribute service method. * @@ -995,7 +994,7 @@ - (BFTask *)describeNetworkInterfaces:(AWSEC2DescribeNetworkInterfacesRequest *)request; /** - *

Describes one or more of your placement groups. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of your placement groups. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribePlacementGroups service method. * @@ -1019,7 +1018,7 @@ - (BFTask *)describeRegions:(AWSEC2DescribeRegionsRequest *)request; /** - *

Describes one or more of the Reserved Instances that you purchased.

For more information about Reserved Instances, see Reserved Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of the Reserved Instances that you purchased.

For more information about Reserved Instances, see Reserved Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeReservedInstances service method. * @@ -1031,7 +1030,7 @@ - (BFTask *)describeReservedInstances:(AWSEC2DescribeReservedInstancesRequest *)request; /** - *

Describes your account's Reserved Instance listings in the Reserved Instance Marketplace.

For more information, see Reserved Instance Marketplacein the Amazon Elastic Compute Cloud User Guide.

+ *

Describes your account's Reserved Instance listings in the Reserved Instance Marketplace.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeReservedInstancesListings service method. * @@ -1055,7 +1054,7 @@ - (BFTask *)describeReservedInstancesModifications:(AWSEC2DescribeReservedInstancesModificationsRequest *)request; /** - *

Describes Reserved Instance offerings that are available for purchase. With Reserved Instances, you purchase the right to launch instances for a period of time. During that time period, you do not receive insufficient capacity errors, and you pay a lower usage rate than the rate charged for On-Demand instances for the actual time used.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes Reserved Instance offerings that are available for purchase. With Reserved Instances, you purchase the right to launch instances for a period of time. During that time period, you do not receive insufficient capacity errors, and you pay a lower usage rate than the rate charged for On-Demand instances for the actual time used.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeReservedInstancesOfferings service method. * @@ -1067,7 +1066,7 @@ - (BFTask *)describeReservedInstancesOfferings:(AWSEC2DescribeReservedInstancesOfferingsRequest *)request; /** - *

Describes one or more of your route tables.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your route tables.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeRouteTables service method. * @@ -1079,7 +1078,7 @@ - (BFTask *)describeRouteTables:(AWSEC2DescribeRouteTablesRequest *)request; /** - *

Describes one or more of your security groups.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your security groups.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeSecurityGroups service method. * @@ -1091,7 +1090,7 @@ - (BFTask *)describeSecurityGroups:(AWSEC2DescribeSecurityGroupsRequest *)request; /** - *

Describes the specified attribute of the specified snapshot. You can specify only one attribute at atime.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes the specified attribute of the specified snapshot. You can specify only one attribute at a time.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeSnapshotAttribute service method. * @@ -1103,7 +1102,7 @@ - (BFTask *)describeSnapshotAttribute:(AWSEC2DescribeSnapshotAttributeRequest *)request; /** - *

Describes one or more of the Amazon EBS snapshots available to you. Available snapshots includepublic snapshots available for any AWS account to launch, private snapshots that you own, and private snapshots owned by another AWS account but for which you've been given explicit create volume permissions.

The create volume permissions fall into the following categories:

  • public: The owner of the snapshot granted create volume permissions for the snapshot to the all group. All AWS accounts have create volume permissions for these snapshots.
  • explicit: The owner of the snapshot granted create volume permissions to a specific AWS account.
  • implicit: An AWS account has implicit create volume permissions for all snapshots it owns.

The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, orAWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns allsnapshots for which you have create volume permissions.

If you specify one or more snapshot IDs, only snapshots that have the specified IDs arereturned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshotID for which you do not have access, it is not included in the returned results.

If you specify one or more snapshot owners, only snapshots from the specified owners and forwhich you have access are returned. The results can include the AWS account IDs of the specifiedowners, amazon for snapshots owned by Amazon, or self for snapshotsthat you own.

If you specify a list of restorable users, only snapshots with create snapshot permissions forthose users are returned. You can specify AWS account IDs (if you own the snapshots), self for snapshots for which you own or have explicit permissions, or all for public snapshots.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of the Amazon EBS snapshots available to you. Available snapshots include public snapshots available for any AWS account to launch, private snapshots that you own, and private snapshots owned by another AWS account but for which you've been given explicit create volume permissions.

The create volume permissions fall into the following categories:

  • public: The owner of the snapshot granted create volume permissions for the snapshot to the all group. All AWS accounts have create volume permissions for these snapshots.
  • explicit: The owner of the snapshot granted create volume permissions to a specific AWS account.
  • implicit: An AWS account has implicit create volume permissions for all snapshots it owns.

The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions.

If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results.

If you specify one or more snapshot owners, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, amazon for snapshots owned by Amazon, or self for snapshots that you own.

If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), self for snapshots for which you own or have explicit permissions, or all for public snapshots.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeSnapshots service method. * @@ -1115,7 +1114,7 @@ - (BFTask *)describeSnapshots:(AWSEC2DescribeSnapshotsRequest *)request; /** - *

Describes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeSpotDatafeedSubscription service method. * @@ -1127,7 +1126,7 @@ - (BFTask *)describeSpotDatafeedSubscription:(AWSEC2DescribeSpotDatafeedSubscriptionRequest *)request; /** - *

Describes the Spot Instance requests that belong to your account. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

You can use DescribeSpotInstanceRequests to find a running Spot Instance by examining the response. If the status of the Spot Instance is fulfilled, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use DescribeInstances with a filter to look for instances where the instance lifecycle is spot.

+ *

Describes the Spot Instance requests that belong to your account. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

You can use DescribeSpotInstanceRequests to find a running Spot Instance by examining the response. If the status of the Spot Instance is fulfilled, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use DescribeInstances with a filter to look for instances where the instance lifecycle is spot.

* * @param request A container for the necessary parameters to execute the DescribeSpotInstanceRequests service method. * @@ -1139,7 +1138,7 @@ - (BFTask *)describeSpotInstanceRequests:(AWSEC2DescribeSpotInstanceRequestsRequest *)request; /** - *

Describes the Spot Price history. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

When you specify an Availability Zone, this operation describes the price historyfor the specified Availability Zone with the most recent set of prices listed first.If you don't specify an Availability Zone, you get the prices across all Availability Zones,starting with the most recent set. However, if you're using an API version earlier than 2011-05-15, you get the lowest price across the region for the specified time period. The pricesreturned are listed in chronological order, from the oldest to the most recent.

+ *

Describes the Spot Price history. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

When you specify an Availability Zone, this operation describes the price history for the specified Availability Zone with the most recent set of prices listed first. If you don't specify an Availability Zone, you get the prices across all Availability Zones, starting with the most recent set. However, if you're using an API version earlier than 2011-05-15, you get the lowest price across the region for the specified time period. The prices returned are listed in chronological order, from the oldest to the most recent.

* * @param request A container for the necessary parameters to execute the DescribeSpotPriceHistory service method. * @@ -1151,7 +1150,7 @@ - (BFTask *)describeSpotPriceHistory:(AWSEC2DescribeSpotPriceHistoryRequest *)request; /** - *

Describes one or more of your subnets.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your subnets.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeSubnets service method. * @@ -1163,7 +1162,7 @@ - (BFTask *)describeSubnets:(AWSEC2DescribeSubnetsRequest *)request; /** - *

Describes one or more of the tags for your EC2 resources.

For more information about tags, see Tagging Your Resources in theAmazon Elastic Compute Cloud User Guide.

+ *

Describes one or more of the tags for your EC2 resources.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeTags service method. * @@ -1175,7 +1174,7 @@ - (BFTask *)describeTags:(AWSEC2DescribeTagsRequest *)request; /** - *

Describes the specified attribute of the specified volume. You can specify only one attribute at a time.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes the specified attribute of the specified volume. You can specify only one attribute at a time.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeVolumeAttribute service method. * @@ -1187,7 +1186,7 @@ - (BFTask *)describeVolumeAttribute:(AWSEC2DescribeVolumeAttributeRequest *)request; /** - *

Describes the status of the specified volumes. Volume status provides the result of the checks performed on your volumes to determine events that can impair the performance of your volumes. The performance of a volume can be affected if an issue occurs on the volume's underlying host. If the volume's underlying host experiences a power outage or system issue, after the system is restored, there could be data inconsistencies on the volume. Volume events notify you if this occurs. Volume actions notify you if any action needs to be taken in response to the event.

The DescribeVolumeStatus operation provides the following information about the specified volumes:

Status: Reflects the current status of the volume. The possible values are ok, impaired , warning, or insufficient-data. If all checks pass, the overall status of the volume is ok. If the check fails, the overall status is impaired. If the status is insufficient-data, then the checks may still be taking place on your volume at the time. We recommend that you retry the request. For more information on volume status, see Monitoring the Status of Your Volumes.

Events: Reflect the cause of a volume status and may require you to take action. For example, if your volume returns an impaired status, then the volume event might be potential-data-inconsistency. This means that your volume has been affected by an issue with the underlying host, has all I/O operations disabled, and may have inconsistent data.

Actions: Reflect the actions you may have to take in response to an event. For example, if the status of the volume is impaired and the volume event shows potential-data-inconsistency, then the action shows enable-volume-io. This means that you may want to enable the I/O operations for the volume by calling the EnableVolumeIO action and then check the volume for data consistency.

Volume status is based on the volume status checks, and does not reflect the volume state. Therefore, volume status does not indicate volumes in the error state (for example, when a volume is incapable of accepting I/O.)

+ *

Describes the status of the specified volumes. Volume status provides the result of the checks performed on your volumes to determine events that can impair the performance of your volumes. The performance of a volume can be affected if an issue occurs on the volume's underlying host. If the volume's underlying host experiences a power outage or system issue, after the system is restored, there could be data inconsistencies on the volume. Volume events notify you if this occurs. Volume actions notify you if any action needs to be taken in response to the event.

The DescribeVolumeStatus operation provides the following information about the specified volumes:

Status: Reflects the current status of the volume. The possible values are ok, impaired , warning, or insufficient-data. If all checks pass, the overall status of the volume is ok. If the check fails, the overall status is impaired. If the status is insufficient-data, then the checks may still be taking place on your volume at the time. We recommend that you retry the request. For more information on volume status, see Monitoring the Status of Your Volumes.

Events: Reflect the cause of a volume status and may require you to take action. For example, if your volume returns an impaired status, then the volume event might be potential-data-inconsistency. This means that your volume has been affected by an issue with the underlying host, has all I/O operations disabled, and may have inconsistent data.

Actions: Reflect the actions you may have to take in response to an event. For example, if the status of the volume is impaired and the volume event shows potential-data-inconsistency, then the action shows enable-volume-io. This means that you may want to enable the I/O operations for the volume by calling the EnableVolumeIO action and then check the volume for data consistency.

* * @param request A container for the necessary parameters to execute the DescribeVolumeStatus service method. * @@ -1199,7 +1198,7 @@ - (BFTask *)describeVolumeStatus:(AWSEC2DescribeVolumeStatusRequest *)request; /** - *

Describes the specified Amazon EBS volumes.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

+ *

Describes the specified Amazon EBS volumes.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeVolumes service method. * @@ -1223,7 +1222,7 @@ - (BFTask *)describeVpcAttribute:(AWSEC2DescribeVpcAttributeRequest *)request; /** - *

Describes one or more of your VPC peering connections.

+ *

Describes one or more of your VPC peering connections.

* * @param request A container for the necessary parameters to execute the DescribeVpcPeeringConnections service method. * @@ -1247,7 +1246,7 @@ - (BFTask *)describeVpcs:(AWSEC2DescribeVpcsRequest *)request; /** - *

Describes one or more of your VPN connections.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your VPN connections.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeVpnConnections service method. * @@ -1259,7 +1258,7 @@ - (BFTask *)describeVpnConnections:(AWSEC2DescribeVpnConnectionsRequest *)request; /** - *

Describes one or more of your virtual private gateways.

For more information about virtual private gateways, see Adding an IPsec Hardware VPN to Your VPC in the Amazon Virtual Private Cloud User Guide.

+ *

Describes one or more of your virtual private gateways.

For more information about virtual private gateways, see Adding an IPsec Hardware VPN to Your VPC in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DescribeVpnGateways service method. * @@ -1271,7 +1270,7 @@ - (BFTask *)describeVpnGateways:(AWSEC2DescribeVpnGatewaysRequest *)request; /** - *

Detaches an Internet gateway from a VPC, disabling connectivity between the Internet and the VPC. The VPC must not contain any running instances with Elastic IP addresses.

+ *

Detaches an Internet gateway from a VPC, disabling connectivity between the Internet and the VPC. The VPC must not contain any running instances with Elastic IP addresses.

* * @param request A container for the necessary parameters to execute the DetachInternetGateway service method. * @@ -1293,7 +1292,7 @@ - (BFTask *)detachNetworkInterface:(AWSEC2DetachNetworkInterfaceRequest *)request; /** - *

Detaches an Amazon EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so results in the volume being stuck in a busy state while detaching.

If an Amazon EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

If the root volume is detached from an instance with an AWS Marketplace product code, then the AWS Marketplace product codes from that volume are no longer associated with the instance.

For more information, see Detaching an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

+ *

Detaches an Amazon EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so results in the volume being stuck in a busy state while detaching.

If an Amazon EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

If the root volume is detached from an instance with an AWS Marketplace product code, then the AWS Marketplace product codes from that volume are no longer associated with the instance.

For more information, see Detaching an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DetachVolume service method. * @@ -1305,7 +1304,7 @@ - (BFTask *)detachVolume:(AWSEC2DetachVolumeRequest *)request; /** - *

Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the VPC and not use it anymore. You can confirm a virtual private gateway has been completely detached from a VPC by describing the virtual private gateway (any attachments to the virtual private gateway are also described).

You must wait for the attachment's state to switch to detached before you can delete the VPC or attach a different VPC to the virtual private gateway.

+ *

Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the VPC and not use it anymore. You can confirm a virtual private gateway has been completely detached from a VPC by describing the virtual private gateway (any attachments to the virtual private gateway are also described).

You must wait for the attachment's state to switch to detached before you can delete the VPC or attach a different VPC to the virtual private gateway.

* * @param request A container for the necessary parameters to execute the DetachVpnGateway service method. * @@ -1316,7 +1315,7 @@ - (BFTask *)detachVpnGateway:(AWSEC2DetachVpnGatewayRequest *)request; /** - *

Disables a virtual private gateway (VGW) from propagating routes to the routing tables of a VPC.

+ *

Disables a virtual private gateway (VGW) from propagating routes to the routing tables of a VPC.

* * @param request A container for the necessary parameters to execute the DisableVgwRoutePropagation service method. * @@ -1327,7 +1326,7 @@ - (BFTask *)disableVgwRoutePropagation:(AWSEC2DisableVgwRoutePropagationRequest *)request; /** - *

Disassociates an Elastic IP address from the instance or network interface it's associated with.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

+ *

Disassociates an Elastic IP address from the instance or network interface it's associated with.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

* * @param request A container for the necessary parameters to execute the DisassociateAddress service method. * @@ -1338,7 +1337,7 @@ - (BFTask *)disassociateAddress:(AWSEC2DisassociateAddressRequest *)request; /** - *

Disassociates a subnet from a route table.

After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

+ *

Disassociates a subnet from a route table.

After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the DisassociateRouteTable service method. * @@ -1349,7 +1348,7 @@ - (BFTask *)disassociateRouteTable:(AWSEC2DisassociateRouteTableRequest *)request; /** - *

Enables a virtual private gateway (VGW) to propagate routes to the routing tables of a VPC.

+ *

Enables a virtual private gateway (VGW) to propagate routes to the routing tables of a VPC.

* * @param request A container for the necessary parameters to execute the EnableVgwRoutePropagation service method. * @@ -1360,7 +1359,7 @@ - (BFTask *)enableVgwRoutePropagation:(AWSEC2EnableVgwRoutePropagationRequest *)request; /** - *

Enables I/O operations for a volume that had I/O operations disabled because the data on the volume was potentially inconsistent.

+ *

Enables I/O operations for a volume that had I/O operations disabled because the data on the volume was potentially inconsistent.

* * @param request A container for the necessary parameters to execute the EnableVolumeIO service method. * @@ -1371,7 +1370,7 @@ - (BFTask *)enableVolumeIO:(AWSEC2EnableVolumeIORequest *)request; /** - *

Gets the console output for the specified instance.

Instances do not have a physical monitor through which you can view theirconsole output. They also lack physical controls that allow you to power up, reboot,or shut them down. To allow these actions, we provide them through the Amazon EC2API and command line interface.

Instance console output is buffered and posted shortly after instance boot, reboot, and termination. Amazon EC2 preserves the most recent 64 KB output which is available for at least one hour after the most recent post.

For Linux/Unix instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a machine. This output is buffered because the instance produces it and then posts it to a store where the instance's owner can retrieve it.

For Windows instances, the instance console output displays the last three system event log errors.

+ *

Gets the console output for the specified instance.

Instances do not have a physical monitor through which you can view their console output. They also lack physical controls that allow you to power up, reboot, or shut them down. To allow these actions, we provide them through the Amazon EC2 API and command line interface.

Instance console output is buffered and posted shortly after instance boot, reboot, and termination. Amazon EC2 preserves the most recent 64 KB output which is available for at least one hour after the most recent post.

For Linux/Unix instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a machine. This output is buffered because the instance produces it and then posts it to a store where the instance's owner can retrieve it.

For Windows instances, the instance console output displays the last three system event log errors.

* * @param request A container for the necessary parameters to execute the GetConsoleOutput service method. * @@ -1383,7 +1382,7 @@ - (BFTask *)getConsoleOutput:(AWSEC2GetConsoleOutputRequest *)request; /** - *

Retrieves the encrypted administrator password for an instance running Windows.

The Windows password is only generated the first time an AMI is launched. It is not generated for rebundled AMIs or after the password is changed on an instance.

The password is encrypted using the key pair that you specified when you launched the instance. You must provide the corresponding key pair file.

Password generation and encryption takes a few moments. We recommend that you wait up to 15 minutes after launching an instance before trying to retrieve the generated password.

+ *

Retrieves the encrypted administrator password for an instance running Windows.

The Windows password is only generated the first time an AMI is launched. It is not generated for rebundled AMIs or after the password is changed on an instance.

The password is encrypted using the key pair that you specified when you launched the instance. You must provide the corresponding key pair file.

Password generation and encryption takes a few moments. We recommend that you wait up to 15 minutes after launching an instance before trying to retrieve the generated password.

* * @param request A container for the necessary parameters to execute the GetPasswordData service method. * @@ -1395,7 +1394,7 @@ - (BFTask *)getPasswordData:(AWSEC2GetPasswordDataRequest *)request; /** - *

Creates an import instance task using metadata from the specified disk image. Afterimporting the image, you then upload it using the ec2-import-volume command in the EC2 command linetools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in theAmazon Elastic Compute Cloud User Guide.

+ *

Creates an import instance task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the EC2 command line tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ImportInstance service method. * @@ -1407,7 +1406,7 @@ - (BFTask *)importInstance:(AWSEC2ImportInstanceRequest *)request; /** - *

Imports the public key from an RSA key pair that you created with a third-party tool.Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you(AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key.The private key is never transferred between you and AWS.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

+ *

Imports the public key from an RSA key pair that you created with a third-party tool. Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key. The private key is never transferred between you and AWS.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ImportKeyPair service method. * @@ -1419,7 +1418,7 @@ - (BFTask *)importKeyPair:(AWSEC2ImportKeyPairRequest *)request; /** - *

Creates an import volume task using metadata from the specified disk image.After importing the image, you then upload it using theec2-import-volume command in the Amazon EC2 command-line interface (CLI) tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in theAmazon Elastic Compute Cloud User Guide.

+ *

Creates an import volume task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the Amazon EC2 command-line interface (CLI) tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ImportVolume service method. * @@ -1431,7 +1430,7 @@ - (BFTask *)importVolume:(AWSEC2ImportVolumeRequest *)request; /** - *

Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time.

AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace product code cannot be made public.

+ *

Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time.

* * @param request A container for the necessary parameters to execute the ModifyImageAttribute service method. * @@ -1442,7 +1441,7 @@ - (BFTask *)modifyImageAttribute:(AWSEC2ModifyImageAttributeRequest *)request; /** - *

Modifies the specified attribute of the specified instance. You can specify only one attribute at a time.

To modify some attributes, the instance must be stopped. For more information, see Modifying Attributes of a Stopped Instance in the Amazon Elastic Compute Cloud User Guide.

+ *

Modifies the specified attribute of the specified instance. You can specify only one attribute at a time.

To modify some attributes, the instance must be stopped. For more information, see Modifying Attributes of a Stopped Instance in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ModifyInstanceAttribute service method. * @@ -1476,7 +1475,7 @@ - (BFTask *)modifyReservedInstances:(AWSEC2ModifyReservedInstancesRequest *)request; /** - *

Adds or removes permission settings for the specified snapshot.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

Snapshots with AWS Marketplace product codes cannot be made public.

+ *

Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single API call. If you need to both add and remove account IDs for a snapshot, you must use multiple API calls.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ModifySnapshotAttribute service method. * @@ -1487,7 +1486,18 @@ - (BFTask *)modifySnapshotAttribute:(AWSEC2ModifySnapshotAttributeRequest *)request; /** - *

Modifies a volume attribute.

By default, all I/O operations for the volume are suspended when the data on the volume is determined to be potentially inconsistent, to prevent undetectable, latent data corruption. The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume.

You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes or for volumes that are stateless or disposable.

+ *

Modifies a subnet attribute.

+ * + * @param request A container for the necessary parameters to execute the ModifySubnetAttribute service method. + * + * @return An instance of BFTask. On successful execution, task.result will be nil. + * + * @see AWSEC2ModifySubnetAttributeRequest + */ +- (BFTask *)modifySubnetAttribute:(AWSEC2ModifySubnetAttributeRequest *)request; + +/** + *

Modifies a volume attribute.

By default, all I/O operations for the volume are suspended when the data on the volume is determined to be potentially inconsistent, to prevent undetectable, latent data corruption. The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume.

You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes or for volumes that are stateless or disposable.

* * @param request A container for the necessary parameters to execute the ModifyVolumeAttribute service method. * @@ -1509,7 +1519,7 @@ - (BFTask *)modifyVpcAttribute:(AWSEC2ModifyVpcAttributeRequest *)request; /** - *

Enables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

+ *

Enables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the MonitorInstances service method. * @@ -1521,7 +1531,7 @@ - (BFTask *)monitorInstances:(AWSEC2MonitorInstancesRequest *)request; /** - *

Purchases a Reserved Instance for use with your account. With Amazon EC2 Reserved Instances, you obtain a capacity reservation for a certain instance configuration over a specified period of time. You pay a lower usage rate than with On-Demand instances for the time that you actually use the capacity reservation.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

+ *

Purchases a Reserved Instance for use with your account. With Amazon EC2 Reserved Instances, you obtain a capacity reservation for a certain instance configuration over a specified period of time. You pay a lower usage rate than with On-Demand instances for the time that you actually use the capacity reservation.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the PurchaseReservedInstancesOffering service method. * @@ -1533,7 +1543,7 @@ - (BFTask *)purchaseReservedInstancesOffering:(AWSEC2PurchaseReservedInstancesOfferingRequest *)request; /** - *

Requests a reboot of one or more instances. This operation is asynchronous; it only queues a request to reboot the specified instances. The operation succeeds if the instances are valid and belong to you. Requests to reboot terminated instances are ignored.

If a Linux/Unix instance does not cleanly shut down within four minutes, Amazon EC2 performs a hard reboot.

For more information about troubleshooting, see Getting Console Output and Rebooting Instances in theAmazon Elastic Compute Cloud User Guide.

+ *

Requests a reboot of one or more instances. This operation is asynchronous; it only queues a request to reboot the specified instances. The operation succeeds if the instances are valid and belong to you. Requests to reboot terminated instances are ignored.

If a Linux/Unix instance does not cleanly shut down within four minutes, Amazon EC2 performs a hard reboot.

For more information about troubleshooting, see Getting Console Output and Rebooting Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the RebootInstances service method. * @@ -1544,7 +1554,7 @@ - (BFTask *)rebootInstances:(AWSEC2RebootInstancesRequest *)request; /** - *

Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide.

For Amazon EBS-backed instances, CreateImage creates and registers the AMI in a single request, so you don't have to register the AMI yourself.

You can also use RegisterImage to create an Amazon EBS-backed AMI from a snapshot of a root device volume. For more information, see Launching an Instance from a Snapshot in the Amazon Elastic Compute Cloud User Guide.

If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image.

You can't register an image where a secondary (non-root) snapshot has AWS Marketplace product codes.

+ *

Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide.

You can also use RegisterImage to create an Amazon EBS-backed AMI from a snapshot of a root device volume. For more information, see Launching an Instance from a Snapshot in the Amazon Elastic Compute Cloud User Guide.

If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image.

* * @param request A container for the necessary parameters to execute the RegisterImage service method. * @@ -1556,7 +1566,7 @@ - (BFTask *)registerImage:(AWSEC2RegisterImageRequest *)request; /** - *

Rejects a VPC peering connection request. The VPC peering connection must be in the pending-acceptance state. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

+ *

Rejects a VPC peering connection request. The VPC peering connection must be in the pending-acceptance state. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

* * @param request A container for the necessary parameters to execute the RejectVpcPeeringConnection service method. * @@ -1568,7 +1578,7 @@ - (BFTask *)rejectVpcPeeringConnection:(AWSEC2RejectVpcPeeringConnectionRequest *)request; /** - *

Releases the specified Elastic IP address.

After releasing an Elastic IP address, it is released to the IP address pool and might be unavailable to you. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an AuthFailure error if the address is already allocated to another AWS account.

[EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress.

[Nondefault VPC] You must use the DisassociateAddress to disassociate the Elastic IP address before you try to release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse).

+ *

Releases the specified Elastic IP address.

After releasing an Elastic IP address, it is released to the IP address pool and might be unavailable to you. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an AuthFailure error if the address is already allocated to another AWS account.

[EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress.

[Nondefault VPC] You must use the DisassociateAddress to disassociate the Elastic IP address before you try to release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse).

* * @param request A container for the necessary parameters to execute the ReleaseAddress service method. * @@ -1579,7 +1589,7 @@ - (BFTask *)releaseAddress:(AWSEC2ReleaseAddressRequest *)request; /** - *

Changes which network ACL a subnet is associated with. By default when you create a subnet, it's automatically associated with the default network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

+ *

Changes which network ACL a subnet is associated with. By default when you create a subnet, it's automatically associated with the default network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ReplaceNetworkAclAssociation service method. * @@ -1591,7 +1601,7 @@ - (BFTask *)replaceNetworkAclAssociation:(AWSEC2ReplaceNetworkAclAssociationRequest *)request; /** - *

Replaces an entry (rule) in a network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

+ *

Replaces an entry (rule) in a network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ReplaceNetworkAclEntry service method. * @@ -1602,7 +1612,7 @@ - (BFTask *)replaceNetworkAclEntry:(AWSEC2ReplaceNetworkAclEntryRequest *)request; /** - *

Replaces an existing route within a route table in a VPC. You must provide only one of the following: Internet gateway, NAT instance, VPC peering connection, or network interface.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

+ *

Replaces an existing route within a route table in a VPC. You must provide only one of the following: Internet gateway, NAT instance, VPC peering connection, or network interface.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ReplaceRoute service method. * @@ -1613,7 +1623,7 @@ - (BFTask *)replaceRoute:(AWSEC2ReplaceRouteRequest *)request; /** - *

Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table.

+ *

Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table.

* * @param request A container for the necessary parameters to execute the ReplaceRouteTableAssociation service method. * @@ -1637,7 +1647,7 @@ - (BFTask *)replicateImage:(AWSEC2ReplicateImageRequest *)request; /** - *

Copies a point-in-time snapshot of an Amazon EBS volume and stores it in Amazon S3. You can copy the snapshot within the same region or from one region to another. You can use the snapshot to create Amazon EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint that you send the HTTP request to.

Copies of encrypted Amazon EBS snapshots remain encrypted. Copies of unencrypted snapshots remain unencrypted.

For more information, see Copying an Amazon EBS Snapshot in theAmazon Elastic Compute Cloud User Guide.

+ *

Copies a point-in-time snapshot of an Amazon EBS volume and stores it in Amazon S3. You can copy the snapshot within the same region or from one region to another. You can use the snapshot to create Amazon EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint that you send the HTTP request to.

Copies of encrypted Amazon EBS snapshots remain encrypted. Copies of unencrypted snapshots remain unencrypted.

For more information, see Copying an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ReplicateSnapshot service method. * @@ -1649,7 +1659,7 @@ - (BFTask *)replicateSnapshot:(AWSEC2ReplicateSnapshotRequest *)request; /** - *

Submits feedback about the status of an instance. The instance must be in the running state. If your experience with the instance differs from the instance status returned by DescribeInstanceStatus, use ReportInstanceStatus to report your experience with the instance. Amazon EC2 collects this information to improve the accuracy of status checks.

+ *

Submits feedback about the status of an instance. The instance must be in the running state. If your experience with the instance differs from the instance status returned by DescribeInstanceStatus, use ReportInstanceStatus to report your experience with the instance. Amazon EC2 collects this information to improve the accuracy of status checks.

* * @param request A container for the necessary parameters to execute the ReportInstanceStatus service method. * @@ -1660,7 +1670,7 @@ - (BFTask *)reportInstanceStatus:(AWSEC2ReportInstanceStatusRequest *)request; /** - *

Creates a Spot Instance request. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Creates a Spot Instance request. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the RequestSpotInstances service method. * @@ -1683,7 +1693,7 @@ - (BFTask *)resetImageAttribute:(AWSEC2ResetImageAttributeRequest *)request; /** - *

Resets an attribute of an instance to its default value. To reset the kernel or RAM disk, the instance must be in a stopped state. To reset the SourceDestCheck, the instance can be either running or stopped.

The SourceDestCheck attribute controls whether source/destination checking is enabled. The default value is true, which means checking is enabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

+ *

Resets an attribute of an instance to its default value. To reset the kernel or RAM disk, the instance must be in a stopped state. To reset the SourceDestCheck, the instance can be either running or stopped.

The SourceDestCheck attribute controls whether source/destination checking is enabled. The default value is true, which means checking is enabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ResetInstanceAttribute service method. * @@ -1705,7 +1715,7 @@ - (BFTask *)resetNetworkInterfaceAttribute:(AWSEC2ResetNetworkInterfaceAttributeRequest *)request; /** - *

Resets permission settings for the specified snapshot.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

+ *

Resets permission settings for the specified snapshot.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the ResetSnapshotAttribute service method. * @@ -1716,7 +1726,7 @@ - (BFTask *)resetSnapshotAttribute:(AWSEC2ResetSnapshotAttributeRequest *)request; /** - *

Removes one or more egress rules from a security group for EC2-VPC. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be revoked.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

+ *

Removes one or more egress rules from a security group for EC2-VPC. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be revoked.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

* * @param request A container for the necessary parameters to execute the RevokeSecurityGroupEgress service method. * @@ -1727,7 +1737,7 @@ - (BFTask *)revokeSecurityGroupEgress:(AWSEC2RevokeSecurityGroupEgressRequest *)request; /** - *

Removes one or more ingress rules from a security group. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be removed.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

+ *

Removes one or more ingress rules from a security group. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be removed.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

* * @param request A container for the necessary parameters to execute the RevokeSecurityGroupIngress service method. * @@ -1738,7 +1748,7 @@ - (BFTask *)revokeSecurityGroupIngress:(AWSEC2RevokeSecurityGroupIngressRequest *)request; /** - *

Launches the specified number of instances using an AMI for which you have permissions.

When you launch an instance, it enters the pending state.After the instance is ready for you, it enters the running state.To check the state of your instance, call DescribeInstances.

If you don't specify a security group when launching an instance, Amazon EC2 usesthe default security group. For more information, see Security Groupsin the Amazon Elastic Compute Cloud User Guide.

Linux instances have access to the public key of the key pair at boot.You can use this key to provide secure access to the instance.Amazon EC2 public images use this feature to provide secure access without passwords.For more information, see Key Pairsin the Amazon Elastic Compute Cloud User Guide.

You can provide optional user data when launching an instance. For moreinformation, see InstanceMetadata in the Amazon Elastic Compute Cloud User Guide.

If any of the AMIs have a product code attached for which the user has not subscribed, RunInstances fails.

For more information about troubleshooting, see What To Do If AnInstance Immediately Terminates, and Troubleshooting Connecting to Your Instance in theAmazon Elastic Compute Cloud User Guide.

+ *

Launches the specified number of instances using an AMI for which you have permissions.

When you launch an instance, it enters the pending state. After the instance is ready for you, it enters the running state. To check the state of your instance, call DescribeInstances.

If you don't specify a security group when launching an instance, Amazon EC2 uses the default security group. For more information, see Security Groups in the Amazon Elastic Compute Cloud User Guide.

Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

You can provide optional user data when launching an instance. For more information, see Instance Metadata in the Amazon Elastic Compute Cloud User Guide.

If any of the AMIs have a product code attached for which the user has not subscribed, RunInstances fails.

T2 instance types can only be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID in the request, RunInstances fails.

For more information about troubleshooting, see What To Do If An Instance Immediately Terminates, and Troubleshooting Connecting to Your Instance in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the RunInstances service method. * @@ -1750,7 +1760,7 @@ - (BFTask *)runInstances:(AWSEC2RunInstancesRequest *)request; /** - *

Starts an Amazon EBS-backed AMI that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

For more information, see Stopping Instances in the Amazon Elastic Compute Cloud User Guide.

+ *

Starts an Amazon EBS-backed AMI that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

For more information, see Stopping Instances in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the StartInstances service method. * @@ -1762,7 +1772,7 @@ - (BFTask *)startInstances:(AWSEC2StartInstancesRequest *)request; /** - *

Stops an Amazon EBS-backed instance. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

You can't start or stop Spot Instances.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see TroubleshootingStopping Your Instance in theAmazon Elastic Compute Cloud User Guide.

+ *

Stops an Amazon EBS-backed instance. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

You can't start or stop Spot Instances.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see Troubleshooting Stopping Your Instance in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the StopInstances service method. * @@ -1774,7 +1784,7 @@ - (BFTask *)stopInstances:(AWSEC2StopInstancesRequest *)request; /** - *

Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds.

Terminated instances remain visible after termination (for approximately one hour).

By default, Amazon EC2 deletes all Amazon EBS volumes that were attached when the instance launched. Volumes attached after instance launch continue running.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide.

+ *

Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds.

Terminated instances remain visible after termination (for approximately one hour).

By default, Amazon EC2 deletes all Amazon EBS volumes that were attached when the instance launched. Volumes attached after instance launch continue running.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the TerminateInstances service method. * @@ -1797,7 +1807,7 @@ - (BFTask *)unassignPrivateIpAddresses:(AWSEC2UnassignPrivateIpAddressesRequest *)request; /** - *

Disables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

+ *

Disables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

* * @param request A container for the necessary parameters to execute the UnmonitorInstances service method. * diff --git a/EC2/AWSEC2.m b/EC2/AWSEC2.m index cf9644b6027..755e07aa5d4 100644 --- a/EC2/AWSEC2.m +++ b/EC2/AWSEC2.m @@ -15,16 +15,16 @@ #import "AWSEC2.h" -#import "AZNetworking.h" +#import "AWSNetworking.h" #import "AWSSignature.h" #import "AWSService.h" -#import "AZCategory.h" +#import "AWSCategory.h" #import "AWSNetworking.h" #import "AWSURLRequestSerialization.h" #import "AWSURLResponseSerialization.h" #import "AWSURLRequestRetryHandler.h" -NSString *const AWSEC2DefinitionFileName = @"ec2-2014-05-01"; +NSString *const AWSEC2DefinitionFileName = @"ec2-2014-06-15"; @interface AWSEC2ResponseSerializer : AWSXMLResponseSerializer @@ -76,7 +76,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSEC2ErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -84,11 +84,10 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSEC2ErrorDomain code:AWSEC2ErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } - + } if (self.outputClass) { @@ -109,20 +108,20 @@ @interface AWSEC2RequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSEC2RequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSEC2ErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSEC2ErrorAuthFailure: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -137,15 +136,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSEC2() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -169,25 +167,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceEC2]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceEC2]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSEC2RequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -196,15 +194,15 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } networkingRequest.HTTPMethod = HTTPMethod; - AWSQueryStringRequestSerializer *requestSerializer = [AWSQueryStringRequestSerializer serializerWithResource:AWSEC2DefinitionFileName actionName:operationName]; + AWSQueryStringRequestSerializer *requestSerializer = [AWSEC2RequestSerializer serializerWithResource:AWSEC2DefinitionFileName actionName:operationName]; networkingRequest.requestSerializer = requestSerializer; networkingRequest.responseSerializer = [AWSEC2ResponseSerializer serializerWithOutputClass:outputClass @@ -218,7 +216,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)acceptVpcPeeringConnection:(AWSEC2AcceptVpcPeeringConnectionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AcceptVpcPeeringConnection" @@ -227,7 +225,7 @@ - (BFTask *)acceptVpcPeeringConnection:(AWSEC2AcceptVpcPeeringConnectionRequest - (BFTask *)allocateAddress:(AWSEC2AllocateAddressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AllocateAddress" @@ -236,7 +234,7 @@ - (BFTask *)allocateAddress:(AWSEC2AllocateAddressRequest *)request { - (BFTask *)assignPrivateIpAddresses:(AWSEC2AssignPrivateIpAddressesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AssignPrivateIpAddresses" @@ -245,7 +243,7 @@ - (BFTask *)assignPrivateIpAddresses:(AWSEC2AssignPrivateIpAddressesRequest *)re - (BFTask *)associateAddress:(AWSEC2AssociateAddressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AssociateAddress" @@ -254,7 +252,7 @@ - (BFTask *)associateAddress:(AWSEC2AssociateAddressRequest *)request { - (BFTask *)associateDhcpOptions:(AWSEC2AssociateDhcpOptionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AssociateDhcpOptions" @@ -263,7 +261,7 @@ - (BFTask *)associateDhcpOptions:(AWSEC2AssociateDhcpOptionsRequest *)request { - (BFTask *)associateRouteTable:(AWSEC2AssociateRouteTableRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AssociateRouteTable" @@ -272,7 +270,7 @@ - (BFTask *)associateRouteTable:(AWSEC2AssociateRouteTableRequest *)request { - (BFTask *)attachInternetGateway:(AWSEC2AttachInternetGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AttachInternetGateway" @@ -281,7 +279,7 @@ - (BFTask *)attachInternetGateway:(AWSEC2AttachInternetGatewayRequest *)request - (BFTask *)attachNetworkInterface:(AWSEC2AttachNetworkInterfaceRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AttachNetworkInterface" @@ -290,7 +288,7 @@ - (BFTask *)attachNetworkInterface:(AWSEC2AttachNetworkInterfaceRequest *)reques - (BFTask *)attachVolume:(AWSEC2AttachVolumeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AttachVolume" @@ -299,7 +297,7 @@ - (BFTask *)attachVolume:(AWSEC2AttachVolumeRequest *)request { - (BFTask *)attachVpnGateway:(AWSEC2AttachVpnGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AttachVpnGateway" @@ -308,7 +306,7 @@ - (BFTask *)attachVpnGateway:(AWSEC2AttachVpnGatewayRequest *)request { - (BFTask *)authorizeSecurityGroupEgress:(AWSEC2AuthorizeSecurityGroupEgressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AuthorizeSecurityGroupEgress" @@ -317,7 +315,7 @@ - (BFTask *)authorizeSecurityGroupEgress:(AWSEC2AuthorizeSecurityGroupEgressRequ - (BFTask *)authorizeSecurityGroupIngress:(AWSEC2AuthorizeSecurityGroupIngressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AuthorizeSecurityGroupIngress" @@ -326,7 +324,7 @@ - (BFTask *)authorizeSecurityGroupIngress:(AWSEC2AuthorizeSecurityGroupIngressRe - (BFTask *)bundleInstance:(AWSEC2BundleInstanceRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"BundleInstance" @@ -335,7 +333,7 @@ - (BFTask *)bundleInstance:(AWSEC2BundleInstanceRequest *)request { - (BFTask *)cancelBundleTask:(AWSEC2CancelBundleTaskRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CancelBundleTask" @@ -344,7 +342,7 @@ - (BFTask *)cancelBundleTask:(AWSEC2CancelBundleTaskRequest *)request { - (BFTask *)cancelConversionTask:(AWSEC2CancelConversionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CancelConversionTask" @@ -353,7 +351,7 @@ - (BFTask *)cancelConversionTask:(AWSEC2CancelConversionRequest *)request { - (BFTask *)cancelExportTask:(AWSEC2CancelExportTaskRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CancelExportTask" @@ -362,7 +360,7 @@ - (BFTask *)cancelExportTask:(AWSEC2CancelExportTaskRequest *)request { - (BFTask *)cancelReservedInstancesListing:(AWSEC2CancelReservedInstancesListingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CancelReservedInstancesListing" @@ -371,7 +369,7 @@ - (BFTask *)cancelReservedInstancesListing:(AWSEC2CancelReservedInstancesListing - (BFTask *)cancelSpotInstanceRequests:(AWSEC2CancelSpotInstanceRequestsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CancelSpotInstanceRequests" @@ -380,7 +378,7 @@ - (BFTask *)cancelSpotInstanceRequests:(AWSEC2CancelSpotInstanceRequestsRequest - (BFTask *)confirmProductInstance:(AWSEC2ConfirmProductInstanceRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ConfirmProductInstance" @@ -389,7 +387,7 @@ - (BFTask *)confirmProductInstance:(AWSEC2ConfirmProductInstanceRequest *)reques - (BFTask *)createCustomerGateway:(AWSEC2CreateCustomerGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateCustomerGateway" @@ -398,7 +396,7 @@ - (BFTask *)createCustomerGateway:(AWSEC2CreateCustomerGatewayRequest *)request - (BFTask *)createDhcpOptions:(AWSEC2CreateDhcpOptionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateDhcpOptions" @@ -407,7 +405,7 @@ - (BFTask *)createDhcpOptions:(AWSEC2CreateDhcpOptionsRequest *)request { - (BFTask *)createImage:(AWSEC2CreateImageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateImage" @@ -416,7 +414,7 @@ - (BFTask *)createImage:(AWSEC2CreateImageRequest *)request { - (BFTask *)createInstanceExportTask:(AWSEC2CreateInstanceExportTaskRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateInstanceExportTask" @@ -425,7 +423,7 @@ - (BFTask *)createInstanceExportTask:(AWSEC2CreateInstanceExportTaskRequest *)re - (BFTask *)createInternetGateway:(AWSEC2CreateInternetGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateInternetGateway" @@ -434,7 +432,7 @@ - (BFTask *)createInternetGateway:(AWSEC2CreateInternetGatewayRequest *)request - (BFTask *)createKeyPair:(AWSEC2CreateKeyPairRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateKeyPair" @@ -443,7 +441,7 @@ - (BFTask *)createKeyPair:(AWSEC2CreateKeyPairRequest *)request { - (BFTask *)createNetworkAcl:(AWSEC2CreateNetworkAclRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateNetworkAcl" @@ -452,7 +450,7 @@ - (BFTask *)createNetworkAcl:(AWSEC2CreateNetworkAclRequest *)request { - (BFTask *)createNetworkAclEntry:(AWSEC2CreateNetworkAclEntryRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateNetworkAclEntry" @@ -461,7 +459,7 @@ - (BFTask *)createNetworkAclEntry:(AWSEC2CreateNetworkAclEntryRequest *)request - (BFTask *)createNetworkInterface:(AWSEC2CreateNetworkInterfaceRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateNetworkInterface" @@ -470,7 +468,7 @@ - (BFTask *)createNetworkInterface:(AWSEC2CreateNetworkInterfaceRequest *)reques - (BFTask *)createPlacementGroup:(AWSEC2CreatePlacementGroupRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreatePlacementGroup" @@ -479,7 +477,7 @@ - (BFTask *)createPlacementGroup:(AWSEC2CreatePlacementGroupRequest *)request { - (BFTask *)createReservedInstancesListing:(AWSEC2CreateReservedInstancesListingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateReservedInstancesListing" @@ -488,7 +486,7 @@ - (BFTask *)createReservedInstancesListing:(AWSEC2CreateReservedInstancesListing - (BFTask *)createRoute:(AWSEC2CreateRouteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateRoute" @@ -497,7 +495,7 @@ - (BFTask *)createRoute:(AWSEC2CreateRouteRequest *)request { - (BFTask *)createRouteTable:(AWSEC2CreateRouteTableRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateRouteTable" @@ -506,7 +504,7 @@ - (BFTask *)createRouteTable:(AWSEC2CreateRouteTableRequest *)request { - (BFTask *)createSecurityGroup:(AWSEC2CreateSecurityGroupRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateSecurityGroup" @@ -515,7 +513,7 @@ - (BFTask *)createSecurityGroup:(AWSEC2CreateSecurityGroupRequest *)request { - (BFTask *)createSnapshot:(AWSEC2CreateSnapshotRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateSnapshot" @@ -524,7 +522,7 @@ - (BFTask *)createSnapshot:(AWSEC2CreateSnapshotRequest *)request { - (BFTask *)createSpotDatafeedSubscription:(AWSEC2CreateSpotDatafeedSubscriptionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateSpotDatafeedSubscription" @@ -533,7 +531,7 @@ - (BFTask *)createSpotDatafeedSubscription:(AWSEC2CreateSpotDatafeedSubscription - (BFTask *)createSubnet:(AWSEC2CreateSubnetRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateSubnet" @@ -542,7 +540,7 @@ - (BFTask *)createSubnet:(AWSEC2CreateSubnetRequest *)request { - (BFTask *)createTags:(AWSEC2CreateTagsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateTags" @@ -551,7 +549,7 @@ - (BFTask *)createTags:(AWSEC2CreateTagsRequest *)request { - (BFTask *)createVolume:(AWSEC2CreateVolumeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateVolume" @@ -560,7 +558,7 @@ - (BFTask *)createVolume:(AWSEC2CreateVolumeRequest *)request { - (BFTask *)createVpc:(AWSEC2CreateVpcRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateVpc" @@ -569,7 +567,7 @@ - (BFTask *)createVpc:(AWSEC2CreateVpcRequest *)request { - (BFTask *)createVpcPeeringConnection:(AWSEC2CreateVpcPeeringConnectionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateVpcPeeringConnection" @@ -578,7 +576,7 @@ - (BFTask *)createVpcPeeringConnection:(AWSEC2CreateVpcPeeringConnectionRequest - (BFTask *)createVpnConnection:(AWSEC2CreateVpnConnectionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateVpnConnection" @@ -587,7 +585,7 @@ - (BFTask *)createVpnConnection:(AWSEC2CreateVpnConnectionRequest *)request { - (BFTask *)createVpnConnectionRoute:(AWSEC2CreateVpnConnectionRouteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateVpnConnectionRoute" @@ -596,7 +594,7 @@ - (BFTask *)createVpnConnectionRoute:(AWSEC2CreateVpnConnectionRouteRequest *)re - (BFTask *)createVpnGateway:(AWSEC2CreateVpnGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateVpnGateway" @@ -605,7 +603,7 @@ - (BFTask *)createVpnGateway:(AWSEC2CreateVpnGatewayRequest *)request { - (BFTask *)deleteCustomerGateway:(AWSEC2DeleteCustomerGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteCustomerGateway" @@ -614,7 +612,7 @@ - (BFTask *)deleteCustomerGateway:(AWSEC2DeleteCustomerGatewayRequest *)request - (BFTask *)deleteDhcpOptions:(AWSEC2DeleteDhcpOptionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteDhcpOptions" @@ -623,7 +621,7 @@ - (BFTask *)deleteDhcpOptions:(AWSEC2DeleteDhcpOptionsRequest *)request { - (BFTask *)deleteInternetGateway:(AWSEC2DeleteInternetGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteInternetGateway" @@ -632,7 +630,7 @@ - (BFTask *)deleteInternetGateway:(AWSEC2DeleteInternetGatewayRequest *)request - (BFTask *)deleteKeyPair:(AWSEC2DeleteKeyPairRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteKeyPair" @@ -641,7 +639,7 @@ - (BFTask *)deleteKeyPair:(AWSEC2DeleteKeyPairRequest *)request { - (BFTask *)deleteNetworkAcl:(AWSEC2DeleteNetworkAclRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteNetworkAcl" @@ -650,7 +648,7 @@ - (BFTask *)deleteNetworkAcl:(AWSEC2DeleteNetworkAclRequest *)request { - (BFTask *)deleteNetworkAclEntry:(AWSEC2DeleteNetworkAclEntryRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteNetworkAclEntry" @@ -659,7 +657,7 @@ - (BFTask *)deleteNetworkAclEntry:(AWSEC2DeleteNetworkAclEntryRequest *)request - (BFTask *)deleteNetworkInterface:(AWSEC2DeleteNetworkInterfaceRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteNetworkInterface" @@ -668,7 +666,7 @@ - (BFTask *)deleteNetworkInterface:(AWSEC2DeleteNetworkInterfaceRequest *)reques - (BFTask *)deletePlacementGroup:(AWSEC2DeletePlacementGroupRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeletePlacementGroup" @@ -677,7 +675,7 @@ - (BFTask *)deletePlacementGroup:(AWSEC2DeletePlacementGroupRequest *)request { - (BFTask *)deleteRoute:(AWSEC2DeleteRouteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteRoute" @@ -686,7 +684,7 @@ - (BFTask *)deleteRoute:(AWSEC2DeleteRouteRequest *)request { - (BFTask *)deleteRouteTable:(AWSEC2DeleteRouteTableRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteRouteTable" @@ -695,7 +693,7 @@ - (BFTask *)deleteRouteTable:(AWSEC2DeleteRouteTableRequest *)request { - (BFTask *)deleteSecurityGroup:(AWSEC2DeleteSecurityGroupRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteSecurityGroup" @@ -704,7 +702,7 @@ - (BFTask *)deleteSecurityGroup:(AWSEC2DeleteSecurityGroupRequest *)request { - (BFTask *)deleteSnapshot:(AWSEC2DeleteSnapshotRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteSnapshot" @@ -713,7 +711,7 @@ - (BFTask *)deleteSnapshot:(AWSEC2DeleteSnapshotRequest *)request { - (BFTask *)deleteSpotDatafeedSubscription:(AWSEC2DeleteSpotDatafeedSubscriptionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteSpotDatafeedSubscription" @@ -722,7 +720,7 @@ - (BFTask *)deleteSpotDatafeedSubscription:(AWSEC2DeleteSpotDatafeedSubscription - (BFTask *)deleteSubnet:(AWSEC2DeleteSubnetRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteSubnet" @@ -731,7 +729,7 @@ - (BFTask *)deleteSubnet:(AWSEC2DeleteSubnetRequest *)request { - (BFTask *)deleteTags:(AWSEC2DeleteTagsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteTags" @@ -740,7 +738,7 @@ - (BFTask *)deleteTags:(AWSEC2DeleteTagsRequest *)request { - (BFTask *)deleteVolume:(AWSEC2DeleteVolumeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteVolume" @@ -749,7 +747,7 @@ - (BFTask *)deleteVolume:(AWSEC2DeleteVolumeRequest *)request { - (BFTask *)deleteVpc:(AWSEC2DeleteVpcRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteVpc" @@ -758,7 +756,7 @@ - (BFTask *)deleteVpc:(AWSEC2DeleteVpcRequest *)request { - (BFTask *)deleteVpcPeeringConnection:(AWSEC2DeleteVpcPeeringConnectionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteVpcPeeringConnection" @@ -767,7 +765,7 @@ - (BFTask *)deleteVpcPeeringConnection:(AWSEC2DeleteVpcPeeringConnectionRequest - (BFTask *)deleteVpnConnection:(AWSEC2DeleteVpnConnectionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteVpnConnection" @@ -776,7 +774,7 @@ - (BFTask *)deleteVpnConnection:(AWSEC2DeleteVpnConnectionRequest *)request { - (BFTask *)deleteVpnConnectionRoute:(AWSEC2DeleteVpnConnectionRouteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteVpnConnectionRoute" @@ -785,7 +783,7 @@ - (BFTask *)deleteVpnConnectionRoute:(AWSEC2DeleteVpnConnectionRouteRequest *)re - (BFTask *)deleteVpnGateway:(AWSEC2DeleteVpnGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteVpnGateway" @@ -794,7 +792,7 @@ - (BFTask *)deleteVpnGateway:(AWSEC2DeleteVpnGatewayRequest *)request { - (BFTask *)deregisterImage:(AWSEC2DeregisterImageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeregisterImage" @@ -803,7 +801,7 @@ - (BFTask *)deregisterImage:(AWSEC2DeregisterImageRequest *)request { - (BFTask *)describeAccountAttributes:(AWSEC2DescribeAccountAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAccountAttributes" @@ -812,7 +810,7 @@ - (BFTask *)describeAccountAttributes:(AWSEC2DescribeAccountAttributesRequest *) - (BFTask *)describeAddresses:(AWSEC2DescribeAddressesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAddresses" @@ -821,7 +819,7 @@ - (BFTask *)describeAddresses:(AWSEC2DescribeAddressesRequest *)request { - (BFTask *)describeAvailabilityZones:(AWSEC2DescribeAvailabilityZonesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeAvailabilityZones" @@ -830,7 +828,7 @@ - (BFTask *)describeAvailabilityZones:(AWSEC2DescribeAvailabilityZonesRequest *) - (BFTask *)describeBundleTasks:(AWSEC2DescribeBundleTasksRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeBundleTasks" @@ -839,7 +837,7 @@ - (BFTask *)describeBundleTasks:(AWSEC2DescribeBundleTasksRequest *)request { - (BFTask *)describeConversionTasks:(AWSEC2DescribeConversionTasksRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeConversionTasks" @@ -848,7 +846,7 @@ - (BFTask *)describeConversionTasks:(AWSEC2DescribeConversionTasksRequest *)requ - (BFTask *)describeCustomerGateways:(AWSEC2DescribeCustomerGatewaysRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeCustomerGateways" @@ -857,7 +855,7 @@ - (BFTask *)describeCustomerGateways:(AWSEC2DescribeCustomerGatewaysRequest *)re - (BFTask *)describeDhcpOptions:(AWSEC2DescribeDhcpOptionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeDhcpOptions" @@ -866,7 +864,7 @@ - (BFTask *)describeDhcpOptions:(AWSEC2DescribeDhcpOptionsRequest *)request { - (BFTask *)describeExportTasks:(AWSEC2DescribeExportTasksRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeExportTasks" @@ -875,7 +873,7 @@ - (BFTask *)describeExportTasks:(AWSEC2DescribeExportTasksRequest *)request { - (BFTask *)describeImageAttribute:(AWSEC2DescribeImageAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeImageAttribute" @@ -884,7 +882,7 @@ - (BFTask *)describeImageAttribute:(AWSEC2DescribeImageAttributeRequest *)reques - (BFTask *)describeImages:(AWSEC2DescribeImagesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeImages" @@ -893,7 +891,7 @@ - (BFTask *)describeImages:(AWSEC2DescribeImagesRequest *)request { - (BFTask *)describeInstanceAttribute:(AWSEC2DescribeInstanceAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeInstanceAttribute" @@ -902,7 +900,7 @@ - (BFTask *)describeInstanceAttribute:(AWSEC2DescribeInstanceAttributeRequest *) - (BFTask *)describeInstanceStatus:(AWSEC2DescribeInstanceStatusRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeInstanceStatus" @@ -911,7 +909,7 @@ - (BFTask *)describeInstanceStatus:(AWSEC2DescribeInstanceStatusRequest *)reques - (BFTask *)describeInstances:(AWSEC2DescribeInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeInstances" @@ -920,7 +918,7 @@ - (BFTask *)describeInstances:(AWSEC2DescribeInstancesRequest *)request { - (BFTask *)describeInternetGateways:(AWSEC2DescribeInternetGatewaysRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeInternetGateways" @@ -929,7 +927,7 @@ - (BFTask *)describeInternetGateways:(AWSEC2DescribeInternetGatewaysRequest *)re - (BFTask *)describeKeyPairs:(AWSEC2DescribeKeyPairsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeKeyPairs" @@ -938,7 +936,7 @@ - (BFTask *)describeKeyPairs:(AWSEC2DescribeKeyPairsRequest *)request { - (BFTask *)describeNetworkAcls:(AWSEC2DescribeNetworkAclsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeNetworkAcls" @@ -947,7 +945,7 @@ - (BFTask *)describeNetworkAcls:(AWSEC2DescribeNetworkAclsRequest *)request { - (BFTask *)describeNetworkInterfaceAttribute:(AWSEC2DescribeNetworkInterfaceAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeNetworkInterfaceAttribute" @@ -956,7 +954,7 @@ - (BFTask *)describeNetworkInterfaceAttribute:(AWSEC2DescribeNetworkInterfaceAtt - (BFTask *)describeNetworkInterfaces:(AWSEC2DescribeNetworkInterfacesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeNetworkInterfaces" @@ -965,7 +963,7 @@ - (BFTask *)describeNetworkInterfaces:(AWSEC2DescribeNetworkInterfacesRequest *) - (BFTask *)describePlacementGroups:(AWSEC2DescribePlacementGroupsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribePlacementGroups" @@ -974,7 +972,7 @@ - (BFTask *)describePlacementGroups:(AWSEC2DescribePlacementGroupsRequest *)requ - (BFTask *)describeRegions:(AWSEC2DescribeRegionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeRegions" @@ -983,7 +981,7 @@ - (BFTask *)describeRegions:(AWSEC2DescribeRegionsRequest *)request { - (BFTask *)describeReservedInstances:(AWSEC2DescribeReservedInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeReservedInstances" @@ -992,7 +990,7 @@ - (BFTask *)describeReservedInstances:(AWSEC2DescribeReservedInstancesRequest *) - (BFTask *)describeReservedInstancesListings:(AWSEC2DescribeReservedInstancesListingsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeReservedInstancesListings" @@ -1001,7 +999,7 @@ - (BFTask *)describeReservedInstancesListings:(AWSEC2DescribeReservedInstancesLi - (BFTask *)describeReservedInstancesModifications:(AWSEC2DescribeReservedInstancesModificationsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeReservedInstancesModifications" @@ -1010,7 +1008,7 @@ - (BFTask *)describeReservedInstancesModifications:(AWSEC2DescribeReservedInstan - (BFTask *)describeReservedInstancesOfferings:(AWSEC2DescribeReservedInstancesOfferingsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeReservedInstancesOfferings" @@ -1019,7 +1017,7 @@ - (BFTask *)describeReservedInstancesOfferings:(AWSEC2DescribeReservedInstancesO - (BFTask *)describeRouteTables:(AWSEC2DescribeRouteTablesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeRouteTables" @@ -1028,7 +1026,7 @@ - (BFTask *)describeRouteTables:(AWSEC2DescribeRouteTablesRequest *)request { - (BFTask *)describeSecurityGroups:(AWSEC2DescribeSecurityGroupsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeSecurityGroups" @@ -1037,7 +1035,7 @@ - (BFTask *)describeSecurityGroups:(AWSEC2DescribeSecurityGroupsRequest *)reques - (BFTask *)describeSnapshotAttribute:(AWSEC2DescribeSnapshotAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeSnapshotAttribute" @@ -1046,7 +1044,7 @@ - (BFTask *)describeSnapshotAttribute:(AWSEC2DescribeSnapshotAttributeRequest *) - (BFTask *)describeSnapshots:(AWSEC2DescribeSnapshotsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeSnapshots" @@ -1055,7 +1053,7 @@ - (BFTask *)describeSnapshots:(AWSEC2DescribeSnapshotsRequest *)request { - (BFTask *)describeSpotDatafeedSubscription:(AWSEC2DescribeSpotDatafeedSubscriptionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeSpotDatafeedSubscription" @@ -1064,7 +1062,7 @@ - (BFTask *)describeSpotDatafeedSubscription:(AWSEC2DescribeSpotDatafeedSubscrip - (BFTask *)describeSpotInstanceRequests:(AWSEC2DescribeSpotInstanceRequestsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeSpotInstanceRequests" @@ -1073,7 +1071,7 @@ - (BFTask *)describeSpotInstanceRequests:(AWSEC2DescribeSpotInstanceRequestsRequ - (BFTask *)describeSpotPriceHistory:(AWSEC2DescribeSpotPriceHistoryRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeSpotPriceHistory" @@ -1082,7 +1080,7 @@ - (BFTask *)describeSpotPriceHistory:(AWSEC2DescribeSpotPriceHistoryRequest *)re - (BFTask *)describeSubnets:(AWSEC2DescribeSubnetsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeSubnets" @@ -1091,7 +1089,7 @@ - (BFTask *)describeSubnets:(AWSEC2DescribeSubnetsRequest *)request { - (BFTask *)describeTags:(AWSEC2DescribeTagsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeTags" @@ -1100,7 +1098,7 @@ - (BFTask *)describeTags:(AWSEC2DescribeTagsRequest *)request { - (BFTask *)describeVolumeAttribute:(AWSEC2DescribeVolumeAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVolumeAttribute" @@ -1109,7 +1107,7 @@ - (BFTask *)describeVolumeAttribute:(AWSEC2DescribeVolumeAttributeRequest *)requ - (BFTask *)describeVolumeStatus:(AWSEC2DescribeVolumeStatusRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVolumeStatus" @@ -1118,7 +1116,7 @@ - (BFTask *)describeVolumeStatus:(AWSEC2DescribeVolumeStatusRequest *)request { - (BFTask *)describeVolumes:(AWSEC2DescribeVolumesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVolumes" @@ -1127,7 +1125,7 @@ - (BFTask *)describeVolumes:(AWSEC2DescribeVolumesRequest *)request { - (BFTask *)describeVpcAttribute:(AWSEC2DescribeVpcAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVpcAttribute" @@ -1136,7 +1134,7 @@ - (BFTask *)describeVpcAttribute:(AWSEC2DescribeVpcAttributeRequest *)request { - (BFTask *)describeVpcPeeringConnections:(AWSEC2DescribeVpcPeeringConnectionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVpcPeeringConnections" @@ -1145,7 +1143,7 @@ - (BFTask *)describeVpcPeeringConnections:(AWSEC2DescribeVpcPeeringConnectionsRe - (BFTask *)describeVpcs:(AWSEC2DescribeVpcsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVpcs" @@ -1154,7 +1152,7 @@ - (BFTask *)describeVpcs:(AWSEC2DescribeVpcsRequest *)request { - (BFTask *)describeVpnConnections:(AWSEC2DescribeVpnConnectionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVpnConnections" @@ -1163,7 +1161,7 @@ - (BFTask *)describeVpnConnections:(AWSEC2DescribeVpnConnectionsRequest *)reques - (BFTask *)describeVpnGateways:(AWSEC2DescribeVpnGatewaysRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeVpnGateways" @@ -1172,7 +1170,7 @@ - (BFTask *)describeVpnGateways:(AWSEC2DescribeVpnGatewaysRequest *)request { - (BFTask *)detachInternetGateway:(AWSEC2DetachInternetGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DetachInternetGateway" @@ -1181,7 +1179,7 @@ - (BFTask *)detachInternetGateway:(AWSEC2DetachInternetGatewayRequest *)request - (BFTask *)detachNetworkInterface:(AWSEC2DetachNetworkInterfaceRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DetachNetworkInterface" @@ -1190,7 +1188,7 @@ - (BFTask *)detachNetworkInterface:(AWSEC2DetachNetworkInterfaceRequest *)reques - (BFTask *)detachVolume:(AWSEC2DetachVolumeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DetachVolume" @@ -1199,7 +1197,7 @@ - (BFTask *)detachVolume:(AWSEC2DetachVolumeRequest *)request { - (BFTask *)detachVpnGateway:(AWSEC2DetachVpnGatewayRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DetachVpnGateway" @@ -1208,7 +1206,7 @@ - (BFTask *)detachVpnGateway:(AWSEC2DetachVpnGatewayRequest *)request { - (BFTask *)disableVgwRoutePropagation:(AWSEC2DisableVgwRoutePropagationRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DisableVgwRoutePropagation" @@ -1217,7 +1215,7 @@ - (BFTask *)disableVgwRoutePropagation:(AWSEC2DisableVgwRoutePropagationRequest - (BFTask *)disassociateAddress:(AWSEC2DisassociateAddressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DisassociateAddress" @@ -1226,7 +1224,7 @@ - (BFTask *)disassociateAddress:(AWSEC2DisassociateAddressRequest *)request { - (BFTask *)disassociateRouteTable:(AWSEC2DisassociateRouteTableRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DisassociateRouteTable" @@ -1235,7 +1233,7 @@ - (BFTask *)disassociateRouteTable:(AWSEC2DisassociateRouteTableRequest *)reques - (BFTask *)enableVgwRoutePropagation:(AWSEC2EnableVgwRoutePropagationRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"EnableVgwRoutePropagation" @@ -1244,7 +1242,7 @@ - (BFTask *)enableVgwRoutePropagation:(AWSEC2EnableVgwRoutePropagationRequest *) - (BFTask *)enableVolumeIO:(AWSEC2EnableVolumeIORequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"EnableVolumeIO" @@ -1253,7 +1251,7 @@ - (BFTask *)enableVolumeIO:(AWSEC2EnableVolumeIORequest *)request { - (BFTask *)getConsoleOutput:(AWSEC2GetConsoleOutputRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetConsoleOutput" @@ -1262,7 +1260,7 @@ - (BFTask *)getConsoleOutput:(AWSEC2GetConsoleOutputRequest *)request { - (BFTask *)getPasswordData:(AWSEC2GetPasswordDataRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetPasswordData" @@ -1271,7 +1269,7 @@ - (BFTask *)getPasswordData:(AWSEC2GetPasswordDataRequest *)request { - (BFTask *)importInstance:(AWSEC2ImportInstanceRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ImportInstance" @@ -1280,7 +1278,7 @@ - (BFTask *)importInstance:(AWSEC2ImportInstanceRequest *)request { - (BFTask *)importKeyPair:(AWSEC2ImportKeyPairRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ImportKeyPair" @@ -1289,7 +1287,7 @@ - (BFTask *)importKeyPair:(AWSEC2ImportKeyPairRequest *)request { - (BFTask *)importVolume:(AWSEC2ImportVolumeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ImportVolume" @@ -1298,7 +1296,7 @@ - (BFTask *)importVolume:(AWSEC2ImportVolumeRequest *)request { - (BFTask *)modifyImageAttribute:(AWSEC2ModifyImageAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifyImageAttribute" @@ -1307,7 +1305,7 @@ - (BFTask *)modifyImageAttribute:(AWSEC2ModifyImageAttributeRequest *)request { - (BFTask *)modifyInstanceAttribute:(AWSEC2ModifyInstanceAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifyInstanceAttribute" @@ -1316,7 +1314,7 @@ - (BFTask *)modifyInstanceAttribute:(AWSEC2ModifyInstanceAttributeRequest *)requ - (BFTask *)modifyNetworkInterfaceAttribute:(AWSEC2ModifyNetworkInterfaceAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifyNetworkInterfaceAttribute" @@ -1325,7 +1323,7 @@ - (BFTask *)modifyNetworkInterfaceAttribute:(AWSEC2ModifyNetworkInterfaceAttribu - (BFTask *)modifyReservedInstances:(AWSEC2ModifyReservedInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifyReservedInstances" @@ -1334,16 +1332,25 @@ - (BFTask *)modifyReservedInstances:(AWSEC2ModifyReservedInstancesRequest *)requ - (BFTask *)modifySnapshotAttribute:(AWSEC2ModifySnapshotAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifySnapshotAttribute" outputClass:nil]; } +- (BFTask *)modifySubnetAttribute:(AWSEC2ModifySubnetAttributeRequest *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"ModifySubnetAttribute" + outputClass:nil]; +} + - (BFTask *)modifyVolumeAttribute:(AWSEC2ModifyVolumeAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifyVolumeAttribute" @@ -1352,7 +1359,7 @@ - (BFTask *)modifyVolumeAttribute:(AWSEC2ModifyVolumeAttributeRequest *)request - (BFTask *)modifyVpcAttribute:(AWSEC2ModifyVpcAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifyVpcAttribute" @@ -1361,7 +1368,7 @@ - (BFTask *)modifyVpcAttribute:(AWSEC2ModifyVpcAttributeRequest *)request { - (BFTask *)monitorInstances:(AWSEC2MonitorInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"MonitorInstances" @@ -1370,7 +1377,7 @@ - (BFTask *)monitorInstances:(AWSEC2MonitorInstancesRequest *)request { - (BFTask *)purchaseReservedInstancesOffering:(AWSEC2PurchaseReservedInstancesOfferingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"PurchaseReservedInstancesOffering" @@ -1379,7 +1386,7 @@ - (BFTask *)purchaseReservedInstancesOffering:(AWSEC2PurchaseReservedInstancesOf - (BFTask *)rebootInstances:(AWSEC2RebootInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RebootInstances" @@ -1388,7 +1395,7 @@ - (BFTask *)rebootInstances:(AWSEC2RebootInstancesRequest *)request { - (BFTask *)registerImage:(AWSEC2RegisterImageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RegisterImage" @@ -1397,7 +1404,7 @@ - (BFTask *)registerImage:(AWSEC2RegisterImageRequest *)request { - (BFTask *)rejectVpcPeeringConnection:(AWSEC2RejectVpcPeeringConnectionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RejectVpcPeeringConnection" @@ -1406,7 +1413,7 @@ - (BFTask *)rejectVpcPeeringConnection:(AWSEC2RejectVpcPeeringConnectionRequest - (BFTask *)releaseAddress:(AWSEC2ReleaseAddressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReleaseAddress" @@ -1415,7 +1422,7 @@ - (BFTask *)releaseAddress:(AWSEC2ReleaseAddressRequest *)request { - (BFTask *)replaceNetworkAclAssociation:(AWSEC2ReplaceNetworkAclAssociationRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReplaceNetworkAclAssociation" @@ -1424,7 +1431,7 @@ - (BFTask *)replaceNetworkAclAssociation:(AWSEC2ReplaceNetworkAclAssociationRequ - (BFTask *)replaceNetworkAclEntry:(AWSEC2ReplaceNetworkAclEntryRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReplaceNetworkAclEntry" @@ -1433,7 +1440,7 @@ - (BFTask *)replaceNetworkAclEntry:(AWSEC2ReplaceNetworkAclEntryRequest *)reques - (BFTask *)replaceRoute:(AWSEC2ReplaceRouteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReplaceRoute" @@ -1442,7 +1449,7 @@ - (BFTask *)replaceRoute:(AWSEC2ReplaceRouteRequest *)request { - (BFTask *)replaceRouteTableAssociation:(AWSEC2ReplaceRouteTableAssociationRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReplaceRouteTableAssociation" @@ -1451,7 +1458,7 @@ - (BFTask *)replaceRouteTableAssociation:(AWSEC2ReplaceRouteTableAssociationRequ - (BFTask *)replicateImage:(AWSEC2ReplicateImageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReplicateImage" @@ -1460,7 +1467,7 @@ - (BFTask *)replicateImage:(AWSEC2ReplicateImageRequest *)request { - (BFTask *)replicateSnapshot:(AWSEC2ReplicateSnapshotRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReplicateSnapshot" @@ -1469,7 +1476,7 @@ - (BFTask *)replicateSnapshot:(AWSEC2ReplicateSnapshotRequest *)request { - (BFTask *)reportInstanceStatus:(AWSEC2ReportInstanceStatusRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReportInstanceStatus" @@ -1478,7 +1485,7 @@ - (BFTask *)reportInstanceStatus:(AWSEC2ReportInstanceStatusRequest *)request { - (BFTask *)requestSpotInstances:(AWSEC2RequestSpotInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RequestSpotInstances" @@ -1487,7 +1494,7 @@ - (BFTask *)requestSpotInstances:(AWSEC2RequestSpotInstancesRequest *)request { - (BFTask *)resetImageAttribute:(AWSEC2ResetImageAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ResetImageAttribute" @@ -1496,7 +1503,7 @@ - (BFTask *)resetImageAttribute:(AWSEC2ResetImageAttributeRequest *)request { - (BFTask *)resetInstanceAttribute:(AWSEC2ResetInstanceAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ResetInstanceAttribute" @@ -1505,7 +1512,7 @@ - (BFTask *)resetInstanceAttribute:(AWSEC2ResetInstanceAttributeRequest *)reques - (BFTask *)resetNetworkInterfaceAttribute:(AWSEC2ResetNetworkInterfaceAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ResetNetworkInterfaceAttribute" @@ -1514,7 +1521,7 @@ - (BFTask *)resetNetworkInterfaceAttribute:(AWSEC2ResetNetworkInterfaceAttribute - (BFTask *)resetSnapshotAttribute:(AWSEC2ResetSnapshotAttributeRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ResetSnapshotAttribute" @@ -1523,7 +1530,7 @@ - (BFTask *)resetSnapshotAttribute:(AWSEC2ResetSnapshotAttributeRequest *)reques - (BFTask *)revokeSecurityGroupEgress:(AWSEC2RevokeSecurityGroupEgressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RevokeSecurityGroupEgress" @@ -1532,7 +1539,7 @@ - (BFTask *)revokeSecurityGroupEgress:(AWSEC2RevokeSecurityGroupEgressRequest *) - (BFTask *)revokeSecurityGroupIngress:(AWSEC2RevokeSecurityGroupIngressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RevokeSecurityGroupIngress" @@ -1541,7 +1548,7 @@ - (BFTask *)revokeSecurityGroupIngress:(AWSEC2RevokeSecurityGroupIngressRequest - (BFTask *)runInstances:(AWSEC2RunInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RunInstances" @@ -1550,7 +1557,7 @@ - (BFTask *)runInstances:(AWSEC2RunInstancesRequest *)request { - (BFTask *)startInstances:(AWSEC2StartInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"StartInstances" @@ -1559,7 +1566,7 @@ - (BFTask *)startInstances:(AWSEC2StartInstancesRequest *)request { - (BFTask *)stopInstances:(AWSEC2StopInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"StopInstances" @@ -1568,7 +1575,7 @@ - (BFTask *)stopInstances:(AWSEC2StopInstancesRequest *)request { - (BFTask *)terminateInstances:(AWSEC2TerminateInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"TerminateInstances" @@ -1577,7 +1584,7 @@ - (BFTask *)terminateInstances:(AWSEC2TerminateInstancesRequest *)request { - (BFTask *)unassignPrivateIpAddresses:(AWSEC2UnassignPrivateIpAddressesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"UnassignPrivateIpAddresses" @@ -1586,7 +1593,7 @@ - (BFTask *)unassignPrivateIpAddresses:(AWSEC2UnassignPrivateIpAddressesRequest - (BFTask *)unmonitorInstances:(AWSEC2UnmonitorInstancesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"UnmonitorInstances" diff --git a/EC2/AWSEC2Model.h b/EC2/AWSEC2Model.h index 744536f4ff1..980cbdda593 100644 --- a/EC2/AWSEC2Model.h +++ b/EC2/AWSEC2Model.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSEC2ErrorDomain; @@ -214,6 +214,9 @@ typedef NS_ENUM(NSInteger, AWSEC2InstanceType) { AWSEC2InstanceTypeM3_large, AWSEC2InstanceTypeM3_xlarge, AWSEC2InstanceTypeM3_2xlarge, + AWSEC2InstanceTypeT2_micro, + AWSEC2InstanceTypeT2_small, + AWSEC2InstanceTypeT2_medium, AWSEC2InstanceTypeM2_xlarge, AWSEC2InstanceTypeM2_2xlarge, AWSEC2InstanceTypeM2_4xlarge, @@ -265,6 +268,14 @@ typedef NS_ENUM(NSInteger, AWSEC2MonitoringState) { AWSEC2MonitoringStatePending, }; +typedef NS_ENUM(NSInteger, AWSEC2NetworkInterfaceAttribute) { + AWSEC2NetworkInterfaceAttributeUnknown, + AWSEC2NetworkInterfaceAttributeDescription, + AWSEC2NetworkInterfaceAttributeGroupSet, + AWSEC2NetworkInterfaceAttributeSourceDestCheck, + AWSEC2NetworkInterfaceAttributeAttachment, +}; + typedef NS_ENUM(NSInteger, AWSEC2NetworkInterfaceStatus) { AWSEC2NetworkInterfaceStatusUnknown, AWSEC2NetworkInterfaceStatusAvailable, @@ -513,6 +524,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VolumeType) { AWSEC2VolumeTypeUnknown, AWSEC2VolumeTypeStandard, AWSEC2VolumeTypeIO1, + AWSEC2VolumeTypeGp2, }; typedef NS_ENUM(NSInteger, AWSEC2VpcAttributeName) { @@ -557,7 +569,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2AttachNetworkInterfaceRequest; @class AWSEC2AttachNetworkInterfaceResult; @class AWSEC2AttachVolumeRequest; -@class AWSEC2AttachVolumeResult; @class AWSEC2AttachVpnGatewayRequest; @class AWSEC2AttachVpnGatewayResult; @class AWSEC2AttributeBooleanValue; @@ -595,7 +606,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2CreateInternetGatewayRequest; @class AWSEC2CreateInternetGatewayResult; @class AWSEC2CreateKeyPairRequest; -@class AWSEC2CreateKeyPairResult; @class AWSEC2CreateNetworkAclEntryRequest; @class AWSEC2CreateNetworkAclRequest; @class AWSEC2CreateNetworkAclResult; @@ -610,7 +620,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2CreateSecurityGroupRequest; @class AWSEC2CreateSecurityGroupResult; @class AWSEC2CreateSnapshotRequest; -@class AWSEC2CreateSnapshotResult; @class AWSEC2CreateSpotDatafeedSubscriptionRequest; @class AWSEC2CreateSpotDatafeedSubscriptionResult; @class AWSEC2CreateSubnetRequest; @@ -619,7 +628,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2CreateVolumePermission; @class AWSEC2CreateVolumePermissionModifications; @class AWSEC2CreateVolumeRequest; -@class AWSEC2CreateVolumeResult; @class AWSEC2CreateVpcPeeringConnectionRequest; @class AWSEC2CreateVpcPeeringConnectionResult; @class AWSEC2CreateVpcRequest; @@ -670,11 +678,9 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2DescribeExportTasksRequest; @class AWSEC2DescribeExportTasksResult; @class AWSEC2DescribeImageAttributeRequest; -@class AWSEC2DescribeImageAttributeResult; @class AWSEC2DescribeImagesRequest; @class AWSEC2DescribeImagesResult; @class AWSEC2DescribeInstanceAttributeRequest; -@class AWSEC2DescribeInstanceAttributeResult; @class AWSEC2DescribeInstanceStatusRequest; @class AWSEC2DescribeInstanceStatusResult; @class AWSEC2DescribeInstancesRequest; @@ -738,7 +744,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2DetachInternetGatewayRequest; @class AWSEC2DetachNetworkInterfaceRequest; @class AWSEC2DetachVolumeRequest; -@class AWSEC2DetachVolumeResult; @class AWSEC2DetachVpnGatewayRequest; @class AWSEC2DhcpConfiguration; @class AWSEC2DhcpOptions; @@ -802,6 +807,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2IpRange; @class AWSEC2KeyPair; @class AWSEC2KeyPairInfo; +@class AWSEC2LatestDhcpConfiguration; @class AWSEC2LaunchPermission; @class AWSEC2LaunchPermissionModifications; @class AWSEC2LaunchSpecification; @@ -811,6 +817,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2ModifyReservedInstancesRequest; @class AWSEC2ModifyReservedInstancesResult; @class AWSEC2ModifySnapshotAttributeRequest; +@class AWSEC2ModifySubnetAttributeRequest; @class AWSEC2ModifyVolumeAttributeRequest; @class AWSEC2ModifyVpcAttributeRequest; @class AWSEC2MonitorInstancesRequest; @@ -856,6 +863,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2ReportInstanceStatusRequest; @class AWSEC2RequestSpotInstancesRequest; @class AWSEC2RequestSpotInstancesResult; +@class AWSEC2RequestSpotLaunchSpecification; @class AWSEC2Reservation; @class AWSEC2ReservedInstanceLimitPrice; @class AWSEC2ReservedInstances; @@ -876,7 +884,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @class AWSEC2RouteTableAssociation; @class AWSEC2RunInstancesMonitoringEnabled; @class AWSEC2RunInstancesRequest; -@class AWSEC2RunInstancesResult; @class AWSEC2S3Storage; @class AWSEC2SecurityGroup; @class AWSEC2Snapshot; @@ -932,7 +939,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2AcceptVpcPeeringConnectionResult : AZModel +@interface AWSEC2AcceptVpcPeeringConnectionResult : AWSModel /** @@ -945,7 +952,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an account attribute.

*/ -@interface AWSEC2AccountAttribute : AZModel +@interface AWSEC2AccountAttribute : AWSModel /** @@ -963,7 +970,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a value of an account attribute.

*/ -@interface AWSEC2AccountAttributeValue : AZModel +@interface AWSEC2AccountAttributeValue : AWSModel /** @@ -976,7 +983,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an Elastic IP address.

*/ -@interface AWSEC2Address : AZModel +@interface AWSEC2Address : AWSModel /** @@ -990,7 +997,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *associationId; /** - *

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

+ *

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

*/ @property (nonatomic, assign) AWSEC2DomainType domain; @@ -1032,16 +1039,16 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2AllocateAddressResult : AZModel +@interface AWSEC2AllocateAddressResult : AWSModel /** - *

[EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic IP address for use with instances in a VPC.

+ *

[EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic IP address for use with instances in a VPC.

*/ @property (nonatomic, strong) NSString *allocationId; /** - *

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

+ *

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

*/ @property (nonatomic, assign) AWSEC2DomainType domain; @@ -1056,7 +1063,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface.

+ *

Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface.

*/ @property (nonatomic, strong) NSNumber *allowReassignment; @@ -1066,7 +1073,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *networkInterfaceId; /** - *

One or more IP addresses to be assigned as a secondary private IP address to the network interface.

If you don't specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range.

+ *

One or more IP addresses to be assigned as a secondary private IP address to the network interface.

If you don't specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range.

*/ @property (nonatomic, strong) NSArray *privateIpAddresses; @@ -1086,23 +1093,23 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *allocationId; /** - *

[EC2-VPC] Allows an Elastic IP address that is already associated with an instance or network interface to be re-associated with the specified instance or network interface. Otherwise, the operation fails.

Default: false

+ *

[EC2-VPC] Allows an Elastic IP address that is already associated with an instance or network interface to be re-associated with the specified instance or network interface. Otherwise, the operation fails.

Default: false

*/ @property (nonatomic, strong) NSNumber *allowReassociation; @property (nonatomic, strong) NSNumber *dryRun; /** - *

The ID of the instance. The operation fails if you specify an instance ID unless exactly one network interface is attached.

+ *

The ID of the instance. The operation fails if you specify an instance ID unless exactly one network interface is attached.

*/ @property (nonatomic, strong) NSString *instanceId; /** - *

[EC2-VPC] The ID of the network interface. If the instance has more than onenetwork interface, you must specify a network interface ID.

+ *

[EC2-VPC] The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.

*/ @property (nonatomic, strong) NSString *networkInterfaceId; /** - *

[EC2-VPC] The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.

+ *

[EC2-VPC] The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.

*/ @property (nonatomic, strong) NSString *privateIpAddress; @@ -1113,11 +1120,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2AssociateAddressResult : AZModel +@interface AWSEC2AssociateAddressResult : AWSModel /** - *

[EC2-VPC] The ID that represents the association of the Elastic IP address with an instance.

+ *

[EC2-VPC] The ID that represents the association of the Elastic IP address with an instance.

*/ @property (nonatomic, strong) NSString *associationId; @@ -1127,7 +1134,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The ID of the DHCP options set, or default to associateno DHCP options with the VPC.

+ *

The ID of the DHCP options set, or default to associate no DHCP options with the VPC.

*/ @property (nonatomic, strong) NSString *dhcpOptionsId; @property (nonatomic, strong) NSNumber *dryRun; @@ -1155,7 +1162,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2AssociateRouteTableResult : AZModel +@interface AWSEC2AssociateRouteTableResult : AWSModel /** @@ -1202,7 +1209,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2AttachNetworkInterfaceResult : AZModel +@interface AWSEC2AttachNetworkInterfaceResult : AWSModel /** @@ -1227,22 +1234,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *instanceId; /** - *

The ID of the Amazon EBS volume. The volume and instance must be within the same AvailabilityZone.

+ *

The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone.

*/ @property (nonatomic, strong) NSString *volumeId; @end -@interface AWSEC2AttachVolumeResult : AZModel - - -/** - *

Describes volume attachment details.

- */ -@property (nonatomic, strong) AWSEC2VolumeAttachment *attachment; - -@end - @interface AWSEC2AttachVpnGatewayRequest : AWSRequest @property (nonatomic, strong) NSNumber *dryRun; @@ -1259,7 +1256,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2AttachVpnGatewayResult : AZModel +@interface AWSEC2AttachVpnGatewayResult : AWSModel /** @@ -1269,13 +1266,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2AttributeBooleanValue : AZModel +@interface AWSEC2AttributeBooleanValue : AWSModel @property (nonatomic, strong) NSNumber *value; @end -@interface AWSEC2AttributeValue : AZModel +@interface AWSEC2AttributeValue : AWSModel @property (nonatomic, strong) NSString *value; @@ -1291,7 +1288,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number,use -1 to specify all ICMP types.

+ *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

*/ @property (nonatomic, strong) NSNumber *fromPort; @@ -1306,7 +1303,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *ipPermissions; /** - *

The IP protocol name (tcp, udp, icmp) or number(see Protocol Numbers).Use -1 to specify all.

+ *

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

*/ @property (nonatomic, strong) NSString *ipProtocol; @@ -1321,7 +1318,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *sourceSecurityGroupOwnerId; /** - *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number,use -1 to specify all ICMP codes for the ICMP type.

+ *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

*/ @property (nonatomic, strong) NSNumber *toPort; @@ -1337,7 +1334,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number,use -1 to specify all ICMP types.

+ *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

*/ @property (nonatomic, strong) NSNumber *fromPort; @@ -1357,7 +1354,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *ipPermissions; /** - *

The IP protocol name (tcp, udp, icmp) or number(see Protocol Numbers).Use -1 to specify all.

+ *

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

*/ @property (nonatomic, strong) NSString *ipProtocol; @@ -1372,7 +1369,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *sourceSecurityGroupOwnerId; /** - *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number,use -1 to specify all ICMP codes for the ICMP type.

+ *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

*/ @property (nonatomic, strong) NSNumber *toPort; @@ -1381,7 +1378,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an Availability Zone.

*/ -@interface AWSEC2AvailabilityZone : AZModel +@interface AWSEC2AvailabilityZone : AWSModel /** @@ -1409,7 +1406,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a message about an Availability Zone.

*/ -@interface AWSEC2AvailabilityZoneMessage : AZModel +@interface AWSEC2AvailabilityZoneMessage : AWSModel /** @@ -1419,7 +1416,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2BlobAttributeValue : AZModel +@interface AWSEC2BlobAttributeValue : AWSModel @property (nonatomic, strong) NSData *value; @@ -1428,7 +1425,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a block device mapping.

*/ -@interface AWSEC2BlockDeviceMapping : AZModel +@interface AWSEC2BlockDeviceMapping : AWSModel /** @@ -1463,13 +1460,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *instanceId; /** - *

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

+ *

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

*/ @property (nonatomic, strong) AWSEC2Storage *storage; @end -@interface AWSEC2BundleInstanceResult : AZModel +@interface AWSEC2BundleInstanceResult : AWSModel /** @@ -1482,7 +1479,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a bundle task.

*/ -@interface AWSEC2BundleTask : AZModel +@interface AWSEC2BundleTask : AWSModel /** @@ -1530,7 +1527,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an error for BundleInstance.

*/ -@interface AWSEC2BundleTaskError : AZModel +@interface AWSEC2BundleTaskError : AWSModel /** @@ -1556,7 +1553,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CancelBundleTaskResult : AZModel +@interface AWSEC2CancelBundleTaskResult : AWSModel /** @@ -1582,7 +1579,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The ID of the export task. This is the IDreturned by CreateInstanceExportTask.

+ *

The ID of the export task. This is the ID returned by CreateInstanceExportTask.

*/ @property (nonatomic, strong) NSString *exportTaskId; @@ -1598,7 +1595,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CancelReservedInstancesListingResult : AZModel +@interface AWSEC2CancelReservedInstancesListingResult : AWSModel /** @@ -1619,7 +1616,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CancelSpotInstanceRequestsResult : AZModel +@interface AWSEC2CancelSpotInstanceRequestsResult : AWSModel /** @@ -1632,7 +1629,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a request to cancel a Spot Instance.

*/ -@interface AWSEC2CancelledSpotInstanceRequest : AZModel +@interface AWSEC2CancelledSpotInstanceRequest : AWSModel /** @@ -1663,11 +1660,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ConfirmProductInstanceResult : AZModel +@interface AWSEC2ConfirmProductInstanceResult : AWSModel /** - *

The AWS account ID of the instance owner. This is only present if the product code is attached to the instance.

+ *

The AWS account ID of the instance owner. This is only present if the product code is attached to the instance.

*/ @property (nonatomic, strong) NSString *ownerId; @@ -1677,7 +1674,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Describes a conversion task.

* Required parameters: [ConversionTaskId, State] */ -@interface AWSEC2ConversionTask : AZModel +@interface AWSEC2ConversionTask : AWSModel /** @@ -1717,13 +1714,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

For devices that support BGP, the customer gateway's BGP ASN.

Default: 65000

+ *

For devices that support BGP, the customer gateway's BGP ASN.

Default: 65000

*/ @property (nonatomic, strong) NSNumber *bgpAsn; @property (nonatomic, strong) NSNumber *dryRun; /** - *

The Internet-routable IP address for the customer gateway's outside interface. The address must be static.

+ *

The Internet-routable IP address for the customer gateway's outside interface. The address must be static.

*/ @property (nonatomic, strong) NSString *publicIp; @@ -1734,7 +1731,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateCustomerGatewayResult : AZModel +@interface AWSEC2CreateCustomerGatewayResult : AWSModel /** @@ -1755,7 +1752,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateDhcpOptionsResult : AZModel +@interface AWSEC2CreateDhcpOptionsResult : AWSModel /** @@ -1772,11 +1769,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Information about one or more block device mappings.

*/ @property (nonatomic, strong) NSArray *blockDeviceMappings; - -/** - *

A description for the new image.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -1785,18 +1778,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *instanceId; /** - *

A name for the new image.

Constraints: 3-128 alphanumeric characters, parenthesis (()), periods (.), slashes (/), dashes (-), or underscores(_)

+ *

A name for the new image.

Constraints: 3-128 alphanumeric characters, parenthesis (()), periods (.), slashes (/), dashes (-), or underscores(_)

*/ @property (nonatomic, strong) NSString *name; /** - *

By default, this parameter is set to false, which means Amazon EC2 attempts to shut down the instance cleanly before image creation and then reboots the instance. When the parameter is set to true, Amazon EC2 doesn't shut down the instance before creating the image. When this option is used, file system integrity on the created image can't be guaranteed.

+ *

By default, this parameter is set to false, which means Amazon EC2 attempts to shut down the instance cleanly before image creation and then reboots the instance. When the parameter is set to true, Amazon EC2 doesn't shut down the instance before creating the image. When this option is used, file system integrity on the created image can't be guaranteed.

*/ @property (nonatomic, strong) NSNumber *noReboot; @end -@interface AWSEC2CreateImageResult : AZModel +@interface AWSEC2CreateImageResult : AWSModel /** @@ -1808,11 +1801,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2CreateInstanceExportTaskRequest : AWSRequest - -/** - *

A description for the conversion task or the resource being exported. The maximum length is 255 bytes.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) AWSEC2ExportToS3TaskSpecification *exportToS3Task; /** @@ -1827,7 +1816,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateInstanceExportTaskResult : AZModel +@interface AWSEC2CreateInstanceExportTaskResult : AWSModel /** @@ -1843,7 +1832,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateInternetGatewayResult : AZModel +@interface AWSEC2CreateInternetGatewayResult : AWSModel /** @@ -1864,16 +1853,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateKeyPairResult : AZModel - - -/** - *

Information about the key pair.

- */ -@property (nonatomic, strong) AWSEC2KeyPair *keyPair; - -@end - @interface AWSEC2CreateNetworkAclEntryRequest : AWSRequest @@ -1914,7 +1893,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2RuleAction ruleAction; /** - *

The rule number for the entry (for example, 100). ACL entries are processed in ascending order by rule number.

Constraints: Positive integer from 1 to 32766

+ *

The rule number for the entry (for example, 100). ACL entries are processed in ascending order by rule number.

Constraints: Positive integer from 1 to 32766

*/ @property (nonatomic, strong) NSNumber *ruleNumber; @@ -1931,7 +1910,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateNetworkAclResult : AZModel +@interface AWSEC2CreateNetworkAclResult : AWSModel /** @@ -1943,11 +1922,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2CreateNetworkInterfaceRequest : AWSRequest - -/** - *

A description for the network interface.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -1956,7 +1931,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *groups; /** - *

The primary private IP address of the network interface. If you don't specify an IP address, Amazon EC2 selects one for you from the subnet range.

+ *

The primary private IP address of the network interface. If you don't specify an IP address, Amazon EC2 selects one for you from the subnet range.

*/ @property (nonatomic, strong) NSString *privateIpAddress; @@ -1966,7 +1941,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *privateIpAddresses; /** - *

The number of secondary private IP addresses to assign to a network interface. When you specify a number of secondary IP addresses, Amazon EC2 selects these IP addresses within the subnet range.

The number of IP addresses you can assign to a network interface varies by instance type. For more information, see Private IP Addresses Per ENI Per Instance Type in the Amazon Elastic Compute Cloud User Guide.

+ *

The number of secondary private IP addresses to assign to a network interface. When you specify a number of secondary IP addresses, Amazon EC2 selects these IP addresses within the subnet range.

The number of IP addresses you can assign to a network interface varies by instance type. For more information, see Private IP Addresses Per ENI Per Instance Type in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSNumber *secondaryPrivateIpAddressCount; @@ -1977,7 +1952,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateNetworkInterfaceResult : AZModel +@interface AWSEC2CreateNetworkInterfaceResult : AWSModel /** @@ -2007,17 +1982,17 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

Unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see Ensuring Idempotency in the Amazon Elastic Compute Cloud User Guide.

+ *

Unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see Ensuring Idempotency in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSString *clientToken; /** - *

The number of instances that are a part of a Reserved Instance account to be listed in the Reserved Instance Marketplace. This number should be less than or equal to the instance count associated with the Reserved Instance ID specified in this call.

+ *

The number of instances that are a part of a Reserved Instance account to be listed in the Reserved Instance Marketplace. This number should be less than or equal to the instance count associated with the Reserved Instance ID specified in this call.

*/ @property (nonatomic, strong) NSNumber *instanceCount; /** - *

A list specifying the price of the Reserved Instance for each month remaining in the Reserved Instance term.

+ *

A list specifying the price of the Reserved Instance for each month remaining in the Reserved Instance term.

*/ @property (nonatomic, strong) NSArray *priceSchedules; @@ -2028,7 +2003,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateReservedInstancesListingResult : AZModel +@interface AWSEC2CreateReservedInstancesListingResult : AWSModel /** @@ -2042,7 +2017,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The CIDR address block used for the destination match. Routing decisions are based on the most specific match.

+ *

The CIDR address block used for the destination match. Routing decisions are based on the most specific match.

*/ @property (nonatomic, strong) NSString *destinationCidrBlock; @property (nonatomic, strong) NSNumber *dryRun; @@ -2053,7 +2028,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *gatewayId; /** - *

The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.

+ *

The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.

*/ @property (nonatomic, strong) NSString *instanceId; @@ -2085,7 +2060,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateRouteTableResult : AZModel +@interface AWSEC2CreateRouteTableResult : AWSModel /** @@ -2097,11 +2072,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2CreateSecurityGroupRequest : AWSRequest - -/** - *

A description for the security group. This is informational only.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -2116,7 +2087,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateSecurityGroupResult : AZModel +@interface AWSEC2CreateSecurityGroupResult : AWSModel /** @@ -2128,11 +2099,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2CreateSnapshotRequest : AWSRequest - -/** - *

A description for the snapshot.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -2142,16 +2109,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateSnapshotResult : AZModel - - -/** - *

Describes a snapshot.

- */ -@property (nonatomic, strong) AWSEC2Snapshot *snapshot; - -@end - @interface AWSEC2CreateSpotDatafeedSubscriptionRequest : AWSRequest @@ -2168,7 +2125,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateSpotDatafeedSubscriptionResult : AZModel +@interface AWSEC2CreateSpotDatafeedSubscriptionResult : AWSModel /** @@ -2182,7 +2139,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The Availability Zone for the subnet.

Default: Amazon EC2 selects one for you (recommended).

+ *

The Availability Zone for the subnet.

Default: Amazon EC2 selects one for you (recommended).

*/ @property (nonatomic, strong) NSString *availabilityZone; @@ -2199,7 +2156,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateSubnetResult : AZModel +@interface AWSEC2CreateSubnetResult : AWSModel /** @@ -2219,13 +2176,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *resources; /** - *

One or more tags. The value parameter is required, but if you don't want the tag to have a value,specify the parameter with no value, and we set the value to an emptystring.

+ *

One or more tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string.

*/ @property (nonatomic, strong) NSArray *tags; @end -@interface AWSEC2CreateVolumePermission : AZModel +@interface AWSEC2CreateVolumePermission : AWSModel /** @@ -2240,7 +2197,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateVolumePermissionModifications : AZModel +@interface AWSEC2CreateVolumePermissionModifications : AWSModel /** @@ -2259,7 +2216,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The Availability Zone in which to create the volume. Use DescribeAvailabilityZones tolist the Availability Zones that are currently available to you.

+ *

The Availability Zone in which to create the volume. Use DescribeAvailabilityZones to list the Availability Zones that are currently available to you.

*/ @property (nonatomic, strong) NSString *availabilityZone; @property (nonatomic, strong) NSNumber *dryRun; @@ -2270,12 +2227,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *encrypted; /** - *

The number of I/O operations per second (IOPS) that the volume supports. This parameter is notused with standard volumes, but is required when the volume type is io1.

+ *

The number of I/O operations per second (IOPS) that the volume supports. This parameter is not used with Magnetic or General Purpose (SSD) volumes, but is required when the volume type is io1.

*/ @property (nonatomic, strong) NSNumber *iops; /** - *

The size of the volume, in GiBs.

Constraints: If the volume type is io1, the minimum size of the volume is 10GiB.

Default: If you're creating the volume from a snapshot and don't specify a volume size, thedefault is the snapshot size.

+ *

The size of the volume, in GiBs.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB.

Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.

*/ @property (nonatomic, strong) NSNumber *size; @@ -2285,22 +2242,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *snapshotId; /** - *

The volume type. This can be standard for standard EBS volumes or io1 for Provisioned IOPS volumes.

Default: standard

+ *

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

Default: standard

*/ @property (nonatomic, assign) AWSEC2VolumeType volumeType; @end -@interface AWSEC2CreateVolumeResult : AZModel - - -/** - *

Describes a volume.

- */ -@property (nonatomic, strong) AWSEC2Volume *volume; - -@end - @interface AWSEC2CreateVpcPeeringConnectionRequest : AWSRequest @property (nonatomic, strong) NSNumber *dryRun; @@ -2322,7 +2269,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateVpcPeeringConnectionResult : AZModel +@interface AWSEC2CreateVpcPeeringConnectionResult : AWSModel /** @@ -2342,13 +2289,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

The supported tenancy options for instances launched into the VPC. A value of default means that instances can be launched with any tenancy; a value of dedicated means all instances launched into the VPC are launched as dedicated tenancy instances regardless of the tenancy assigned to the instance at launch. Dedicated tenancy instances runs on single-tenant hardware.

Default: default

+ *

The supported tenancy options for instances launched into the VPC. A value of default means that instances can be launched with any tenancy; a value of dedicated means all instances launched into the VPC are launched as dedicated tenancy instances regardless of the tenancy assigned to the instance at launch. Dedicated tenancy instances runs on single-tenant hardware.

Default: default

*/ @property (nonatomic, assign) AWSEC2Tenancy instanceTenancy; @end -@interface AWSEC2CreateVpcResult : AZModel +@interface AWSEC2CreateVpcResult : AWSModel /** @@ -2368,7 +2315,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

Indicates whether the VPN connection requires static routes. If you are creating a VPN connection for a device that does not support BGP, you must specify true.

Default: false

+ *

Indicates whether the VPN connection requires static routes. If you are creating a VPN connection for a device that does not support BGP, you must specify true.

Default: false

*/ @property (nonatomic, strong) AWSEC2VpnConnectionOptionsSpecification *options; @@ -2384,7 +2331,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateVpnConnectionResult : AZModel +@interface AWSEC2CreateVpnConnectionResult : AWSModel /** @@ -2425,7 +2372,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2CreateVpnGatewayResult : AZModel +@interface AWSEC2CreateVpnGatewayResult : AWSModel /** @@ -2438,7 +2385,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a customer gateway.

*/ -@interface AWSEC2CustomerGateway : AZModel +@interface AWSEC2CustomerGateway : AWSModel /** @@ -2575,7 +2522,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The CIDR range for the route. The value you specify must match the CIDR for the route exactly.

+ *

The CIDR range for the route. The value you specify must match the CIDR for the route exactly.

*/ @property (nonatomic, strong) NSString *destinationCidrBlock; @property (nonatomic, strong) NSNumber *dryRun; @@ -2652,7 +2599,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *resources; /** - *

One or more tags to delete. If you omit the value parameter, we delete the tag regardlessof its value. If you specify this parameter with an empty string as thevalue, we delete the key only if its value is an empty string.

+ *

One or more tags to delete. If you omit the value parameter, we delete the tag regardless of its value. If you specify this parameter with an empty string as the value, we delete the key only if its value is an empty string.

*/ @property (nonatomic, strong) NSArray *tags; @@ -2680,7 +2627,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DeleteVpcPeeringConnectionResult : AZModel +@interface AWSEC2DeleteVpcPeeringConnectionResult : AWSModel @property (nonatomic, strong) NSNumber *returned; @@ -2756,7 +2703,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeAccountAttributesResult : AZModel +@interface AWSEC2DescribeAccountAttributesResult : AWSModel /** @@ -2787,7 +2734,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeAddressesResult : AZModel +@interface AWSEC2DescribeAddressesResult : AWSModel /** @@ -2802,7 +2749,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • message - Information about the Availability Zone.

  • region-name - The name of the region for the Availability Zone (for example, us-east-1).

  • state - The state of the Availability Zone(available | impaired | unavailable).

  • zone-name - The name of the Availability Zone (for example, us-east-1a).

+ *

One or more filters.

  • message - Information about the Availability Zone.

  • region-name - The name of the region for the Availability Zone (for example, us-east-1).

  • state - The state of the Availability Zone (available | impaired | unavailable).

  • zone-name - The name of the Availability Zone (for example, us-east-1a).

*/ @property (nonatomic, strong) NSArray *filters; @@ -2813,7 +2760,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeAvailabilityZonesResult : AZModel +@interface AWSEC2DescribeAvailabilityZonesResult : AWSModel /** @@ -2833,13 +2780,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • bundle-id - The ID of the bundle task.

  • error-code - If the task failed, the error code returned.

  • error-message - If the task failed, the error message returned.

  • instance-id - The ID of the instance.

  • progress - The level of task completion, as a percentage (for example, 20%).

  • s3-bucket - The Amazon S3 bucket to store the AMI.

  • s3-prefix - The beginning of the AMI name.

  • start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z).

  • state - The state of the task (pending | waiting-for-shutdown | bundling |storing | cancelling | complete | failed).

  • update-time - The time of the most recent update for the task.

+ *

One or more filters.

  • bundle-id - The ID of the bundle task.

  • error-code - If the task failed, the error code returned.

  • error-message - If the task failed, the error message returned.

  • instance-id - The ID of the instance.

  • progress - The level of task completion, as a percentage (for example, 20%).

  • s3-bucket - The Amazon S3 bucket to store the AMI.

  • s3-prefix - The beginning of the AMI name.

  • start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z).

  • state - The state of the task (pending | waiting-for-shutdown | bundling | storing | cancelling | complete | failed).

  • update-time - The time of the most recent update for the task.

*/ @property (nonatomic, strong) NSArray *filters; @end -@interface AWSEC2DescribeBundleTasksResult : AZModel +@interface AWSEC2DescribeBundleTasksResult : AWSModel /** @@ -2861,7 +2808,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeConversionTasksResult : AZModel +@interface AWSEC2DescribeConversionTasksResult : AWSModel @property (nonatomic, strong) NSArray *conversionTasks; @@ -2871,19 +2818,19 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

One or more customer gateway IDs.

Default: Describes all your customer gateways.

+ *

One or more customer gateway IDs.

Default: Describes all your customer gateways.

*/ @property (nonatomic, strong) NSArray *customerGatewayIds; @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

  • customer-gateway-id - The ID of the customer gateway.

  • ip-address - The IP address of the customer gateway's Internet-routable external interface.

  • state - The state of the customer gateway (pending | available | deleting | deleted).

  • type - The type of customer gateway. Currently, the only supported type is ipsec.1.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

+ *

One or more filters.

  • bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

  • customer-gateway-id - The ID of the customer gateway.

  • ip-address - The IP address of the customer gateway's Internet-routable external interface.

  • state - The state of the customer gateway (pending | available | deleting | deleted).

  • type - The type of customer gateway. Currently, the only supported type is ipsec.1.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

*/ @property (nonatomic, strong) NSArray *filters; @end -@interface AWSEC2DescribeCustomerGatewaysResult : AZModel +@interface AWSEC2DescribeCustomerGatewaysResult : AWSModel /** @@ -2897,19 +2844,19 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The IDs of one or more DHCP options sets.

Default: Describes all your DHCP options sets.

+ *

The IDs of one or more DHCP options sets.

Default: Describes all your DHCP options sets.

*/ @property (nonatomic, strong) NSArray *dhcpOptionsIds; @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • dhcp-options-id - The ID of a set of DHCP options.

  • key - The key for one of the options (for example, domain-name).

  • value - The value for one of the options.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

+ *

One or more filters.

  • dhcp-options-id - The ID of a set of DHCP options.

  • key - The key for one of the options (for example, domain-name).

  • value - The value for one of the options.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

*/ @property (nonatomic, strong) NSArray *filters; @end -@interface AWSEC2DescribeDhcpOptionsResult : AZModel +@interface AWSEC2DescribeDhcpOptionsResult : AWSModel /** @@ -2929,7 +2876,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeExportTasksResult : AZModel +@interface AWSEC2DescribeExportTasksResult : AWSModel @property (nonatomic, strong) NSArray *exportTasks; @@ -2951,27 +2898,17 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeImageAttributeResult : AZModel - - -/** - *

Information about the image attribute.

- */ -@property (nonatomic, strong) AWSEC2ImageAttribute *imageAttribute; - -@end - @interface AWSEC2DescribeImagesRequest : AWSRequest @property (nonatomic, strong) NSNumber *dryRun; /** - *

Scopes the images by users with explicit launch permissions. Specify an AWS account ID, self (the sender of the request), or all (public AMIs).

+ *

Scopes the images by users with explicit launch permissions. Specify an AWS account ID, self (the sender of the request), or all (public AMIs).

*/ @property (nonatomic, strong) NSArray *executableUsers; /** - *

One or more filters.

  • architecture - The image architecture (i386 | x86_64).

  • block-device-mapping.delete-on-termination - A Boolean value that indicates whether the Amazon EBS volume is deleted on instance termination.

  • block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

  • block-device-mapping.volume-size - The volume size of the Amazon EBS volume, in GiB.

  • block-device-mapping.volume-type - The volume type of the Amazon EBS volume (standard | io1).

  • description - The description of the image (provided during image creation).

  • hypervisor - The hypervisor type (ovm | xen).

  • image-id - The ID of the image.

  • image-type - The image type (machine | kernel | ramdisk).

  • is-public - A Boolean that indicates whether the image is public.

  • kernel-id - The kernel ID.

  • manifest-location - The location of the image manifest.

  • name - The name of the AMI (provided during image creation).

  • owner-alias - The AWS account alias (for example, amazon).

  • owner-id - The AWS account ID of the image owner.

  • platform - The platform. To only list Windows-based AMIs, use windows.

  • product-code - The product code.

  • product-code.type - The type of the product code (devpay | marketplace).

  • ramdisk-id - The RAM disk ID.

  • root-device-name - The name of the root device volume (for example, /dev/sda1).

  • root-device-type - The type of the root device volume (ebs | instance-store).

  • state - The state of the image (available | pending | failed).

  • state-reason-code - The reason code for the state change.

  • state-reason-message - The message for the state change.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • virtualization-type - The virtualization type (paravirtual | hvm).

+ *

One or more filters.

  • architecture - The image architecture (i386 | x86_64).

  • block-device-mapping.delete-on-termination - A Boolean value that indicates whether the Amazon EBS volume is deleted on instance termination.

  • block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

  • block-device-mapping.volume-size - The volume size of the Amazon EBS volume, in GiB.

  • block-device-mapping.volume-type - The volume type of the Amazon EBS volume (gp2 | standard | io1).

  • description - The description of the image (provided during image creation).

  • hypervisor - The hypervisor type (ovm | xen).

  • image-id - The ID of the image.

  • image-type - The image type (machine | kernel | ramdisk).

  • is-public - A Boolean that indicates whether the image is public.

  • kernel-id - The kernel ID.

  • manifest-location - The location of the image manifest.

  • name - The name of the AMI (provided during image creation).

  • owner-alias - The AWS account alias (for example, amazon).

  • owner-id - The AWS account ID of the image owner.

  • platform - The platform. To only list Windows-based AMIs, use windows.

  • product-code - The product code.

  • product-code.type - The type of the product code (devpay | marketplace).

  • ramdisk-id - The RAM disk ID.

  • root-device-name - The name of the root device volume (for example, /dev/sda1).

  • root-device-type - The type of the root device volume (ebs | instance-store).

  • state - The state of the image (available | pending | failed).

  • state-reason-code - The reason code for the state change.

  • state-reason-message - The message for the state change.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • virtualization-type - The virtualization type (paravirtual | hvm).

*/ @property (nonatomic, strong) NSArray *filters; @@ -2981,13 +2918,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *imageIds; /** - *

Filters the images by the owner. Specify an AWS account ID, amazon (owner is Amazon), aws-marketplace (owner is AWS Marketplace), self (owner is the sender of the request), or all (all owners).

+ *

Filters the images by the owner. Specify an AWS account ID, amazon (owner is Amazon), aws-marketplace (owner is AWS Marketplace), self (owner is the sender of the request), or all (all owners).

*/ @property (nonatomic, strong) NSArray *owners; @end -@interface AWSEC2DescribeImagesResult : AZModel +@interface AWSEC2DescribeImagesResult : AWSModel /** @@ -3013,16 +2950,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeInstanceAttributeResult : AZModel - - -/** - *

Describes an instance attribute.

- */ -@property (nonatomic, strong) AWSEC2InstanceAttribute *instanceAttribute; - -@end - @interface AWSEC2DescribeInstanceStatusRequest : AWSRequest @property (nonatomic, strong) NSNumber *dryRun; @@ -3033,7 +2960,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *filters; /** - *

When true, includes the health status for all instances. When false, includes the health status for running instances only.

Default: false

+ *

When true, includes the health status for all instances. When false, includes the health status for running instances only.

Default: false

*/ @property (nonatomic, strong) NSNumber *includeAllInstances; @@ -3054,7 +2981,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeInstanceStatusResult : AZModel +@interface AWSEC2DescribeInstanceStatusResult : AWSModel /** @@ -3074,7 +3001,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • architecture - The instance architecture (i386 | x86_64).

  • availability-zone - The Availability Zone of the instance.

  • block-device-mapping.attach-time - The attach time for an Amazon EBS volume mapped to the instance.

  • block-device-mapping.delete-on-termination - A Boolean that indicates whether the Amazon EBS volume is deleted on instance termination.

  • block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • block-device-mapping.status - The status for the Amazon EBS volume (attaching | attached | detaching | detached).

  • block-device-mapping.volume-id - The volume ID of the Amazon EBS volume.

  • client-token - The idempotency token you provided when you launched the instance.

  • dns-name - The public DNS name of the instance.

  • group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use group-name instead.

  • group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use group-id instead.

  • hypervisor - The hypervisor type of the instance (ovm | xen).

  • image-id - The ID of the image used to launch the instance.

  • instance-id - The ID of the instance.

  • instance-lifecycle - Indicates whether this is a Spot Instance (spot).

  • instance-state-code - The state of the instance, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented. The valid values are: 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped).

  • instance-state-name - The state of the instance (pending | running | shutting-down | terminated | stopping | stopped).

  • instance-type - The type of instance (for example, m1.small).

  • instance.group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use instance.group-name instead.

  • instance.group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use instance.group-id instead.

  • ip-address - The public IP address of the instance.

  • kernel-id - The kernel ID.

  • key-name - The name of the key pair used when the instance was launched.

  • launch-index - When launching multiple instances, this is the index for the instance in the launch group (for example, 0, 1, 2, and so on).

  • launch-time - The time when the instance was launched.

  • monitoring-state - Indicates whether monitoring is enabled for the instance (disabled | enabled).

  • owner-id - The AWS account ID of the instance owner.

  • placement-group-name - The name of the placement group for the instance.

  • platform - The platform. Use windows if you have Windows instances; otherwise, leave blank.

  • private-dns-name - The private DNS name of the instance.

  • private-ip-address - The private IP address of the instance.

  • product-code - The product code associated with the AMI used to launch the instance.

  • product-code.type - The type of product code (devpay | marketplace).

  • ramdisk-id - The RAM disk ID.

  • reason - The reason for the current state of the instance (for example, shows "User Initiated [date]" when you stop or terminate the instance). Similar to the state-reason-code filter.

  • requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

  • reservation-id - The ID of the instance's reservation. A reservation ID is created any time you launch an instance. A reservation ID has a one-to-one relationship with an instance launch request, but can be associated with more than one instance if you launch multiple instances using the same launch request. For example, if you launch one instance, you'll get one reservation ID. If you launch ten instances using the same launch request, you'll also get one reservation ID.

  • root-device-name - The name of the root device for the instance (for example, /dev/sda1).

  • root-device-type - The type of root device that the instance uses (ebs | instance-store).

  • source-dest-check - Indicates whether the instance performs source/destination checking. A value of true means that checking is enabled, and false means checking is disabled. The value must be false for the instance to perform network address translation (NAT) in your VPC.

  • spot-instance-request-id - The ID of the Spot Instance request.

  • state-reason-code - The reason code for the state change.

  • state-reason-message - A message that describes the state change.

  • subnet-id - The ID of the subnet for the instance.

  • tag:key=value - The key/value combination of a tag assigned to the resource, where tag:key is the tag's key.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • virtualization-type - The virtualization type of the instance (paravirtual | hvm).

  • vpc-id - The ID of the VPC that the instance is running in.

  • network-interface.description - The description of the network interface.

  • network-interface.subnet-id - The ID of the subnet for the network interface.

  • network-interface.vpc-id - The ID of the VPC for the network interface.

  • network-interface.network-interface.id - The ID of the network interface.

  • network-interface.owner-id - The ID of the owner of the network interface.

  • network-interface.availability-zone - The Availability Zone for the network interface.

  • network-interface.requester-id - The requester ID for the network interface.

  • network-interface.requester-managed - Indicates whether the network interface is being managed by AWS.

  • network-interface.status - The status of the network interface (available) | in-use).

  • network-interface.mac-address - The MAC address of the network interface.

  • network-interface-private-dns-name - The private DNS name of the network interface.

  • network-interface.source-destination-check - Whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform network address translation (NAT) in your VPC.

  • network-interface.group-id - The ID of a security group associated with the network interface.

  • network-interface.group-name - The name of a security group associated with the network interface.

  • network-interface.attachment.attachment-id - The ID of the interface attachment.

  • network-interface.attachment.instance-id - The ID of the instance to which the network interface is attached.

  • network-interface.attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

  • network-interface.addresses.private-ip-address - The private IP address associated with the network interface.

  • network-interface.attachment.device-index - The device index to which the network interface is attached.

  • network-interface.attachment.status - The status of the attachment (attaching | attached | detaching | detached).

  • network-interface.attachment.attach-time - The time that the network interface was attached to an instance.

  • network-interface.attachment.delete-on-termination - Specifies whether the attachment is deleted when an instance is terminated.

  • network-interface.addresses.primary - Specifies whether the IP address of the network interface is the primary private IP address.

  • network-interface.addresses.association.public-ip - The ID of the association of an Elastic IP address with a network interface.

  • network-interface.addresses.association.ip-owner-id - The owner ID of the private IP address associated with the network interface.

  • association.public-ip - The address of the Elastic IP address bound to the network interface.

  • association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

  • association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

  • association.association-id - The association ID returned when the network interface was associated with an IP address.

+ *

One or more filters.

  • architecture - The instance architecture (i386 | x86_64).

  • availability-zone - The Availability Zone of the instance.

  • block-device-mapping.attach-time - The attach time for an Amazon EBS volume mapped to the instance.

  • block-device-mapping.delete-on-termination - A Boolean that indicates whether the Amazon EBS volume is deleted on instance termination.

  • block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • block-device-mapping.status - The status for the Amazon EBS volume (attaching | attached | detaching | detached).

  • block-device-mapping.volume-id - The volume ID of the Amazon EBS volume.

  • client-token - The idempotency token you provided when you launched the instance.

  • dns-name - The public DNS name of the instance.

  • group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use group-name instead.

  • group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use group-id instead.

  • hypervisor - The hypervisor type of the instance (ovm | xen).

  • iam-instance-profile.arn - The instance profile associated with the instance. Specified as an ARN.

  • image-id - The ID of the image used to launch the instance.

  • instance-id - The ID of the instance.

  • instance-lifecycle - Indicates whether this is a Spot Instance (spot).

  • instance-state-code - The state of the instance, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented. The valid values are: 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped).

  • instance-state-name - The state of the instance (pending | running | shutting-down | terminated | stopping | stopped).

  • instance-type - The type of instance (for example, m1.small).

  • instance.group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use instance.group-name instead.

  • instance.group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use instance.group-id instead.

  • ip-address - The public IP address of the instance.

  • kernel-id - The kernel ID.

  • key-name - The name of the key pair used when the instance was launched.

  • launch-index - When launching multiple instances, this is the index for the instance in the launch group (for example, 0, 1, 2, and so on).

  • launch-time - The time when the instance was launched.

  • monitoring-state - Indicates whether monitoring is enabled for the instance (disabled | enabled).

  • owner-id - The AWS account ID of the instance owner.

  • placement-group-name - The name of the placement group for the instance.

  • platform - The platform. Use windows if you have Windows instances; otherwise, leave blank.

  • private-dns-name - The private DNS name of the instance.

  • private-ip-address - The private IP address of the instance.

  • product-code - The product code associated with the AMI used to launch the instance.

  • product-code.type - The type of product code (devpay | marketplace).

  • ramdisk-id - The RAM disk ID.

  • reason - The reason for the current state of the instance (for example, shows "User Initiated [date]" when you stop or terminate the instance). Similar to the state-reason-code filter.

  • requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

  • reservation-id - The ID of the instance's reservation. A reservation ID is created any time you launch an instance. A reservation ID has a one-to-one relationship with an instance launch request, but can be associated with more than one instance if you launch multiple instances using the same launch request. For example, if you launch one instance, you'll get one reservation ID. If you launch ten instances using the same launch request, you'll also get one reservation ID.

  • root-device-name - The name of the root device for the instance (for example, /dev/sda1).

  • root-device-type - The type of root device that the instance uses (ebs | instance-store).

  • source-dest-check - Indicates whether the instance performs source/destination checking. A value of true means that checking is enabled, and false means checking is disabled. The value must be false for the instance to perform network address translation (NAT) in your VPC.

  • spot-instance-request-id - The ID of the Spot Instance request.

  • state-reason-code - The reason code for the state change.

  • state-reason-message - A message that describes the state change.

  • subnet-id - The ID of the subnet for the instance.

  • tag:key=value - The key/value combination of a tag assigned to the resource, where tag:key is the tag's key.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • tenancy - The tenancy of an instance (dedicated | default).

  • virtualization-type - The virtualization type of the instance (paravirtual | hvm).

  • vpc-id - The ID of the VPC that the instance is running in.

  • network-interface.description - The description of the network interface.

  • network-interface.subnet-id - The ID of the subnet for the network interface.

  • network-interface.vpc-id - The ID of the VPC for the network interface.

  • network-interface.network-interface.id - The ID of the network interface.

  • network-interface.owner-id - The ID of the owner of the network interface.

  • network-interface.availability-zone - The Availability Zone for the network interface.

  • network-interface.requester-id - The requester ID for the network interface.

  • network-interface.requester-managed - Indicates whether the network interface is being managed by AWS.

  • network-interface.status - The status of the network interface (available) | in-use).

  • network-interface.mac-address - The MAC address of the network interface.

  • network-interface-private-dns-name - The private DNS name of the network interface.

  • network-interface.source-destination-check - Whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform network address translation (NAT) in your VPC.

  • network-interface.group-id - The ID of a security group associated with the network interface.

  • network-interface.group-name - The name of a security group associated with the network interface.

  • network-interface.attachment.attachment-id - The ID of the interface attachment.

  • network-interface.attachment.instance-id - The ID of the instance to which the network interface is attached.

  • network-interface.attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

  • network-interface.addresses.private-ip-address - The private IP address associated with the network interface.

  • network-interface.attachment.device-index - The device index to which the network interface is attached.

  • network-interface.attachment.status - The status of the attachment (attaching | attached | detaching | detached).

  • network-interface.attachment.attach-time - The time that the network interface was attached to an instance.

  • network-interface.attachment.delete-on-termination - Specifies whether the attachment is deleted when an instance is terminated.

  • network-interface.addresses.primary - Specifies whether the IP address of the network interface is the primary private IP address.

  • network-interface.addresses.association.public-ip - The ID of the association of an Elastic IP address with a network interface.

  • network-interface.addresses.association.ip-owner-id - The owner ID of the private IP address associated with the network interface.

  • association.public-ip - The address of the Elastic IP address bound to the network interface.

  • association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

  • association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

  • association.association-id - The association ID returned when the network interface was associated with an IP address.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3095,7 +3022,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeInstancesResult : AZModel +@interface AWSEC2DescribeInstancesResult : AWSModel /** @@ -3115,18 +3042,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • attachment.state - The current state of the attachment between the gateway and the VPC. Present only if a VPC is attached.

  • attachment.vpc-id - The ID of an attached VPC.

  • internet-gateway-id - The ID of the Internet gateway.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

+ *

One or more filters.

  • attachment.state - The current state of the attachment between the gateway and the VPC. Present only if a VPC is attached.

  • attachment.vpc-id - The ID of an attached VPC.

  • internet-gateway-id - The ID of the Internet gateway.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more Internet gateway IDs.

Default: Describes all your Internet gateways.

+ *

One or more Internet gateway IDs.

Default: Describes all your Internet gateways.

*/ @property (nonatomic, strong) NSArray *internetGatewayIds; @end -@interface AWSEC2DescribeInternetGatewaysResult : AZModel +@interface AWSEC2DescribeInternetGatewaysResult : AWSModel /** @@ -3152,7 +3079,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeKeyPairsResult : AZModel +@interface AWSEC2DescribeKeyPairsResult : AWSModel /** @@ -3167,18 +3094,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • association.association-id - The ID of an association ID for the ACL.

  • association.network-acl-id - The ID of the network ACL involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • default - Indicates whether the ACL is the default network ACL for the VPC.

  • entry.cidr - The CIDR range specified in the entry.

  • entry.egress - Indicates whether the entry applies to egress traffic.

  • entry.icmp.code - The ICMP code specified in the entry, if any.

  • entry.icmp.type - The ICMP type specified in the entry, if any.

  • entry.port-range.from - The start of the port range specified in the entry.

  • entry.port-range.to - The end of the port range specified in the entry.

  • entry.protocol - The protocol specified in the entry (tcp | udp | icmp or a protocol number).

  • entry.rule-action - Allows or denies the matching traffic (allow | deny).

  • entry.rule-number - The number of an entry (in other words, rule) in the ACL's set of entries.

  • network-acl-id - The ID of the network ACL.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the network ACL.

+ *

One or more filters.

  • association.association-id - The ID of an association ID for the ACL.

  • association.network-acl-id - The ID of the network ACL involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • default - Indicates whether the ACL is the default network ACL for the VPC.

  • entry.cidr - The CIDR range specified in the entry.

  • entry.egress - Indicates whether the entry applies to egress traffic.

  • entry.icmp.code - The ICMP code specified in the entry, if any.

  • entry.icmp.type - The ICMP type specified in the entry, if any.

  • entry.port-range.from - The start of the port range specified in the entry.

  • entry.port-range.to - The end of the port range specified in the entry.

  • entry.protocol - The protocol specified in the entry (tcp | udp | icmp or a protocol number).

  • entry.rule-action - Allows or denies the matching traffic (allow | deny).

  • entry.rule-number - The number of an entry (in other words, rule) in the ACL's set of entries.

  • network-acl-id - The ID of the network ACL.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the network ACL.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more network ACL IDs.

Default: Describes all your network ACLs.

+ *

One or more network ACL IDs.

Default: Describes all your network ACLs.

*/ @property (nonatomic, strong) NSArray *networkAclIds; @end -@interface AWSEC2DescribeNetworkAclsResult : AZModel +@interface AWSEC2DescribeNetworkAclsResult : AWSModel /** @@ -3192,45 +3119,26 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The attachment attribute.

+ *

The attribute of the network interface.

*/ -@property (nonatomic, strong) NSString *attachment; - -/** - *

The description attribute.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, assign) AWSEC2NetworkInterfaceAttribute attribute; @property (nonatomic, strong) NSNumber *dryRun; -/** - *

The groupSet attribute.

- */ -@property (nonatomic, strong) NSString *groups; - /** *

The ID of the network interface.

*/ @property (nonatomic, strong) NSString *networkInterfaceId; -/** - *

The sourceDestCheck attribute.

- */ -@property (nonatomic, strong) NSString *sourceDestCheck; - @end -@interface AWSEC2DescribeNetworkInterfaceAttributeResult : AZModel +@interface AWSEC2DescribeNetworkInterfaceAttributeResult : AWSModel /** *

The attachment (if any) of the network interface.

*/ @property (nonatomic, strong) AWSEC2NetworkInterfaceAttachment *attachment; - -/** - *

The description of the network interface.

- */ -@property (nonatomic, strong) AWSEC2AttributeValue *description; +@property (nonatomic, strong) AWSEC2AttributeValue *detail; /** *

The security groups associated with the network interface.

@@ -3254,18 +3162,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • addresses.private-ip-address - The private IP addresses associated with the network interface.

  • addresses.primary - Whether the private IP address is the primary IP address associated with the network interface.

  • addresses.association.public-ip - The association ID returned when the network interface was associated with the Elastic IP address.

  • addresses.association.owner-id - The owner ID of the addresses associated with the network interface.

  • association.association-id - The association ID returned when the network interface was associated with an IP address.

  • association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

  • association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

  • association.public-ip - The address of the Elastic IP address bound to the network interface.

  • association.public-dns-name - The public DNS name for the network interface.

  • attachment.attachment-id - The ID of the interface attachment.

  • attachment.instance-id - The ID of the instance to which the network interface is attached.

  • attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

  • attachment.device-index - The device index to which the network interface is attached.

  • attachment.status - The status of the attachment (attaching | attached | detaching | detached).

  • attachment.attach.time - The time that the network interface was attached to an instance.

  • attachment.delete-on-termination - Indicates whether the attachment is deleted when an instance is terminated.

  • availability-zone - The Availability Zone of the network interface.

  • description - The description of the network interface.

  • group-id - The ID of a security group associated with the network interface.

  • group-name - The name of a security group associated with the network interface.

  • mac-address - The MAC address of the network interface.

  • network-interface-id - The ID of the network interface.

  • owner-id - The AWS account ID of the network interface owner.

  • private-ip-address - The private IP address or addresses of the network interface.

  • private-dns-name - The private DNS name of the network interface.

  • requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

  • requester-managed - Indicates whether the network interface is being managed by an AWS service (for example, AWS Management Console, Auto Scaling, and so on).

  • source-desk-check - Indicates whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform Network Address Translation (NAT) in your VPC.

  • status - The status of the network interface. If the network interface is not attached to an instance, the status is available; if a network interface is attached to an instance the status is in-use.

  • subnet-id - The ID of the subnet for the network interface.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the network interface.

+ *

One or more filters.

  • addresses.private-ip-address - The private IP addresses associated with the network interface.

  • addresses.primary - Whether the private IP address is the primary IP address associated with the network interface.

  • addresses.association.public-ip - The association ID returned when the network interface was associated with the Elastic IP address.

  • addresses.association.owner-id - The owner ID of the addresses associated with the network interface.

  • association.association-id - The association ID returned when the network interface was associated with an IP address.

  • association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

  • association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

  • association.public-ip - The address of the Elastic IP address bound to the network interface.

  • association.public-dns-name - The public DNS name for the network interface.

  • attachment.attachment-id - The ID of the interface attachment.

  • attachment.instance-id - The ID of the instance to which the network interface is attached.

  • attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

  • attachment.device-index - The device index to which the network interface is attached.

  • attachment.status - The status of the attachment (attaching | attached | detaching | detached).

  • attachment.attach.time - The time that the network interface was attached to an instance.

  • attachment.delete-on-termination - Indicates whether the attachment is deleted when an instance is terminated.

  • availability-zone - The Availability Zone of the network interface.

  • description - The description of the network interface.

  • group-id - The ID of a security group associated with the network interface.

  • group-name - The name of a security group associated with the network interface.

  • mac-address - The MAC address of the network interface.

  • network-interface-id - The ID of the network interface.

  • owner-id - The AWS account ID of the network interface owner.

  • private-ip-address - The private IP address or addresses of the network interface.

  • private-dns-name - The private DNS name of the network interface.

  • requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

  • requester-managed - Indicates whether the network interface is being managed by an AWS service (for example, AWS Management Console, Auto Scaling, and so on).

  • source-desk-check - Indicates whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform Network Address Translation (NAT) in your VPC.

  • status - The status of the network interface. If the network interface is not attached to an instance, the status is available; if a network interface is attached to an instance the status is in-use.

  • subnet-id - The ID of the subnet for the network interface.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the network interface.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more network interface IDs.

Default: Describes all your network interfaces.

+ *

One or more network interface IDs.

Default: Describes all your network interfaces.

*/ @property (nonatomic, strong) NSArray *networkInterfaceIds; @end -@interface AWSEC2DescribeNetworkInterfacesResult : AZModel +@interface AWSEC2DescribeNetworkInterfacesResult : AWSModel /** @@ -3291,7 +3199,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribePlacementGroupsResult : AZModel +@interface AWSEC2DescribePlacementGroupsResult : AWSModel /** @@ -3317,7 +3225,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeRegionsResult : AZModel +@interface AWSEC2DescribeRegionsResult : AWSModel /** @@ -3331,7 +3239,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

One or more filters.

  • reserved-instances-id - The ID of the Reserved Instances.

  • reserved-instances-listing-id - The ID of the Reserved Instances listing.

  • status - The status of the Reserved Instance listing (pending | active |cancelled | closed).

  • status-message - The reason for the status.

+ *

One or more filters.

  • reserved-instances-id - The ID of the Reserved Instances.

  • reserved-instances-listing-id - The ID of the Reserved Instances listing.

  • status - The status of the Reserved Instance listing (pending | active | cancelled | closed).

  • status-message - The reason for the status.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3347,7 +3255,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeReservedInstancesListingsResult : AZModel +@interface AWSEC2DescribeReservedInstancesListingsResult : AWSModel /** @@ -3361,7 +3269,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

One or more filters.

  • client-token - The idempotency token for the modification request.

  • create-date - The time when the modification request was created.

  • effective-date - The time when the modification becomes effective.

  • modification-result.reserved-instances-id - The ID for the Reserved Instances created as part of the modification request. This ID is only available when the status of the modification is fulfilled.

  • modification-result.target-configuration.availability-zone - The Availability Zone for the new Reserved Instances.

  • modification-result.target-configuration.instance-count - The number of new Reserved Instances.

  • modification-result.target-configuration.instance-type - The instance type of the new Reserved Instances.

  • modification-result.target-configuration.platform - The network platform of the new Reserved Instances (EC2-Classic | EC2-VPC).

  • reserved-instances-id - The ID of the Reserved Instances modified.

  • reserved-instances-modification-id - The ID of the modification request.

  • status - The status of the Reserved Instances modification request(processing | fulfilled | failed).

  • status-message - The reason for the status.

  • update-date - The time when the modification request was last updated.

+ *

One or more filters.

  • client-token - The idempotency token for the modification request.

  • create-date - The time when the modification request was created.

  • effective-date - The time when the modification becomes effective.

  • modification-result.reserved-instances-id - The ID for the Reserved Instances created as part of the modification request. This ID is only available when the status of the modification is fulfilled.

  • modification-result.target-configuration.availability-zone - The Availability Zone for the new Reserved Instances.

  • modification-result.target-configuration.instance-count - The number of new Reserved Instances.

  • modification-result.target-configuration.instance-type - The instance type of the new Reserved Instances.

  • modification-result.target-configuration.platform - The network platform of the new Reserved Instances (EC2-Classic | EC2-VPC).

  • reserved-instances-id - The ID of the Reserved Instances modified.

  • reserved-instances-modification-id - The ID of the modification request.

  • status - The status of the Reserved Instances modification request (processing | fulfilled | failed).

  • status-message - The reason for the status.

  • update-date - The time when the modification request was last updated.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3377,7 +3285,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeReservedInstancesModificationsResult : AZModel +@interface AWSEC2DescribeReservedInstancesModificationsResult : AWSModel /** @@ -3402,7 +3310,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • availability-zone - The Availability Zone where the Reserved Instance can be used.

  • duration - The duration of the Reserved Instance (for example, one year or three years), in seconds.

  • fixed-price - The purchase price of the Reserved Instance (for example, 9800.0).

  • instance-type - The instance type on which the Reserved Instance can be used.

  • marketplace - Set to true to show only Reserved Instance Marketplace offerings. When this filter is not used, which is the default behavior, all offerings from AWS and Reserved Instance Marketplace are listed.

  • product-description - The description of the Reserved Instance (Linux/UNIX | Linux/UNIX (Amazon VPC) |Windows | Windows (Amazon VPC)).

  • reserved-instances-offering-id - The Reserved Instances offering ID.

  • usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84).

+ *

One or more filters.

  • availability-zone - The Availability Zone where the Reserved Instance can be used.

  • duration - The duration of the Reserved Instance (for example, one year or three years), in seconds.

  • fixed-price - The purchase price of the Reserved Instance (for example, 9800.0).

  • instance-type - The instance type on which the Reserved Instance can be used.

  • marketplace - Set to true to show only Reserved Instance Marketplace offerings. When this filter is not used, which is the default behavior, all offerings from AWS and Reserved Instance Marketplace are listed.

  • product-description - The description of the Reserved Instance (Linux/UNIX | Linux/UNIX (Amazon VPC) | Windows | Windows (Amazon VPC)).

  • reserved-instances-offering-id - The Reserved Instances offering ID.

  • usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84).

*/ @property (nonatomic, strong) NSArray *filters; @@ -3412,12 +3320,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *includeMarketplace; /** - *

The tenancy of the Reserved Instance offering. A Reserved Instance with dedicated tenancy runs on single-tenant hardware and can only be launched within a VPC.

Default: default

+ *

The tenancy of the Reserved Instance offering. A Reserved Instance with dedicated tenancy runs on single-tenant hardware and can only be launched within a VPC.

Default: default

*/ @property (nonatomic, assign) AWSEC2Tenancy instanceTenancy; /** - *

The instance type on which the Reserved Instance can be used. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

+ *

The instance type on which the Reserved Instance can be used. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, assign) AWSEC2InstanceType instanceType; @@ -3452,7 +3360,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2OfferingTypeValues offeringType; /** - *

The Reserved Instance description. Instances that include (Amazon VPC)in the description are for use with Amazon VPC.

+ *

The Reserved Instance description. Instances that include (Amazon VPC) in the description are for use with Amazon VPC.

*/ @property (nonatomic, assign) AWSEC2RIProductDescription productDescription; @@ -3463,7 +3371,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeReservedInstancesOfferingsResult : AZModel +@interface AWSEC2DescribeReservedInstancesOfferingsResult : AWSModel /** @@ -3499,7 +3407,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeReservedInstancesResult : AZModel +@interface AWSEC2DescribeReservedInstancesResult : AWSModel /** @@ -3514,18 +3422,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • association.route-table-association-id - The ID of an association ID for the route table.

  • association.route-table-id - The ID of the route table involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • association.main - Indicates whether the route table is the main route table for the VPC.

  • route-table-id - The ID of the route table.

  • route.destination-cidr-block - The CIDR range specified in a route in the table.

  • route.gateway-id - The ID of a gateway specified in a route in the table.

  • route.instance-id - The ID of an instance specified in a route in the table.

  • route.origin - Describes how the route was created (CreateRouteTable | CreateRoute | EnableVgwRoutePropagation).

  • route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on).

  • route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the route table.

+ *

One or more filters.

  • association.route-table-association-id - The ID of an association ID for the route table.

  • association.route-table-id - The ID of the route table involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • association.main - Indicates whether the route table is the main route table for the VPC.

  • route-table-id - The ID of the route table.

  • route.destination-cidr-block - The CIDR range specified in a route in the table.

  • route.gateway-id - The ID of a gateway specified in a route in the table.

  • route.instance-id - The ID of an instance specified in a route in the table.

  • route.origin - Describes how the route was created (CreateRouteTable | CreateRoute | EnableVgwRoutePropagation).

  • route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on).

  • route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the route table.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more route table IDs.

Default: Describes all your route tables.

+ *

One or more route table IDs.

Default: Describes all your route tables.

*/ @property (nonatomic, strong) NSArray *routeTableIds; @end -@interface AWSEC2DescribeRouteTablesResult : AZModel +@interface AWSEC2DescribeRouteTablesResult : AWSModel /** @@ -3540,7 +3448,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • description - The description of the security group.

  • group-id - The ID of the security group.

  • group-name - The name of the security group.

  • ip-permission.cidr - A CIDR range that has been granted permission.

  • ip-permission.from-port - The start of port range for the TCP and UDP protocols, or an ICMP type number.

  • ip-permission.group-id - The ID of a security group that has been granted permission.

  • ip-permission.group-name - The name of a security group that has been granted permission.

  • ip-permission.protocol - The IP protocol for the permission (tcp | udp |icmp or a protocol number).

  • ip-permission.to-port - The end of port range for the TCP and UDP protocols, or an ICMP code.

  • ip-permission.user-id - The ID of an AWS account that has been granted permission.

  • owner-id - The AWS account ID of the owner of the security group.

  • tag-key - The key of a tag assigned to the security group.

  • tag-value - The value of a tag assigned to the security group.

  • vpc-id - The ID of the VPC specified when the security group was created.

+ *

One or more filters.

  • description - The description of the security group.

  • group-id - The ID of the security group.

  • group-name - The name of the security group.

  • ip-permission.cidr - A CIDR range that has been granted permission.

  • ip-permission.from-port - The start of port range for the TCP and UDP protocols, or an ICMP type number.

  • ip-permission.group-id - The ID of a security group that has been granted permission.

  • ip-permission.group-name - The name of a security group that has been granted permission.

  • ip-permission.protocol - The IP protocol for the permission (tcp | udp | icmp or a protocol number).

  • ip-permission.to-port - The end of port range for the TCP and UDP protocols, or an ICMP code.

  • ip-permission.user-id - The ID of an AWS account that has been granted permission.

  • owner-id - The AWS account ID of the owner of the security group.

  • tag-key - The key of a tag assigned to the security group.

  • tag-value - The value of a tag assigned to the security group.

  • vpc-id - The ID of the VPC specified when the security group was created.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3556,7 +3464,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeSecurityGroupsResult : AZModel +@interface AWSEC2DescribeSecurityGroupsResult : AWSModel /** @@ -3582,7 +3490,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeSnapshotAttributeResult : AZModel +@interface AWSEC2DescribeSnapshotAttributeResult : AWSModel /** @@ -3628,7 +3536,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeSnapshotsResult : AZModel +@interface AWSEC2DescribeSnapshotsResult : AWSModel @property (nonatomic, strong) NSArray *snapshots; @@ -3640,7 +3548,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeSpotDatafeedSubscriptionResult : AZModel +@interface AWSEC2DescribeSpotDatafeedSubscriptionResult : AWSModel /** @@ -3655,7 +3563,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • availability-zone-group - The Availability Zone group.

  • create-time - The time stamp when the Spot Instance request was created.

  • fault-code - The fault code related to the request.

  • fault-message - The fault message related to the request.

  • instance-id - The ID of the instance that fulfilled the request.

  • launch-group - The Spot Instance launch group.

  • launch.block-device-mapping.delete-on-termination - Indicates whether the Amazon EBS volume is deleted on instance termination.

  • launch.block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • launch.block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

  • launch.block-device-mapping.volume-size - The size of the Amazon EBS volume, in GiB.

  • launch.block-device-mapping.volume-type - The type of the Amazon EBS volume (standard | io1).

  • launch.group-id - The security group for the instance.

  • launch.image-id - The ID of the AMI.

  • launch.instance-type - The type of instance (for example, m1.small).

  • launch.kernel-id - The kernel ID.

  • launch.key-name - The name of the key pair the instance launched with.

  • launch.monitoring-enabled - Whether monitoring is enabled for the Spot Instance.

  • launch.ramdisk-id - The RAM disk ID.

  • launch.network-interface.network-interface-id - The ID of the network interface.

  • launch.network-interface.device-index - The index of the device for the network interface attachment on the instance.

  • launch.network-interface.subnet-id - The ID of the subnet for the instance.

  • launch.network-interface.description - A description of the network interface.

  • launch.network-interface.private-ip-address - The primary private IP address of the network interface.

  • launch.network-interface.delete-on-termination - Indicates whether the network interface is deleted when the instance is terminated.

  • launch.network-interface.group-id - The ID of the security group associated with the network interface.

  • launch.network-interface.group-name - The name of the security group associated with the network interface.

  • launch.network-interface.addresses.primary - Indicates whether the IP address is the primary private IP address.

  • product-description - The product description associated with the instance (Linux/UNIX | Windows).

  • spot-instance-request-id - The Spot Instance request ID.

  • spot-price - The maximum hourly price for any Spot Instance launched to fulfill the request.

  • state - The state of the Spot Instance request (open | active | closed |cancelled | failed).

  • status-code - The short code describing the most recent evaluation of your Spot Instance request.

  • status-message - The message explaining the status of the Spot Instance request.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of Spot Instance request (one-time | persistent).

  • launched-availability-zone - The Availability Zone in which the bid is launched.

  • valid-from - The start date of the request.

  • valid-until - The end date of the request.

+ *

One or more filters.

  • availability-zone-group - The Availability Zone group.

  • create-time - The time stamp when the Spot Instance request was created.

  • fault-code - The fault code related to the request.

  • fault-message - The fault message related to the request.

  • instance-id - The ID of the instance that fulfilled the request.

  • launch-group - The Spot Instance launch group.

  • launch.block-device-mapping.delete-on-termination - Indicates whether the Amazon EBS volume is deleted on instance termination.

  • launch.block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • launch.block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

  • launch.block-device-mapping.volume-size - The size of the Amazon EBS volume, in GiB.

  • launch.block-device-mapping.volume-type - The type of the Amazon EBS volume (gp2 | standard | io1).

  • launch.group-id - The security group for the instance.

  • launch.image-id - The ID of the AMI.

  • launch.instance-type - The type of instance (for example, m1.small).

  • launch.kernel-id - The kernel ID.

  • launch.key-name - The name of the key pair the instance launched with.

  • launch.monitoring-enabled - Whether monitoring is enabled for the Spot Instance.

  • launch.ramdisk-id - The RAM disk ID.

  • launch.network-interface.network-interface-id - The ID of the network interface.

  • launch.network-interface.device-index - The index of the device for the network interface attachment on the instance.

  • launch.network-interface.subnet-id - The ID of the subnet for the instance.

  • launch.network-interface.description - A description of the network interface.

  • launch.network-interface.private-ip-address - The primary private IP address of the network interface.

  • launch.network-interface.delete-on-termination - Indicates whether the network interface is deleted when the instance is terminated.

  • launch.network-interface.group-id - The ID of the security group associated with the network interface.

  • launch.network-interface.group-name - The name of the security group associated with the network interface.

  • launch.network-interface.addresses.primary - Indicates whether the IP address is the primary private IP address.

  • product-description - The product description associated with the instance (Linux/UNIX | Windows).

  • spot-instance-request-id - The Spot Instance request ID.

  • spot-price - The maximum hourly price for any Spot Instance launched to fulfill the request.

  • state - The state of the Spot Instance request (open | active | closed | cancelled | failed).

  • status-code - The short code describing the most recent evaluation of your Spot Instance request.

  • status-message - The message explaining the status of the Spot Instance request.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of Spot Instance request (one-time | persistent).

  • launched-availability-zone - The Availability Zone in which the bid is launched.

  • valid-from - The start date of the request.

  • valid-until - The end date of the request.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3666,7 +3574,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeSpotInstanceRequestsResult : AZModel +@interface AWSEC2DescribeSpotInstanceRequestsResult : AWSModel /** @@ -3691,7 +3599,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSDate *endTime; /** - *

One or more filters.

  • availability-zone - The Availability Zone for which prices should be returned.

  • instance-type - The type of instance (for example, m1.small).

  • product-description - The product description for the Spot Price(Linux/UNIX | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) | Windows (Amazon VPC)).

  • spot-price - The Spot Price. The value must match exactly (or use wildcards; greater than or less than comparison is not supported).

  • timestamp - The timestamp of the Spot Price history (for example, 2010-08-16T05:06:11.000Z). You can use wildcards (* and ?). Greater than or less than comparison is not supported.

+ *

One or more filters.

  • availability-zone - The Availability Zone for which prices should be returned.

  • instance-type - The type of instance (for example, m1.small).

  • product-description - The product description for the Spot Price (Linux/UNIX | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) | Windows (Amazon VPC)).

  • spot-price - The Spot Price. The value must match exactly (or use wildcards; greater than or less than comparison is not supported).

  • timestamp - The timestamp of the Spot Price history (for example, 2010-08-16T05:06:11.000Z). You can use wildcards (* and ?). Greater than or less than comparison is not supported.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3722,11 +3630,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeSpotPriceHistoryResult : AZModel +@interface AWSEC2DescribeSpotPriceHistoryResult : AWSModel /** - *

The string marking the next set of results. This is empty if there are no more results.

+ *

The string marking the next set of results. This is empty if there are no more results.

*/ @property (nonatomic, strong) NSString *nextToken; @@ -3742,18 +3650,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • availabilityZone - The Availability Zone for the subnet. You can also use availability-zone as the filter name.

  • available-ip-address-count - The number of IP addresses in the subnet that are available.

  • cidrBlock - The CIDR block of the subnet. The CIDR block you specify must exactly match the subnet's CIDR block for information to be returned for the subnet. You can also use cidr or cidr-block as the filter names.

  • defaultForAz - Indicates whether this is the default subnet for the Availability Zone. You can also use default-for-az as the filter name.

  • state - The state of the subnet (pending | available).

  • subnet-id - The ID of the subnet.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the subnet.

+ *

One or more filters.

  • availabilityZone - The Availability Zone for the subnet. You can also use availability-zone as the filter name.

  • available-ip-address-count - The number of IP addresses in the subnet that are available.

  • cidrBlock - The CIDR block of the subnet. The CIDR block you specify must exactly match the subnet's CIDR block for information to be returned for the subnet. You can also use cidr or cidr-block as the filter names.

  • defaultForAz - Indicates whether this is the default subnet for the Availability Zone. You can also use default-for-az as the filter name.

  • state - The state of the subnet (pending | available).

  • subnet-id - The ID of the subnet.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the subnet.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more subnet IDs.

Default: Describes all your subnets.

+ *

One or more subnet IDs.

Default: Describes all your subnets.

*/ @property (nonatomic, strong) NSArray *subnetIds; @end -@interface AWSEC2DescribeSubnetsResult : AZModel +@interface AWSEC2DescribeSubnetsResult : AWSModel /** @@ -3768,7 +3676,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • key - The tag key.

  • resource-id - The resource ID.

  • resource-type - The resource type(customer-gateway | dhcp-options | image | instance | internet-gateway |network-acl |network-interface |reserved-instances |route-table |security-group |snapshot | spot-instances-request |subnet | volume | vpc | vpn-connection | vpn-gateway).

  • value - The tag value.

+ *

One or more filters.

  • key - The tag key.

  • resource-id - The resource ID.

  • resource-type - The resource type (customer-gateway | dhcp-options | image | instance | internet-gateway | network-acl | network-interface | reserved-instances | route-table | security-group | snapshot | spot-instances-request | subnet | volume | vpc | vpn-connection | vpn-gateway).

  • value - The tag value.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3784,7 +3692,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeTagsResult : AZModel +@interface AWSEC2DescribeTagsResult : AWSModel /** @@ -3815,7 +3723,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeVolumeAttributeResult : AZModel +@interface AWSEC2DescribeVolumeAttributeResult : AWSModel /** @@ -3840,7 +3748,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • action.code - The action code for the event (for example, enable-volume-io).

  • action.description - A description of the action.

  • action.event-id - The event ID associated with the action.

  • availability-zone - The Availability Zone of the instance.

  • event.description - A description of the event.

  • event.event-id - The event ID.

  • event.event-type - The event type (for io-enabled: passed | failed;for io-performance: io-performance:degraded | io-performance:severely-degraded | io-performance:stalled).

  • event.not-after - The latest end time for the event.

  • event.not-before - The earliest start time for the event.

  • volume-status.details-name - The cause for volume-status.status (io-enabled | io-performance).

  • volume-status.details-status - The status of volume-status.details-name (for io-enabled: passed | failed;for io-performance: normal | degraded | severely-degraded | stalled).

  • volume-status.status - The status of the volume (ok | impaired | warning | insufficient-data).

+ *

One or more filters.

  • action.code - The action code for the event (for example, enable-volume-io).

  • action.description - A description of the action.

  • action.event-id - The event ID associated with the action.

  • availability-zone - The Availability Zone of the instance.

  • event.description - A description of the event.

  • event.event-id - The event ID.

  • event.event-type - The event type (for io-enabled: passed | failed; for io-performance: io-performance:degraded | io-performance:severely-degraded | io-performance:stalled).

  • event.not-after - The latest end time for the event.

  • event.not-before - The earliest start time for the event.

  • volume-status.details-name - The cause for volume-status.status (io-enabled | io-performance).

  • volume-status.details-status - The status of volume-status.details-name (for io-enabled: passed | failed; for io-performance: normal | degraded | severely-degraded | stalled).

  • volume-status.status - The status of the volume (ok | impaired | warning | insufficient-data).

*/ @property (nonatomic, strong) NSArray *filters; @@ -3861,7 +3769,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeVolumeStatusResult : AZModel +@interface AWSEC2DescribeVolumeStatusResult : AWSModel /** @@ -3881,7 +3789,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • attachment.attach-time - The time stamp when the attachment initiated.

  • attachment.delete-on-termination - Whether the volume is deleted on instance termination.

  • attachment.device - The device name that is exposed to the instance (for example, /dev/sda1).

  • attachment.instance-id - The ID of the instance the volume is attached to.

  • attachment.status - The attachment state (attaching | attached | detaching | detached).

  • availability-zone - The Availability Zone in which the volume was created.

  • create-time - The time stamp when the volume was created.

  • encrypted - The encryption status of the volume.

  • size - The size of the volume, in GiB.

  • snapshot-id - The snapshot from which the volume was created.

  • status - The status of the volume (creating | available | in-use | deleting | deleted | error).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • volume-id - The volume ID.

  • volume-type - The Amazon EBS volume type.This can be standard for standard EBS volumes or io1 for Provisioned IOPS volumes.

+ *

One or more filters.

  • attachment.attach-time - The time stamp when the attachment initiated.

  • attachment.delete-on-termination - Whether the volume is deleted on instance termination.

  • attachment.device - The device name that is exposed to the instance (for example, /dev/sda1).

  • attachment.instance-id - The ID of the instance the volume is attached to.

  • attachment.status - The attachment state (attaching | attached | detaching | detached).

  • availability-zone - The Availability Zone in which the volume was created.

  • create-time - The time stamp when the volume was created.

  • encrypted - The encryption status of the volume.

  • size - The size of the volume, in GiB.

  • snapshot-id - The snapshot from which the volume was created.

  • status - The status of the volume (creating | available | in-use | deleting | deleted | error).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • volume-id - The volume ID.

  • volume-type - The Amazon EBS volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3892,7 +3800,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeVolumesResult : AZModel +@interface AWSEC2DescribeVolumesResult : AWSModel @property (nonatomic, strong) NSArray *volumes; @@ -3914,16 +3822,16 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeVpcAttributeResult : AZModel +@interface AWSEC2DescribeVpcAttributeResult : AWSModel /** - *

Indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.

+ *

Indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *enableDnsHostnames; /** - *

Indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not.

+ *

Indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *enableDnsSupport; @@ -3939,7 +3847,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • accepter-vpc-info.cidr-block - The CIDR block of the peer VPC.

  • accepter-vpc-info.owner-id - The AWS account ID of the owner of the peer VPC.

  • accepter-vpc-info.vpc-id - The ID of the peer VPC.

  • expiration-time - The expiration date and time for the VPC peering connection.

  • requester-vpc-info.cidr-block - The CIDR block of the requester's VPC.

  • requester-vpc-info.owner-id - The AWS account ID of the owner of the requester VPC.

  • requester-vpc-info.vpc-id - The ID of the requester VPC.

  • status-code - The status of the VPC peering connection (pending-acceptance | failed | expired | provisioning | active | deleted | rejected).

  • status-message - A message that provides more information about the status of the VPC peering connection, if applicable.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter.For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned boththe tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is).If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-peering-connection-id - The ID of the VPC peering connection.

+ *

One or more filters.

  • accepter-vpc-info.cidr-block - The CIDR block of the peer VPC.

  • accepter-vpc-info.owner-id - The AWS account ID of the owner of the peer VPC.

  • accepter-vpc-info.vpc-id - The ID of the peer VPC.

  • expiration-time - The expiration date and time for the VPC peering connection.

  • requester-vpc-info.cidr-block - The CIDR block of the requester's VPC.

  • requester-vpc-info.owner-id - The AWS account ID of the owner of the requester VPC.

  • requester-vpc-info.vpc-id - The ID of the requester VPC.

  • status-code - The status of the VPC peering connection (pending-acceptance | failed | expired | provisioning | active | deleted | rejected).

  • status-message - A message that provides more information about the status of the VPC peering connection, if applicable.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-peering-connection-id - The ID of the VPC peering connection.

*/ @property (nonatomic, strong) NSArray *filters; @@ -3950,7 +3858,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DescribeVpcPeeringConnectionsResult : AZModel +@interface AWSEC2DescribeVpcPeeringConnectionsResult : AWSModel /** @@ -3965,18 +3873,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • cidr - The CIDR block of the VPC. The CIDR block you specify must exactly match the VPC's CIDR block for information to be returned for the VPC.

  • dhcp-options-id - The ID of a set of DHCP options.

  • isDefault - Indicates whether the VPC is the default VPC.

  • state - The state of the VPC (pending | available).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC.

+ *

One or more filters.

  • cidr - The CIDR block of the VPC. The CIDR block you specify must exactly match the VPC's CIDR block for information to be returned for the VPC.

  • dhcp-options-id - The ID of a set of DHCP options.

  • isDefault - Indicates whether the VPC is the default VPC.

  • state - The state of the VPC (pending | available).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more VPC IDs.

Default: Describes all your VPCs.

+ *

One or more VPC IDs.

Default: Describes all your VPCs.

*/ @property (nonatomic, strong) NSArray *vpcIds; @end -@interface AWSEC2DescribeVpcsResult : AZModel +@interface AWSEC2DescribeVpcsResult : AWSModel /** @@ -3991,18 +3899,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • customer-gateway-configuration - The configuration information for the customer gateway.

  • customer-gateway-id - The ID of a customer gateway associated with the VPN connection.

  • state - The state of the VPN connection (pending | available | deleting | deleted).

  • option.static-routes-only - Indicates whether the connection has static routes only. Used for devices that do not support Border Gateway Protocol (BGP).

  • route.destination-cidr-block - The destination CIDR block. This corresponds to the subnet used in a customer data center.

  • bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP device.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of VPN connection. Currently the only supported type is ipsec.1.

  • vpn-connection-id - The ID of the VPN connection.

  • vpn-gateway-id - The ID of a virtual private gateway associated with the VPN connection.

+ *

One or more filters.

  • customer-gateway-configuration - The configuration information for the customer gateway.

  • customer-gateway-id - The ID of a customer gateway associated with the VPN connection.

  • state - The state of the VPN connection (pending | available | deleting | deleted).

  • option.static-routes-only - Indicates whether the connection has static routes only. Used for devices that do not support Border Gateway Protocol (BGP).

  • route.destination-cidr-block - The destination CIDR block. This corresponds to the subnet used in a customer data center.

  • bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP device.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of VPN connection. Currently the only supported type is ipsec.1.

  • vpn-connection-id - The ID of the VPN connection.

  • vpn-gateway-id - The ID of a virtual private gateway associated with the VPN connection.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more VPN connection IDs.

Default: Describes your VPN connections.

+ *

One or more VPN connection IDs.

Default: Describes your VPN connections.

*/ @property (nonatomic, strong) NSArray *vpnConnectionIds; @end -@interface AWSEC2DescribeVpnConnectionsResult : AZModel +@interface AWSEC2DescribeVpnConnectionsResult : AWSModel /** @@ -4017,18 +3925,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

One or more filters.

  • attachment.state - The current state of the attachment between the gateway and the VPC (attaching | attached | detaching | detached).

  • attachment.vpc-id - The ID of an attached VPC.

  • availability-zone - The Availability Zone for the virtual private gateway.

  • state - The state of the virtual private gateway (pending | available | deleting | deleted).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of virtual private gateway. Currently the only supported type is ipsec.1.

  • vpn-gateway-id - The ID of the virtual private gateway.

+ *

One or more filters.

  • attachment.state - The current state of the attachment between the gateway and the VPC (attaching | attached | detaching | detached).

  • attachment.vpc-id - The ID of an attached VPC.

  • availability-zone - The Availability Zone for the virtual private gateway.

  • state - The state of the virtual private gateway (pending | available | deleting | deleted).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" and the filter "tag-value=X", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of virtual private gateway. Currently the only supported type is ipsec.1.

  • vpn-gateway-id - The ID of the virtual private gateway.

*/ @property (nonatomic, strong) NSArray *filters; /** - *

One or more virtual private gateway IDs.

Default: Describes all your virtual private gateways.

+ *

One or more virtual private gateway IDs.

Default: Describes all your virtual private gateways.

*/ @property (nonatomic, strong) NSArray *vpnGatewayIds; @end -@interface AWSEC2DescribeVpnGatewaysResult : AZModel +@interface AWSEC2DescribeVpnGatewaysResult : AWSModel /** @@ -4096,16 +4004,6 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DetachVolumeResult : AZModel - - -/** - *

Describes volume attachment details.

- */ -@property (nonatomic, strong) AWSEC2VolumeAttachment *attachment; - -@end - @interface AWSEC2DetachVpnGatewayRequest : AWSRequest @property (nonatomic, strong) NSNumber *dryRun; @@ -4125,7 +4023,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a DHCP configuration option.

*/ -@interface AWSEC2DhcpConfiguration : AZModel +@interface AWSEC2DhcpConfiguration : AWSModel /** @@ -4143,7 +4041,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a set of DHCP options.

*/ -@interface AWSEC2DhcpOptions : AZModel +@interface AWSEC2DhcpOptions : AWSModel /** @@ -4208,9 +4106,9 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a disk image.

*/ -@interface AWSEC2DiskImage : AZModel +@interface AWSEC2DiskImage : AWSModel -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) AWSEC2DiskImageDetail *image; /** @@ -4220,7 +4118,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DiskImageDescription : AZModel +@interface AWSEC2DiskImageDescription : AWSModel /** @@ -4234,7 +4132,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2DiskImageFormat format; /** - *

A presigned URL for the import manifest stored in Amazon S3. For information aboutcreating a presigned URL for an Amazon S3 object, read the"Query String Request Authentication Alternative" section of theAuthenticating REST Requests topic in theAmazon Simple Storage Service Developer Guide.

+ *

A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the "Query String Request Authentication Alternative" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

*/ @property (nonatomic, strong) NSString *importManifestUrl; @@ -4245,7 +4143,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2DiskImageDetail : AZModel +@interface AWSEC2DiskImageDetail : AWSModel @property (nonatomic, strong) NSNumber *bytes; @@ -4255,13 +4153,13 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2DiskImageFormat format; /** - *

A presigned URL for the import manifest stored in Amazon S3. For information aboutcreating a presigned URL for an Amazon S3 object, read the"Query String Request Authentication Alternative" section of theAuthenticating REST Requests topic in theAmazon Simple Storage Service Developer Guide.

+ *

A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the "Query String Request Authentication Alternative" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

*/ @property (nonatomic, strong) NSString *importManifestUrl; @end -@interface AWSEC2DiskImageVolumeDescription : AZModel +@interface AWSEC2DiskImageVolumeDescription : AWSModel /** @@ -4279,7 +4177,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an Amazon EBS block device.

*/ -@interface AWSEC2EbsBlockDevice : AZModel +@interface AWSEC2EbsBlockDevice : AWSModel /** @@ -4293,7 +4191,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *encrypted; /** - *

The number of I/O operations per second (IOPS) that thevolume supports.

Constraint: Range is 100 to 4000.

Condition: Required when the volume type is io1; not used with standard volumes.

+ *

The number of I/O operations per second (IOPS) that the volume supports.

Constraint: Range is 100 to 4000.

Condition: Required when the volume type is io1; not used with standard or gp2 volumes.

*/ @property (nonatomic, strong) NSNumber *iops; @@ -4303,12 +4201,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *snapshotId; /** - *

The size of the volume, in GiB.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB.

Default: If you're creating the volume from a snapshot anddon't specify a volume size, the default is the snapshot size.

+ *

The size of the volume, in GiB.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB.

Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.

*/ @property (nonatomic, strong) NSNumber *volumeSize; /** - *

The volume type.

Default: standard

+ *

The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, and standard for Magnetic volumes.

Default: standard

*/ @property (nonatomic, assign) AWSEC2VolumeType volumeType; @@ -4317,7 +4215,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a parameter used to set up an Amazon EBS volume in a block device mapping.

*/ -@interface AWSEC2EbsInstanceBlockDevice : AZModel +@interface AWSEC2EbsInstanceBlockDevice : AWSModel /** @@ -4342,7 +4240,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2EbsInstanceBlockDeviceSpecification : AZModel +@interface AWSEC2EbsInstanceBlockDeviceSpecification : AWSModel /** @@ -4386,13 +4284,9 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an export task.

*/ -@interface AWSEC2ExportTask : AZModel +@interface AWSEC2ExportTask : AWSModel - -/** - *

A description of the resource being exported.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The ID of the export task.

@@ -4417,7 +4311,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ExportToS3Task : AZModel +@interface AWSEC2ExportToS3Task : AWSModel /** @@ -4431,27 +4325,27 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2DiskImageFormat diskImageFormat; /** - *

The Amazon S3 bucket for the destination image. The destination bucket mustexist and grant WRITE and READ_ACL permissions to the AWS accountvm-import-export@amazon.com.

+ *

The Amazon S3 bucket for the destination image. The destination bucket must exist and grant WRITE and READ_ACL permissions to the AWS account vm-import-export@amazon.com.

*/ @property (nonatomic, strong) NSString *s3Bucket; @property (nonatomic, strong) NSString *s3Key; @end -@interface AWSEC2ExportToS3TaskSpecification : AZModel +@interface AWSEC2ExportToS3TaskSpecification : AWSModel @property (nonatomic, assign) AWSEC2ContainerFormat containerFormat; @property (nonatomic, assign) AWSEC2DiskImageFormat diskImageFormat; @property (nonatomic, strong) NSString *s3Bucket; /** - *

The image is written to a single object in the Amazon S3 bucket at the S3 keys3prefix + exportTaskId + '.' + diskImageFormat.

+ *

The image is written to a single object in the Amazon S3 bucket at the S3 key s3prefix + exportTaskId + '.' + diskImageFormat.

*/ @property (nonatomic, strong) NSString *s3Prefix; @end -@interface AWSEC2Filter : AZModel +@interface AWSEC2Filter : AWSModel /** @@ -4477,7 +4371,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2GetConsoleOutputResult : AZModel +@interface AWSEC2GetConsoleOutputResult : AWSModel /** @@ -4508,7 +4402,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2GetPasswordDataResult : AZModel +@interface AWSEC2GetPasswordDataResult : AWSModel /** @@ -4531,7 +4425,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a security group.

*/ -@interface AWSEC2GroupIdentifier : AZModel +@interface AWSEC2GroupIdentifier : AWSModel /** @@ -4549,7 +4443,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an IAM instance profile.

*/ -@interface AWSEC2IamInstanceProfile : AZModel +@interface AWSEC2IamInstanceProfile : AWSModel /** @@ -4567,7 +4461,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an IAM instance profile.

*/ -@interface AWSEC2IamInstanceProfileSpecification : AZModel +@interface AWSEC2IamInstanceProfileSpecification : AWSModel /** @@ -4585,7 +4479,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the ICMP type and code.

*/ -@interface AWSEC2IcmpTypeCode : AZModel +@interface AWSEC2IcmpTypeCode : AWSModel /** @@ -4603,7 +4497,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an image.

*/ -@interface AWSEC2Image : AZModel +@interface AWSEC2Image : AWSModel /** @@ -4615,11 +4509,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Any block device mapping entries.

*/ @property (nonatomic, strong) NSArray *blockDeviceMappings; - -/** - *

The description of the AMI that was provided during image creation.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The hypervisor type of the image.

@@ -4672,7 +4562,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *productCodes; /** - *

Indicates whether the image has public launch permissions. The value is true if this image has public launch permissions or false if it has only implicit and explicit launch permissions.

+ *

Indicates whether the image has public launch permissions. The value is true if this image has public launch permissions or false if it has only implicit and explicit launch permissions.

*/ @property (nonatomic, strong) NSNumber *public; @@ -4687,7 +4577,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *rootDeviceName; /** - *

The type of root device used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

+ *

The type of root device used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

*/ @property (nonatomic, assign) AWSEC2DeviceType rootDeviceType; @@ -4721,18 +4611,14 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an image attribute.

*/ -@interface AWSEC2ImageAttribute : AZModel +@interface AWSEC2ImageAttribute : AWSModel /** *

One or more block device mapping entries.

*/ @property (nonatomic, strong) NSArray *blockDeviceMappings; - -/** - *

A description for the AMI.

- */ -@property (nonatomic, strong) AWSEC2AttributeValue *description; +@property (nonatomic, strong) AWSEC2AttributeValue *detail; /** *

The ID of the AMI.

@@ -4762,7 +4648,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ImportInstanceLaunchSpecification : AZModel +@interface AWSEC2ImportInstanceLaunchSpecification : AWSModel @property (nonatomic, strong) NSString *additionalInfo; @@ -4777,7 +4663,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *groupNames; /** - *

Indicates whether an instance stops or terminates when you initiateshutdown from the instance (using the operating system command for system shutdown).

+ *

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

*/ @property (nonatomic, assign) AWSEC2ShutdownBehavior instanceInitiatedShutdownBehavior; @@ -4793,12 +4679,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) AWSEC2Placement *placement; /** - *

[EC2-VPC] Optionally, you can use this parameter to assign theinstance a specific available IP address from the IP address range ofthe subnet.

+ *

[EC2-VPC] Optionally, you can use this parameter to assign the instance a specific available IP address from the IP address range of the subnet.

*/ @property (nonatomic, strong) NSString *privateIpAddress; /** - *

[EC2-VPC] The ID of the subnet to launch the instanceinto.

+ *

[EC2-VPC] The ID of the subnet to launch the instance into.

*/ @property (nonatomic, strong) NSString *subnetId; @@ -4811,11 +4697,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2ImportInstanceRequest : AWSRequest - -/** - *

A description for the instance being imported.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSArray *diskImages; @property (nonatomic, strong) NSNumber *dryRun; @@ -4831,7 +4713,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ImportInstanceResult : AZModel +@interface AWSEC2ImportInstanceResult : AWSModel /** @@ -4841,9 +4723,9 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ImportInstanceTaskDetails : AZModel +@interface AWSEC2ImportInstanceTaskDetails : AWSModel -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSString *instanceId; /** @@ -4858,7 +4740,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Describes an import volume task.

* Required parameters: [BytesConverted, AvailabilityZone, Image, Volume, Status] */ -@interface AWSEC2ImportInstanceVolumeDetailItem : AZModel +@interface AWSEC2ImportInstanceVolumeDetailItem : AWSModel /** @@ -4870,7 +4752,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

The number of bytes converted so far.

*/ @property (nonatomic, strong) NSNumber *bytesConverted; -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The image.

@@ -4910,7 +4792,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ImportKeyPairResult : AZModel +@interface AWSEC2ImportKeyPairResult : AWSModel /** @@ -4929,14 +4811,10 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The Availability Zone for the resulting Amazon EBSvolume.

+ *

The Availability Zone for the resulting Amazon EBS volume.

*/ @property (nonatomic, strong) NSString *availabilityZone; - -/** - *

An optional description for the volume being imported.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; @property (nonatomic, strong) AWSEC2DiskImageDetail *image; @@ -4947,7 +4825,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ImportVolumeResult : AZModel +@interface AWSEC2ImportVolumeResult : AWSModel /** @@ -4961,7 +4839,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Describes an import volume task.

* Required parameters: [BytesConverted, AvailabilityZone, Image, Volume] */ -@interface AWSEC2ImportVolumeTaskDetails : AZModel +@interface AWSEC2ImportVolumeTaskDetails : AWSModel /** @@ -4973,11 +4851,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

The number of bytes converted so far.

*/ @property (nonatomic, strong) NSNumber *bytesConverted; - -/** - *

The description you provided when starting the import volume task.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The image.

@@ -4994,7 +4868,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an instance.

*/ -@interface AWSEC2Instance : AZModel +@interface AWSEC2Instance : AWSModel /** @@ -5018,7 +4892,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *clientToken; /** - *

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

+ *

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

*/ @property (nonatomic, strong) NSNumber *ebsOptimized; @@ -5088,7 +4962,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2PlatformValues platform; /** - *

The private DNS name assigned to the instance. This DNS name can only be used inside the Amazon EC2 network. This name is not available until the instance enters the running state.

+ *

The private DNS name assigned to the instance. This DNS name can only be used inside the Amazon EC2 network. This name is not available until the instance enters the running state.

*/ @property (nonatomic, strong) NSString *privateDnsName; @@ -5103,7 +4977,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *productCodes; /** - *

The public DNS name assigned to the instance. This name is not available until the instance enters the running state.

+ *

The public DNS name assigned to the instance. This name is not available until the instance enters the running state.

*/ @property (nonatomic, strong) NSString *publicDnsName; @@ -5123,7 +4997,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *rootDeviceName; /** - *

The root device type used by the AMI. The AMI can use an Amazon EBS volumeor an instance store volume.

+ *

The root device type used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

*/ @property (nonatomic, assign) AWSEC2DeviceType rootDeviceType; @@ -5133,7 +5007,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *securityGroups; /** - *

Specifies whether to enable an instance launched in a VPC to perform NAT. This controls whether source/destination checking is enabled on the instance. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

+ *

Specifies whether to enable an instance launched in a VPC to perform NAT. This controls whether source/destination checking is enabled on the instance. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

*/ @property (nonatomic, strong) NSNumber *sourceDestCheck; @@ -5187,7 +5061,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an instance attribute.

*/ -@interface AWSEC2InstanceAttribute : AZModel +@interface AWSEC2InstanceAttribute : AWSModel /** @@ -5196,7 +5070,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *blockDeviceMappings; /** - *

If the value is true, you can't terminate the instance through the Amazon EC2 console, CLI, or API; otherwise, you can.

+ *

If the value is true, you can't terminate the instance through the Amazon EC2 console, CLI, or API; otherwise, you can.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *disableApiTermination; @@ -5204,6 +5078,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Indicates whether the instance is optimized for EBS I/O.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *ebsOptimized; +@property (nonatomic, strong) NSArray *groups; /** *

The ID of the instance.

@@ -5211,7 +5086,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *instanceId; /** - *

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

+ *

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

*/ @property (nonatomic, strong) AWSEC2AttributeValue *instanceInitiatedShutdownBehavior; @@ -5256,7 +5131,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a block device mapping.

*/ -@interface AWSEC2InstanceBlockDeviceMapping : AZModel +@interface AWSEC2InstanceBlockDeviceMapping : AWSModel /** @@ -5274,7 +5149,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a block device mapping entry.

*/ -@interface AWSEC2InstanceBlockDeviceMappingSpecification : AZModel +@interface AWSEC2InstanceBlockDeviceMappingSpecification : AWSModel /** @@ -5302,7 +5177,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Reserved Instance listing state.

*/ -@interface AWSEC2InstanceCount : AZModel +@interface AWSEC2InstanceCount : AWSModel /** @@ -5320,7 +5195,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an instance export task.

*/ -@interface AWSEC2InstanceExportDetails : AZModel +@interface AWSEC2InstanceExportDetails : AWSModel /** @@ -5338,7 +5213,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the monitoring information of the instance.

*/ -@interface AWSEC2InstanceMonitoring : AZModel +@interface AWSEC2InstanceMonitoring : AWSModel /** @@ -5356,7 +5231,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a network interface.

*/ -@interface AWSEC2InstanceNetworkInterface : AZModel +@interface AWSEC2InstanceNetworkInterface : AWSModel /** @@ -5368,11 +5243,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

The network interface attachment.

*/ @property (nonatomic, strong) AWSEC2InstanceNetworkInterfaceAttachment *attachment; - -/** - *

The description.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

One or more security groups.

@@ -5429,7 +5300,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes association information for an Elastic IP address.

*/ -@interface AWSEC2InstanceNetworkInterfaceAssociation : AZModel +@interface AWSEC2InstanceNetworkInterfaceAssociation : AWSModel /** @@ -5452,7 +5323,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a network interface attachment.

*/ -@interface AWSEC2InstanceNetworkInterfaceAttachment : AZModel +@interface AWSEC2InstanceNetworkInterfaceAttachment : AWSModel /** @@ -5485,11 +5356,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a network interface.

*/ -@interface AWSEC2InstanceNetworkInterfaceSpecification : AZModel +@interface AWSEC2InstanceNetworkInterfaceSpecification : AWSModel /** - *

Indicates whether to auto-assign a public IP address to an instance in a VPC. This public IP address can be assigned to thenetwork interface for eth0 only when you launch the instance. You must create the network interface instead of using an existing network interface for eth0, and you must not specify more than one network interface.

+ *

Indicates whether to auto-assign a public IP address to an instance in a VPC. This public IP address can be assigned to the network interface for eth0 only when you launch the instance. You must create the network interface instead of using an existing network interface for eth0, and you must not specify more than one network interface.

*/ @property (nonatomic, strong) NSNumber *associatePublicIpAddress; @@ -5497,11 +5368,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

If set to true, the interface is deleted when the instance is terminated.

*/ @property (nonatomic, strong) NSNumber *deleteOnTermination; - -/** - *

The description of the network interface.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The index of the device on the instance for the network interface attachment.

@@ -5543,7 +5410,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a private IP address.

*/ -@interface AWSEC2InstancePrivateIpAddress : AZModel +@interface AWSEC2InstancePrivateIpAddress : AWSModel /** @@ -5552,7 +5419,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) AWSEC2InstanceNetworkInterfaceAssociation *association; /** - *

Indicates whether this IP address is the primary private IP address of the network interface.

+ *

Indicates whether this IP address is the primary private IP address of the network interface.

*/ @property (nonatomic, strong) NSNumber *primary; @@ -5571,11 +5438,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the current state of the instance.

*/ -@interface AWSEC2InstanceState : AZModel +@interface AWSEC2InstanceState : AWSModel /** - *

The low byte represents the state. The high byte is an opaque internal value and should be ignored.

  • 0 : pending

  • 16 : running

  • 32 : shutting-down

  • 48 : terminated

  • 64 : stopping

  • 80 : stopped

+ *

The low byte represents the state. The high byte is an opaque internal value and should be ignored.

  • 0 : pending

  • 16 : running

  • 32 : shutting-down

  • 48 : terminated

  • 64 : stopping

  • 80 : stopped

*/ @property (nonatomic, strong) NSNumber *code; @@ -5589,7 +5456,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an instance state change.

*/ -@interface AWSEC2InstanceStateChange : AZModel +@interface AWSEC2InstanceStateChange : AWSModel /** @@ -5612,7 +5479,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the status of an instance.

*/ -@interface AWSEC2InstanceStatus : AZModel +@interface AWSEC2InstanceStatus : AWSModel /** @@ -5631,17 +5498,17 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *instanceId; /** - *

The intended state of the instance. DescribeInstanceStatus requires that an instance be in the running state.

+ *

The intended state of the instance. DescribeInstanceStatus requires that an instance be in the running state.

*/ @property (nonatomic, strong) AWSEC2InstanceState *instanceState; /** - *

Reports impaired functionality that stems from issues internal to the instance, such as impaired reachability.

+ *

Reports impaired functionality that stems from issues internal to the instance, such as impaired reachability.

*/ @property (nonatomic, strong) AWSEC2InstanceStatusSummary *instanceStatus; /** - *

Reports impaired functionality that stems from issues related to the systems that support an instance, such as hardware failures and network connectivity problems.

+ *

Reports impaired functionality that stems from issues related to the systems that support an instance, such as hardware failures and network connectivity problems.

*/ @property (nonatomic, strong) AWSEC2InstanceStatusSummary *systemStatus; @@ -5650,11 +5517,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the instance status.

*/ -@interface AWSEC2InstanceStatusDetails : AZModel +@interface AWSEC2InstanceStatusDetails : AWSModel /** - *

The time when a status check failed. For an instance that was launched and impaired, this is the time when the instance was launched.

+ *

The time when a status check failed. For an instance that was launched and impaired, this is the time when the instance was launched.

*/ @property (nonatomic, strong) NSDate *impairedSince; @@ -5673,18 +5540,14 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an instance event.

*/ -@interface AWSEC2InstanceStatusEvent : AZModel +@interface AWSEC2InstanceStatusEvent : AWSModel /** *

The associated code of the event.

*/ @property (nonatomic, assign) AWSEC2EventCode code; - -/** - *

A description of the event.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The latest scheduled end time for the event.

@@ -5701,7 +5564,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the status of an instance.

*/ -@interface AWSEC2InstanceStatusSummary : AZModel +@interface AWSEC2InstanceStatusSummary : AWSModel /** @@ -5719,7 +5582,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an Internet gateway.

*/ -@interface AWSEC2InternetGateway : AZModel +@interface AWSEC2InternetGateway : AWSModel /** @@ -5742,7 +5605,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the attachment of a VPC to an Internet gateway.

*/ -@interface AWSEC2InternetGatewayAttachment : AZModel +@interface AWSEC2InternetGatewayAttachment : AWSModel /** @@ -5760,16 +5623,16 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a security group rule.

*/ -@interface AWSEC2IpPermission : AZModel +@interface AWSEC2IpPermission : AWSModel /** - *

The start of port range for the TCP and UDP protocols, or an ICMP type number. A value of -1 indicates all ICMP types.

+ *

The start of port range for the TCP and UDP protocols, or an ICMP type number. A value of -1 indicates all ICMP types.

*/ @property (nonatomic, strong) NSNumber *fromPort; /** - *

The protocol.

When you call DescribeSecurityGroups, the protocol value returned is the number. Exception: For TCP, UDP, and ICMP, the value returned is the name (for example, tcp, udp, or icmp). For a list of protocol numbers, see Protocol Numbers.

+ *

The protocol.

When you call DescribeSecurityGroups, the protocol value returned is the number. Exception: For TCP, UDP, and ICMP, the value returned is the name (for example, tcp, udp, or icmp). For a list of protocol numbers, see Protocol Numbers.

*/ @property (nonatomic, strong) NSString *ipProtocol; @@ -5779,7 +5642,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *ipRanges; /** - *

The end of port range for the TCP and UDP protocols, or an ICMP code. A value of -1 indicates all ICMP codes for the specified ICMP type.

+ *

The end of port range for the TCP and UDP protocols, or an ICMP code. A value of -1 indicates all ICMP codes for the specified ICMP type.

*/ @property (nonatomic, strong) NSNumber *toPort; @@ -5793,7 +5656,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an IP range.

*/ -@interface AWSEC2IpRange : AZModel +@interface AWSEC2IpRange : AWSModel /** @@ -5806,7 +5669,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a key pair.

*/ -@interface AWSEC2KeyPair : AZModel +@interface AWSEC2KeyPair : AWSModel /** @@ -5829,11 +5692,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a key pair.

*/ -@interface AWSEC2KeyPairInfo : AZModel +@interface AWSEC2KeyPairInfo : AWSModel /** - *

If you used CreateKeyPair to create the key pair, this is the SHA-1 digest of the DER encoded private key.If you used ImportKeyPair to provide AWS the public key, this is the MD5 public key fingerprint as specified in section 4 of RFC4716.

+ *

If you used CreateKeyPair to create the key pair, this is the SHA-1 digest of the DER encoded private key. If you used ImportKeyPair to provide AWS the public key, this is the MD5 public key fingerprint as specified in section 4 of RFC4716.

*/ @property (nonatomic, strong) NSString *keyFingerprint; @@ -5844,10 +5707,17 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end +@interface AWSEC2LatestDhcpConfiguration : AWSModel + +@property (nonatomic, strong) NSString *key; +@property (nonatomic, strong) NSArray *values; + +@end + /** *

Describes a launch permission.

*/ -@interface AWSEC2LaunchPermission : AZModel +@interface AWSEC2LaunchPermission : AWSModel /** @@ -5865,7 +5735,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a launch permission modification.

*/ -@interface AWSEC2LaunchPermissionModifications : AZModel +@interface AWSEC2LaunchPermissionModifications : AWSModel /** @@ -5883,7 +5753,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the launch specification of a Spot Instance.

*/ -@interface AWSEC2LaunchSpecification : AZModel +@interface AWSEC2LaunchSpecification : AWSModel /** @@ -5897,7 +5767,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *blockDeviceMappings; /** - *

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

+ *

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

*/ @property (nonatomic, strong) NSNumber *ebsOptimized; @@ -5970,11 +5840,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

The name of the attribute to modify.

*/ @property (nonatomic, strong) NSString *attribute; - -/** - *

A description for the AMI.

- */ -@property (nonatomic, strong) AWSEC2AttributeValue *description; +@property (nonatomic, strong) AWSEC2AttributeValue *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -6023,7 +5889,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2InstanceAttributeName attribute; /** - *

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Updating the Block Device Mapping when Launching an Instance in the Amazon Elastic Compute Cloud User Guide.

+ *

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Updating the Block Device Mapping when Launching an Instance in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSArray *blockDeviceMappings; @@ -6034,12 +5900,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

Specifies whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

+ *

Specifies whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *ebsOptimized; /** - *

[EC2-VPC] Changes the security groups of the instance. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name.

For example, if you want the instance to be in sg-1a1a1a1a and sg-9b9b9b9b, specify GroupId.1=sg-1a1a1a1a and GroupId.2=sg-9b9b9b9b.

+ *

[EC2-VPC] Changes the security groups of the instance. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name.

For example, if you want the instance to be in sg-1a1a1a1a and sg-9b9b9b9b, specify GroupId.1=sg-1a1a1a1a and GroupId.2=sg-9b9b9b9b.

*/ @property (nonatomic, strong) NSArray *groups; @@ -6049,12 +5915,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *instanceId; /** - *

Specifies whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

+ *

Specifies whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

*/ @property (nonatomic, strong) AWSEC2AttributeValue *instanceInitiatedShutdownBehavior; /** - *

Changes the instance type to the specified value. For more information, see Instance Types. If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.

+ *

Changes the instance type to the specified value. For more information, see Instance Types. If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.

*/ @property (nonatomic, strong) AWSEC2AttributeValue *instanceType; @@ -6069,7 +5935,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) AWSEC2AttributeValue *ramdisk; /** - *

Specifies whether source/destination checking is enabled. A value of true means that checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

+ *

Specifies whether source/destination checking is enabled. A value of true means that checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *sourceDestCheck; @@ -6097,15 +5963,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

The ID of the interface attachment.

*/ @property (nonatomic, strong) AWSEC2NetworkInterfaceAttachmentChanges *attachment; - -/** - *

A description for the network interface.

- */ -@property (nonatomic, strong) AWSEC2AttributeValue *description; +@property (nonatomic, strong) AWSEC2AttributeValue *detail; @property (nonatomic, strong) NSNumber *dryRun; /** - *

Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it's just the default security group in the VPC. You must specify the ID of the security group, not the name.

+ *

Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it's just the default security group in the VPC. You must specify the ID of the security group, not the name.

*/ @property (nonatomic, strong) NSArray *groups; @@ -6115,7 +5977,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *networkInterfaceId; /** - *

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

+ *

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *sourceDestCheck; @@ -6141,7 +6003,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ModifyReservedInstancesResult : AZModel +@interface AWSEC2ModifyReservedInstancesResult : AWSModel /** @@ -6187,13 +6049,24 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end +@interface AWSEC2ModifySubnetAttributeRequest : AWSRequest + +@property (nonatomic, strong) AWSEC2AttributeBooleanValue *mapPublicIpOnLaunch; + +/** + *

The ID of the subnet.

+ */ +@property (nonatomic, strong) NSString *subnetId; + +@end + @interface AWSEC2ModifyVolumeAttributeRequest : AWSRequest /** *

Indicates whether the volume should be auto-enabled for I/O operations.

*/ -@property (nonatomic, strong) NSNumber *autoEnableIO; +@property (nonatomic, strong) AWSEC2AttributeBooleanValue *autoEnableIO; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -6207,7 +6080,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

Indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.

You can only set enableDnsHostnames to true if you also set the EnableDnsSupport attribute to true.

+ *

Indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.

You can only set enableDnsHostnames to true if you also set the EnableDnsSupport attribute to true.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue *enableDnsHostnames; @@ -6234,7 +6107,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2MonitorInstancesResult : AZModel +@interface AWSEC2MonitorInstancesResult : AWSModel /** @@ -6247,7 +6120,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the monitoring for the instance.

*/ -@interface AWSEC2Monitoring : AZModel +@interface AWSEC2Monitoring : AWSModel /** @@ -6260,7 +6133,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a network ACL.

*/ -@interface AWSEC2NetworkAcl : AZModel +@interface AWSEC2NetworkAcl : AWSModel /** @@ -6298,7 +6171,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an association between a network ACL and a subnet.

*/ -@interface AWSEC2NetworkAclAssociation : AZModel +@interface AWSEC2NetworkAclAssociation : AWSModel /** @@ -6321,7 +6194,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an entry in a network ACL.

*/ -@interface AWSEC2NetworkAclEntry : AZModel +@interface AWSEC2NetworkAclEntry : AWSModel /** @@ -6364,7 +6237,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a network interface.

*/ -@interface AWSEC2NetworkInterface : AZModel +@interface AWSEC2NetworkInterface : AWSModel /** @@ -6381,11 +6254,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

The Availability Zone.

*/ @property (nonatomic, strong) NSString *availabilityZone; - -/** - *

A description.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

Any security groups for the network interface.

@@ -6423,7 +6292,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *privateIpAddresses; /** - *

The ID of the entity that launched the instance on your behalf (for example, AWS Management Console or Auto Scaling).

+ *

The ID of the entity that launched the instance on your behalf (for example, AWS Management Console or Auto Scaling).

*/ @property (nonatomic, strong) NSString *requesterId; @@ -6462,7 +6331,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes association information for an Elastic IP address.

*/ -@interface AWSEC2NetworkInterfaceAssociation : AZModel +@interface AWSEC2NetworkInterfaceAssociation : AWSModel /** @@ -6495,7 +6364,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a network interface attachment.

*/ -@interface AWSEC2NetworkInterfaceAttachment : AZModel +@interface AWSEC2NetworkInterfaceAttachment : AWSModel /** @@ -6538,7 +6407,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an attachment change.

*/ -@interface AWSEC2NetworkInterfaceAttachmentChanges : AZModel +@interface AWSEC2NetworkInterfaceAttachmentChanges : AWSModel /** @@ -6556,7 +6425,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the private IP address of a network interface.

*/ -@interface AWSEC2NetworkInterfacePrivateIpAddress : AZModel +@interface AWSEC2NetworkInterfacePrivateIpAddress : AWSModel /** @@ -6584,7 +6453,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the placement for the instance.

*/ -@interface AWSEC2Placement : AZModel +@interface AWSEC2Placement : AWSModel /** @@ -6598,7 +6467,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *groupName; /** - *

The tenancy of the instance (if the instance is runningin a VPC). An instance with a tenancy of dedicated runson single-tenant hardware.

+ *

The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.

*/ @property (nonatomic, assign) AWSEC2Tenancy tenancy; @@ -6607,7 +6476,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a placement group.

*/ -@interface AWSEC2PlacementGroup : AZModel +@interface AWSEC2PlacementGroup : AWSModel /** @@ -6630,7 +6499,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a range of ports.

*/ -@interface AWSEC2PortRange : AZModel +@interface AWSEC2PortRange : AWSModel /** @@ -6648,16 +6517,16 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the price for a Reserved Instance.

*/ -@interface AWSEC2PriceSchedule : AZModel +@interface AWSEC2PriceSchedule : AWSModel /** - *

The current price schedule, as determined by the term remaining for the Reserved Instance in the listing.

A specific price schedule is always in effect, but only one price schedule can be active at any time. Take, for example, a Reserved Instance listing that has five months remaining in its term. When you specify price schedules for five months and two months, this means that schedule 1, covering the first three months of the remaining term, will be active during months 5, 4, and 3. Then schedule 2, covering the last two months of the term, will be active for months 2 and 1.

+ *

The current price schedule, as determined by the term remaining for the Reserved Instance in the listing.

A specific price schedule is always in effect, but only one price schedule can be active at any time. Take, for example, a Reserved Instance listing that has five months remaining in its term. When you specify price schedules for five months and two months, this means that schedule 1, covering the first three months of the remaining term, will be active during months 5, 4, and 3. Then schedule 2, covering the last two months of the term, will be active for months 2 and 1.

*/ @property (nonatomic, strong) NSNumber *active; /** - *

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

+ *

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

*/ @property (nonatomic, assign) AWSEC2CurrencyCodeValues currencyCode; @@ -6667,7 +6536,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *price; /** - *

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

+ *

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

*/ @property (nonatomic, strong) NSNumber *term; @@ -6676,11 +6545,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the price for a Reserved Instance.

*/ -@interface AWSEC2PriceScheduleSpecification : AZModel +@interface AWSEC2PriceScheduleSpecification : AWSModel /** - *

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

+ *

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

*/ @property (nonatomic, assign) AWSEC2CurrencyCodeValues currencyCode; @@ -6690,7 +6559,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *price; /** - *

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

+ *

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

*/ @property (nonatomic, strong) NSNumber *term; @@ -6699,7 +6568,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Reserved Instance offering.

*/ -@interface AWSEC2PricingDetail : AZModel +@interface AWSEC2PricingDetail : AWSModel /** @@ -6718,7 +6587,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Describes a secondary private IP address for a network interface.

* Required parameters: [PrivateIpAddress] */ -@interface AWSEC2PrivateIpAddressSpecification : AZModel +@interface AWSEC2PrivateIpAddressSpecification : AWSModel /** @@ -6736,7 +6605,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a product code.

*/ -@interface AWSEC2ProductCode : AZModel +@interface AWSEC2ProductCode : AWSModel /** @@ -6754,7 +6623,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a virtual private gateway propagating route.

*/ -@interface AWSEC2PropagatingVgw : AZModel +@interface AWSEC2PropagatingVgw : AWSModel /** @@ -6774,7 +6643,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *instanceCount; /** - *

Specified for Reserved Instance Marketplace offerings to limit the total order and ensure that the Reserved Instances are not purchased at unexpected prices.

+ *

Specified for Reserved Instance Marketplace offerings to limit the total order and ensure that the Reserved Instances are not purchased at unexpected prices.

*/ @property (nonatomic, strong) AWSEC2ReservedInstanceLimitPrice *limitPrice; @@ -6785,7 +6654,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2PurchaseReservedInstancesOfferingResult : AZModel +@interface AWSEC2PurchaseReservedInstancesOfferingResult : AWSModel /** @@ -6809,7 +6678,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a recurring charge.

*/ -@interface AWSEC2RecurringCharge : AZModel +@interface AWSEC2RecurringCharge : AWSModel /** @@ -6827,7 +6696,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a region.

*/ -@interface AWSEC2Region : AZModel +@interface AWSEC2Region : AWSModel /** @@ -6854,11 +6723,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

One or more block device mapping entries.

*/ @property (nonatomic, strong) NSArray *blockDeviceMappings; - -/** - *

A description for your AMI.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -6872,7 +6737,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *kernelId; /** - *

A name for your AMI.

Constraints: 3-128 alphanumeric characters, parenthesis (()), commas (,), slashes (/), dashes (-), or underscores (_)

+ *

A name for your AMI.

Constraints: 3-128 alphanumeric characters, parenthesis (()), commas (,), slashes (/), dashes (-), or underscores (_)

*/ @property (nonatomic, strong) NSString *name; @@ -6882,12 +6747,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *ramdiskId; /** - *

The name of the root device (for example, /dev/sda1, or xvda).

+ *

The name of the root device (for example, /dev/sda1, or xvda).

*/ @property (nonatomic, strong) NSString *rootDeviceName; /** - *

Set to simple to enable enhanced networking for the AMI and any instances that you launch from the AMI.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM AMIs. Specifying this optionwith a PV AMI can make instances launched from the AMI unreachable.

+ *

Set to simple to enable enhanced networking for the AMI and any instances that you launch from the AMI.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM AMIs. Specifying this option with a PV AMI can make instances launched from the AMI unreachable.

*/ @property (nonatomic, strong) NSString *sriovNetSupport; @@ -6898,7 +6763,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2RegisterImageResult : AZModel +@interface AWSEC2RegisterImageResult : AWSModel /** @@ -6919,7 +6784,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2RejectVpcPeeringConnectionResult : AZModel +@interface AWSEC2RejectVpcPeeringConnectionResult : AWSModel @property (nonatomic, strong) NSNumber *returned; @@ -6945,7 +6810,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The ID of the current association between the original network ACL and the subnet.

+ *

The ID of the current association between the original network ACL and the subnet.

*/ @property (nonatomic, strong) NSString *associationId; @property (nonatomic, strong) NSNumber *dryRun; @@ -6957,7 +6822,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ReplaceNetworkAclAssociationResult : AZModel +@interface AWSEC2ReplaceNetworkAclAssociationResult : AWSModel @property (nonatomic, strong) NSString *latestAssociationId; @@ -6973,7 +6838,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

Indicates whether to replace the egress rule.

Default: If no value is specified, we replace the ingress rule.

+ *

Indicates whether to replace the egress rule.

Default: If no value is specified, we replace the ingress rule.

*/ @property (nonatomic, strong) NSNumber *egress; @@ -7013,7 +6878,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The CIDR address block used for the destination match. The value you provide must match the CIDR of an existing route in the table.

+ *

The CIDR address block used for the destination match. The value you provide must match the CIDR of an existing route in the table.

*/ @property (nonatomic, strong) NSString *destinationCidrBlock; @property (nonatomic, strong) NSNumber *dryRun; @@ -7061,7 +6926,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ReplaceRouteTableAssociationResult : AZModel +@interface AWSEC2ReplaceRouteTableAssociationResult : AWSModel @property (nonatomic, strong) NSString *latestAssociationId; @@ -7071,14 +6936,10 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

+ *

Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSString *clientToken; - -/** - *

A description for the new AMI in the destination region.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -7098,7 +6959,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ReplicateImageResult : AZModel +@interface AWSEC2ReplicateImageResult : AWSModel /** @@ -7111,19 +6972,15 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2ReplicateSnapshotRequest : AWSRequest -/** - *

A description for the new Amazon EBS snapshot.

- */ -@property (nonatomic, strong) NSString *description; - /** *

The destination region of the snapshot copy operation. This parameter is required in the PresignedUrl.

*/ @property (nonatomic, strong) NSString *destinationRegion; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** - *

The pre-signed URL that facilitates copying an encrypted snapshot. This parameter is only required when copying an encrypted snapshot with the Amazon EC2 Query API; it is available as an optional parameter in all other cases. The PresignedUrl should use the snapshot source endpoint, the CopySnapshot action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The PresignedUrl must be signed using AWS Signature Version 4. Because Amazon EBS snapshots are stored in Amazon S3, the signing algorithm for this parameter uses the same logic that is described in Authenticating Requests by Using Query Parameters (AWS Signature Version 4) in the Amazon Simple Storage Service API Reference. An invalid or improperly signed PresignedUrl will cause the copy operation to fail asynchronously, and the snapshot will move to an error state.

+ *

The pre-signed URL that facilitates copying an encrypted snapshot. This parameter is only required when copying an encrypted snapshot with the Amazon EC2 Query API; it is available as an optional parameter in all other cases. The PresignedUrl should use the snapshot source endpoint, the CopySnapshot action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The PresignedUrl must be signed using AWS Signature Version 4. Because Amazon EBS snapshots are stored in Amazon S3, the signing algorithm for this parameter uses the same logic that is described in Authenticating Requests by Using Query Parameters (AWS Signature Version 4) in the Amazon Simple Storage Service API Reference. An invalid or improperly signed PresignedUrl will cause the copy operation to fail asynchronously, and the snapshot will move to an error state.

*/ @property (nonatomic, strong) NSString *presignedUrl; @@ -7139,7 +6996,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ReplicateSnapshotResult : AZModel +@interface AWSEC2ReplicateSnapshotResult : AWSModel /** @@ -7151,11 +7008,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2ReportInstanceStatusRequest : AWSRequest - -/** - *

Descriptive text about the health state of your instance.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSNumber *dryRun; /** @@ -7189,7 +7042,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The user-specified name for a logical grouping of bids.

When you specify an Availability Zone group in a Spot Instance request, all Spot Instances in the request are launched in the same Availability Zone. Instance proximity is maintained with this parameter, but the choice of Availability Zone is not. The group applies only to bids for Spot Instances of the same instance type. Any additional Spot Instance requests that are specified with the same Availability Zone group name are launched in that same Availability Zone, as long as at least one instance from the group is still active.

If there is no active instance running in the Availability Zone group that you specify for a new Spot Instance request (all instances are terminated, the bid is expired, or the bid falls below current market), then Amazon EC2 launches the instance in any Availability Zone where the constraint can be met. Consequently, the subsequent set of Spot Instances could be placed in a different zone from the original request, even if you specified the same Availability Zone group.

Default: Instances are launched in any available Availability Zone.

+ *

The user-specified name for a logical grouping of bids.

When you specify an Availability Zone group in a Spot Instance request, all Spot Instances in the request are launched in the same Availability Zone. Instance proximity is maintained with this parameter, but the choice of Availability Zone is not. The group applies only to bids for Spot Instances of the same instance type. Any additional Spot Instance requests that are specified with the same Availability Zone group name are launched in that same Availability Zone, as long as at least one instance from the group is still active.

If there is no active instance running in the Availability Zone group that you specify for a new Spot Instance request (all instances are terminated, the bid is expired, or the bid falls below current market), then Amazon EC2 launches the instance in any Availability Zone where the constraint can be met. Consequently, the subsequent set of Spot Instances could be placed in a different zone from the original request, even if you specified the same Availability Zone group.

Default: Instances are launched in any available Availability Zone.

*/ @property (nonatomic, strong) NSString *availabilityZoneGroup; @property (nonatomic, strong) NSNumber *dryRun; @@ -7200,14 +7053,14 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *instanceCount; /** - *

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

Default: Instances are launched and terminated individually

+ *

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

Default: Instances are launched and terminated individually

*/ @property (nonatomic, strong) NSString *launchGroup; /** - *

The launch specification.

+ *

Describes the launch specification of a Spot Instance.

*/ -@property (nonatomic, strong) AWSEC2LaunchSpecification *launchSpecification; +@property (nonatomic, strong) AWSEC2RequestSpotLaunchSpecification *launchSpecification; /** *

The maximum hourly price for any Spot Instance launched to fulfill the request.

@@ -7220,18 +7073,18 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2SpotInstanceType type; /** - *

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

Default: The request is effective indefinitely.

+ *

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

Default: The request is effective indefinitely.

*/ @property (nonatomic, strong) NSDate *validFrom; /** - *

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date and time is reached.

Default: The request is effective indefinitely.

+ *

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date and time is reached.

Default: The request is effective indefinitely.

*/ @property (nonatomic, strong) NSDate *validUntil; @end -@interface AWSEC2RequestSpotInstancesResult : AZModel +@interface AWSEC2RequestSpotInstancesResult : AWSModel /** @@ -7241,10 +7094,90 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end +/** + *

Describes the launch specification of a Spot Instance.

+ */ +@interface AWSEC2RequestSpotLaunchSpecification : AWSModel + + +/** + *

+ */ +@property (nonatomic, strong) NSString *addressingType; + +/** + *

One or more block device mapping entries.

+ */ +@property (nonatomic, strong) NSArray *blockDeviceMappings; + +/** + *

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

+ */ +@property (nonatomic, strong) NSNumber *ebsOptimized; + +/** + *

The IAM instance profile.

+ */ +@property (nonatomic, strong) AWSEC2IamInstanceProfileSpecification *iamInstanceProfile; + +/** + *

The ID of the AMI.

+ */ +@property (nonatomic, strong) NSString *imageId; + +/** + *

The instance type.

+ */ +@property (nonatomic, assign) AWSEC2InstanceType instanceType; + +/** + *

The ID of the kernel.

+ */ +@property (nonatomic, strong) NSString *kernelId; + +/** + *

The name of the key pair.

+ */ +@property (nonatomic, strong) NSString *keyName; + +/** + *

Describes the monitoring for the instance.

+ */ +@property (nonatomic, strong) AWSEC2RunInstancesMonitoringEnabled *monitoring; + +/** + *

One or more network interfaces.

+ */ +@property (nonatomic, strong) NSArray *networkInterfaces; + +/** + *

The placement information for the instance.

+ */ +@property (nonatomic, strong) AWSEC2SpotPlacement *placement; + +/** + *

The ID of the RAM disk.

+ */ +@property (nonatomic, strong) NSString *ramdiskId; +@property (nonatomic, strong) NSArray *securityGroupIds; +@property (nonatomic, strong) NSArray *securityGroups; + +/** + *

The ID of the subnet in which to launch the Spot Instance.

+ */ +@property (nonatomic, strong) NSString *subnetId; + +/** + *

The Base64-encoded MIME user data to make available to the instances.

+ */ +@property (nonatomic, strong) NSString *userData; + +@end + /** *

Describes a reservation.

*/ -@interface AWSEC2Reservation : AZModel +@interface AWSEC2Reservation : AWSModel /** @@ -7263,7 +7196,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *ownerId; /** - *

The ID of the requester that launched the instances on your behalf (for example, AWS Management Console or Auto Scaling).

+ *

The ID of the requester that launched the instances on your behalf (for example, AWS Management Console or Auto Scaling).

*/ @property (nonatomic, strong) NSString *requesterId; @@ -7277,16 +7210,16 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the limit price of a Reserved Instance offering.

*/ -@interface AWSEC2ReservedInstanceLimitPrice : AZModel +@interface AWSEC2ReservedInstanceLimitPrice : AWSModel /** - *

Used for Reserved Instance Marketplace offerings. Specifies the limit price on the total order (instanceCount * price).

+ *

Used for Reserved Instance Marketplace offerings. Specifies the limit price on the total order (instanceCount * price).

*/ @property (nonatomic, strong) NSNumber *amount; /** - *

The currency in which the limitPrice amount is specified. At this time, the only supported currency is USD.

+ *

The currency in which the limitPrice amount is specified. At this time, the only supported currency is USD.

*/ @property (nonatomic, assign) AWSEC2CurrencyCodeValues currencyCode; @@ -7295,7 +7228,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Reserved Instance.

*/ -@interface AWSEC2ReservedInstances : AZModel +@interface AWSEC2ReservedInstances : AWSModel /** @@ -7304,7 +7237,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *availabilityZone; /** - *

The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

+ *

The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

*/ @property (nonatomic, assign) AWSEC2CurrencyCodeValues currencyCode; @@ -7383,7 +7316,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the configuration settings for the modified Reserved Instances.

*/ -@interface AWSEC2ReservedInstancesConfiguration : AZModel +@interface AWSEC2ReservedInstancesConfiguration : AWSModel /** @@ -7411,7 +7344,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the ID of a Reserved Instance.

*/ -@interface AWSEC2ReservedInstancesId : AZModel +@interface AWSEC2ReservedInstancesId : AWSModel /** @@ -7424,7 +7357,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Reserved Instance listing.

*/ -@interface AWSEC2ReservedInstancesListing : AZModel +@interface AWSEC2ReservedInstancesListing : AWSModel /** @@ -7463,7 +7396,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2ListingStatus status; /** - *

The reason for the current status of the Reserved Instance listing. The response can be blank.

+ *

The reason for the current status of the Reserved Instance listing. The response can be blank.

*/ @property (nonatomic, strong) NSString *statusMessage; @@ -7482,7 +7415,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Reserved Instance modification.

*/ -@interface AWSEC2ReservedInstancesModification : AZModel +@interface AWSEC2ReservedInstancesModification : AWSModel /** @@ -7532,7 +7465,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2ReservedInstancesModificationResult : AZModel +@interface AWSEC2ReservedInstancesModificationResult : AWSModel /** @@ -7550,7 +7483,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Reserved Instance offering.

*/ -@interface AWSEC2ReservedInstancesOffering : AZModel +@interface AWSEC2ReservedInstancesOffering : AWSModel /** @@ -7559,7 +7492,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *availabilityZone; /** - *

The currency of the Reserved Instance offering you are purchasing. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

+ *

The currency of the Reserved Instance offering you are purchasing. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

*/ @property (nonatomic, assign) AWSEC2CurrencyCodeValues currencyCode; @@ -7584,7 +7517,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2InstanceType instanceType; /** - *

Indicates whether the offering is available through the Reserved Instance Marketplace (resale) or AWS.If it's a Reserved Instance Marketplace offering, this is true.

+ *

Indicates whether the offering is available through the Reserved Instance Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering, this is true.

*/ @property (nonatomic, strong) NSNumber *marketplace; @@ -7624,7 +7557,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** - *

The attribute to reset (currently you can only reset the launch permission attribute).

+ *

The attribute to reset (currently you can only reset the launch permission attribute).

*/ @property (nonatomic, assign) AWSEC2ResetImageAttributeName attribute; @property (nonatomic, strong) NSNumber *dryRun; @@ -7662,7 +7595,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *networkInterfaceId; /** - *

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

+ *

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

*/ @property (nonatomic, strong) NSString *sourceDestCheck; @@ -7694,7 +7627,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number,use -1 to specify all ICMP types.

+ *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

*/ @property (nonatomic, strong) NSNumber *fromPort; @@ -7709,7 +7642,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *ipPermissions; /** - *

The IP protocol name (tcp, udp, icmp) or number(see Protocol Numbers).Use -1 to specify all.

+ *

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

*/ @property (nonatomic, strong) NSString *ipProtocol; @@ -7724,7 +7657,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *sourceSecurityGroupOwnerId; /** - *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number,use -1 to specify all ICMP codes for the ICMP type.

+ *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

*/ @property (nonatomic, strong) NSNumber *toPort; @@ -7740,7 +7673,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number,use -1 to specify all ICMP types.

+ *

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

*/ @property (nonatomic, strong) NSNumber *fromPort; @@ -7760,7 +7693,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *ipPermissions; /** - *

The IP protocol name (tcp, udp, icmp) or number(see Protocol Numbers).Use -1 to specify all.

+ *

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

*/ @property (nonatomic, strong) NSString *ipProtocol; @@ -7775,7 +7708,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *sourceSecurityGroupOwnerId; /** - *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number,use -1 to specify all ICMP codes for the ICMP type.

+ *

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

*/ @property (nonatomic, strong) NSNumber *toPort; @@ -7784,7 +7717,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a route in a route table.

*/ -@interface AWSEC2Route : AZModel +@interface AWSEC2Route : AWSModel /** @@ -7818,7 +7751,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2RouteOrigin origin; /** - *

The state of the route. The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, or the specified NAT instance has been terminated).

+ *

The state of the route. The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, or the specified NAT instance has been terminated).

*/ @property (nonatomic, assign) AWSEC2RouteState state; @@ -7832,7 +7765,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a route table.

*/ -@interface AWSEC2RouteTable : AZModel +@interface AWSEC2RouteTable : AWSModel /** @@ -7870,7 +7803,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an association between a route table and a subnet.

*/ -@interface AWSEC2RouteTableAssociation : AZModel +@interface AWSEC2RouteTableAssociation : AWSModel /** @@ -7899,7 +7832,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Describes the monitoring for the instance.

* Required parameters: [Enabled] */ -@interface AWSEC2RunInstancesMonitoringEnabled : AZModel +@interface AWSEC2RunInstancesMonitoringEnabled : AWSModel /** @@ -7911,6 +7844,10 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2RunInstancesRequest : AWSRequest + +/** + *

Reserved.

+ */ @property (nonatomic, strong) NSString *additionalInfo; /** @@ -7919,7 +7856,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *blockDeviceMappings; /** - *

Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information,see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

Constraints: Maximum 64 ASCII characters

+ *

Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

Constraints: Maximum 64 ASCII characters

*/ @property (nonatomic, strong) NSString *clientToken; @@ -7930,7 +7867,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

Indicates whether the instance is optimized for EBS I/O. This optimizationprovides dedicated throughput to Amazon EBS and an optimizedconfiguration stack to provide optimal Amazon EBS I/O performance. Thisoptimization isn't available with all instance types. Additional usagecharges apply when using an EBS-optimized instance.

Default: false

+ *

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.

Default: false

*/ @property (nonatomic, strong) NSNumber *ebsOptimized; @@ -7945,7 +7882,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *imageId; /** - *

Indicates whether an instance stops or terminates when you initiateshutdown from the instance (using the operating system command for system shutdown).

Default: stop

+ *

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

Default: stop

*/ @property (nonatomic, assign) AWSEC2ShutdownBehavior instanceInitiatedShutdownBehavior; @@ -7955,7 +7892,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2InstanceType instanceType; /** - *

The ID of the kernel.

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB: A New Amazon Kernel Image in the Amazon Elastic Compute Cloud User Guide.

+ *

The ID of the kernel.

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB: A New Amazon Kernel Image in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, strong) NSString *kernelId; @@ -7965,12 +7902,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *keyName; /** - *

The maximum number of instances to launch. If you specify more instancesthan Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches thelargest possible number of instances above MinCount.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see Howmany instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

+ *

The maximum number of instances to launch. If you specify more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches the largest possible number of instances above MinCount.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

*/ @property (nonatomic, strong) NSNumber *maxCount; /** - *

The minimum number of instances to launch. If you specify a minimum that is more instancesthan Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches no instances.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see Howmany instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

+ *

The minimum number of instances to launch. If you specify a minimum that is more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches no instances.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

*/ @property (nonatomic, strong) NSNumber *minCount; @@ -7990,7 +7927,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) AWSEC2Placement *placement; /** - *

[EC2-VPC] The primary IP address. You must specify a valuefrom the IP address range of the subnet.

Only one private IP address can be designated as primary.Therefore, you can't specify this parameter ifPrivateIpAddresses.n.Primary is set totrue and PrivateIpAddresses.n.PrivateIpAddressis set to an IP address.

Default: We select an IP address from the IP address range of the subnet.

+ *

[EC2-VPC] The primary IP address. You must specify a value from the IP address range of the subnet.

Only one private IP address can be designated as primary. Therefore, you can't specify this parameter if PrivateIpAddresses.n.Primary is set to true and PrivateIpAddresses.n.PrivateIpAddress is set to an IP address.

Default: We select an IP address from the IP address range of the subnet.

*/ @property (nonatomic, strong) NSString *privateIpAddress; @@ -8005,7 +7942,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSArray *securityGroupIds; /** - *

[EC2-Classic, default VPC] One or more security group names. For a nondefault VPC, you must usesecurity group IDs instead.

Default: Amazon EC2 uses the default security group.

+ *

[EC2-Classic, default VPC] One or more security group names. For a nondefault VPC, you must use security group IDs instead.

Default: Amazon EC2 uses the default security group.

*/ @property (nonatomic, strong) NSArray *securityGroups; @@ -8021,27 +7958,14 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -/** - *

The result of the RunInstances call.

- */ -@interface AWSEC2RunInstancesResult : AZModel - - -/** - *

One or more reservations.

- */ -@property (nonatomic, strong) AWSEC2Reservation *reservation; - -@end - /** *

Describes the S3 bucket for an instance store-backed AMI.

*/ -@interface AWSEC2S3Storage : AZModel +@interface AWSEC2S3Storage : AWSModel /** - *

The access key ID of the owner of the bucket. Before you specify a value for your access key ID, review and follow the guidancein Best Practices for Managing AWS Access Keys.

+ *

The access key ID of the owner of the bucket. Before you specify a value for your access key ID, review and follow the guidance in Best Practices for Managing AWS Access Keys.

*/ @property (nonatomic, strong) NSString *AWSAccessKeyId; @@ -8070,13 +7994,9 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a security group

*/ -@interface AWSEC2SecurityGroup : AZModel - +@interface AWSEC2SecurityGroup : AWSModel -/** - *

A description of the security group.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The ID of the security group.

@@ -8118,13 +8038,9 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a snapshot.

*/ -@interface AWSEC2Snapshot : AZModel +@interface AWSEC2Snapshot : AWSModel - -/** - *

The description for the snapshot.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

Indicates whether the snapshot is encrypted.

@@ -8181,7 +8097,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the datafeed for a Spot Instance.

*/ -@interface AWSEC2SpotDatafeedSubscription : AZModel +@interface AWSEC2SpotDatafeedSubscription : AWSModel /** @@ -8214,11 +8130,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describe a Spot Instance request.

*/ -@interface AWSEC2SpotInstanceRequest : AZModel +@interface AWSEC2SpotInstanceRequest : AWSModel /** - *

The Availability Zone group. If you specify the same Availability Zone group for all Spot Instance requests, all Spot Instances are launched in the same Availability Zone.

+ *

The Availability Zone group. If you specify the same Availability Zone group for all Spot Instance requests, all Spot Instances are launched in the same Availability Zone.

*/ @property (nonatomic, strong) NSString *availabilityZoneGroup; @@ -8233,12 +8149,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) AWSEC2SpotInstanceStateFault *fault; /** - *

The instance ID, if an instance has been launched to fulfill the Spot Instance request.

+ *

The instance ID, if an instance has been launched to fulfill the Spot Instance request.

*/ @property (nonatomic, strong) NSString *instanceId; /** - *

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

+ *

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

*/ @property (nonatomic, strong) NSString *launchGroup; @@ -8268,7 +8184,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *spotPrice; /** - *

The state of the Spot Instance request. Spot bid status information can help you track your Spot Instance requests. For information, see Tracking Spot Requests with Bid Status Codes in the Amazon Elastic Compute Cloud User Guide.

+ *

The state of the Spot Instance request. Spot bid status information can help you track your Spot Instance requests. For information, see Tracking Spot Requests with Bid Status Codes in the Amazon Elastic Compute Cloud User Guide.

*/ @property (nonatomic, assign) AWSEC2SpotInstanceState state; @@ -8288,12 +8204,12 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, assign) AWSEC2SpotInstanceType type; /** - *

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

+ *

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

*/ @property (nonatomic, strong) NSDate *validFrom; /** - *

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date is reached.

+ *

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date is reached.

*/ @property (nonatomic, strong) NSDate *validUntil; @@ -8302,7 +8218,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Spot Instance state change.

*/ -@interface AWSEC2SpotInstanceStateFault : AZModel +@interface AWSEC2SpotInstanceStateFault : AWSModel /** @@ -8320,7 +8236,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a Spot Instance request.

*/ -@interface AWSEC2SpotInstanceStatus : AZModel +@interface AWSEC2SpotInstanceStatus : AWSModel /** @@ -8343,7 +8259,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes Spot Instance placement.

*/ -@interface AWSEC2SpotPlacement : AZModel +@interface AWSEC2SpotPlacement : AWSModel /** @@ -8361,7 +8277,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the Spot Price.

*/ -@interface AWSEC2SpotPrice : AZModel +@interface AWSEC2SpotPrice : AWSModel /** @@ -8393,6 +8309,10 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @interface AWSEC2StartInstancesRequest : AWSRequest + +/** + *

Reserved.

+ */ @property (nonatomic, strong) NSString *additionalInfo; @property (nonatomic, strong) NSNumber *dryRun; @@ -8403,7 +8323,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2StartInstancesResult : AZModel +@interface AWSEC2StartInstancesResult : AWSModel /** @@ -8416,7 +8336,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a state change.

*/ -@interface AWSEC2StateReason : AZModel +@interface AWSEC2StateReason : AWSModel /** @@ -8436,7 +8356,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSNumber *dryRun; /** - *

Forces the instances to stop. The instances do not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances.

Default: false

+ *

Forces the instances to stop. The instances do not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances.

Default: false

*/ @property (nonatomic, strong) NSNumber *force; @@ -8447,7 +8367,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2StopInstancesResult : AZModel +@interface AWSEC2StopInstancesResult : AWSModel /** @@ -8460,7 +8380,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the storage location for an instance store-backed AMI.

*/ -@interface AWSEC2Storage : AZModel +@interface AWSEC2Storage : AWSModel /** @@ -8473,7 +8393,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a subnet.

*/ -@interface AWSEC2Subnet : AZModel +@interface AWSEC2Subnet : AWSModel /** @@ -8482,7 +8402,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *availabilityZone; /** - *

The number of unused IP addresses in the subnet. Note that the IP addresses for any stopped instances are considered unavailable.

+ *

The number of unused IP addresses in the subnet. Note that the IP addresses for any stopped instances are considered unavailable.

*/ @property (nonatomic, strong) NSNumber *availableIpAddressCount; @@ -8526,16 +8446,16 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a tag.

*/ -@interface AWSEC2Tag : AZModel +@interface AWSEC2Tag : AWSModel /** - *

The key of the tag.

Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicodecharacters. May not begin with aws:

+ *

The key of the tag.

Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:

*/ @property (nonatomic, strong) NSString *key; /** - *

The value of the tag.

Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicodecharacters.

+ *

The value of the tag.

Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.

*/ @property (nonatomic, strong) NSString *value; @@ -8544,7 +8464,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a tag.

*/ -@interface AWSEC2TagDescription : AZModel +@interface AWSEC2TagDescription : AWSModel /** @@ -8580,7 +8500,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2TerminateInstancesResult : AZModel +@interface AWSEC2TerminateInstancesResult : AWSModel /** @@ -8599,7 +8519,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *networkInterfaceId; /** - *

The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address.

+ *

The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address.

*/ @property (nonatomic, strong) NSArray *privateIpAddresses; @@ -8616,7 +8536,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @end -@interface AWSEC2UnmonitorInstancesResult : AZModel +@interface AWSEC2UnmonitorInstancesResult : AWSModel /** @@ -8629,7 +8549,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a security group and AWS account ID pair for EC2-Classic.

*/ -@interface AWSEC2UserIdGroupPair : AZModel +@interface AWSEC2UserIdGroupPair : AWSModel /** @@ -8652,7 +8572,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes telemetry for a VPN tunnel.

*/ -@interface AWSEC2VgwTelemetry : AZModel +@interface AWSEC2VgwTelemetry : AWSModel /** @@ -8685,7 +8605,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a volume.

*/ -@interface AWSEC2Volume : AZModel +@interface AWSEC2Volume : AWSModel @property (nonatomic, strong) NSArray *attachments; @@ -8735,7 +8655,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *volumeId; /** - *

The volume type. This can be standard for standard EBS volumes or io1 for Provisioned IOPS volumes.

+ *

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

*/ @property (nonatomic, assign) AWSEC2VolumeType volumeType; @@ -8744,7 +8664,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes volume attachment details.

*/ -@interface AWSEC2VolumeAttachment : AZModel +@interface AWSEC2VolumeAttachment : AWSModel /** @@ -8783,11 +8703,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { *

Describes an Amazon EBS volume.

* Required parameters: [Size] */ -@interface AWSEC2VolumeDetail : AZModel +@interface AWSEC2VolumeDetail : AWSModel /** - *

The size of the volume.

+ *

The size of the volume, in GiB.

*/ @property (nonatomic, strong) NSNumber *size; @@ -8796,18 +8716,14 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a volume status operation code.

*/ -@interface AWSEC2VolumeStatusAction : AZModel +@interface AWSEC2VolumeStatusAction : AWSModel /** *

The code identifying the operation, for example, enable-volume-io.

*/ @property (nonatomic, strong) NSString *code; - -/** - *

A description of the operation.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The ID of the event associated with this operation.

@@ -8824,7 +8740,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a volume status.

*/ -@interface AWSEC2VolumeStatusDetails : AZModel +@interface AWSEC2VolumeStatusDetails : AWSModel /** @@ -8842,13 +8758,9 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a volume status event.

*/ -@interface AWSEC2VolumeStatusEvent : AZModel - +@interface AWSEC2VolumeStatusEvent : AWSModel -/** - *

A description of the event.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; /** *

The ID of this event.

@@ -8875,7 +8787,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the status of a volume.

*/ -@interface AWSEC2VolumeStatusInfo : AZModel +@interface AWSEC2VolumeStatusInfo : AWSModel /** @@ -8893,7 +8805,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the volume status.

*/ -@interface AWSEC2VolumeStatusItem : AZModel +@interface AWSEC2VolumeStatusItem : AWSModel /** @@ -8926,7 +8838,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a VPC.

*/ -@interface AWSEC2Vpc : AZModel +@interface AWSEC2Vpc : AWSModel /** @@ -8935,7 +8847,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { @property (nonatomic, strong) NSString *cidrBlock; /** - *

The ID of the set of DHCP options you've associated with the VPC (or default if the default options are associated with the VPC).

+ *

The ID of the set of DHCP options you've associated with the VPC (or default if the default options are associated with the VPC).

*/ @property (nonatomic, strong) NSString *dhcpOptionsId; @@ -8969,7 +8881,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes an attachment between a virtual private gateway and a VPC.

*/ -@interface AWSEC2VpcAttachment : AZModel +@interface AWSEC2VpcAttachment : AWSModel /** @@ -8987,7 +8899,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a VPC peering connection.

*/ -@interface AWSEC2VpcPeeringConnection : AZModel +@interface AWSEC2VpcPeeringConnection : AWSModel /** @@ -9025,7 +8937,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes the status of a VPC peering connection.

*/ -@interface AWSEC2VpcPeeringConnectionStateReason : AZModel +@interface AWSEC2VpcPeeringConnectionStateReason : AWSModel /** @@ -9043,7 +8955,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a VPC in a VPC peering connection.

*/ -@interface AWSEC2VpcPeeringConnectionVpcInfo : AZModel +@interface AWSEC2VpcPeeringConnectionVpcInfo : AWSModel /** @@ -9066,11 +8978,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a VPN connection.

*/ -@interface AWSEC2VpnConnection : AZModel +@interface AWSEC2VpnConnection : AWSModel /** - *

The configuration information for the VPN connection's customer gateway (in the native XML format). This element is always present in the CreateVpnConnection response; however, it's present in the DescribeVpnConnections response only if the VPN connection is in the pending or available state.

+ *

The configuration information for the VPN connection's customer gateway (in the native XML format). This element is always present in the CreateVpnConnection response; however, it's present in the DescribeVpnConnections response only if the VPN connection is in the pending or available state.

*/ @property (nonatomic, strong) NSString *customerGatewayConfiguration; @@ -9124,11 +9036,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes VPN connection options.

*/ -@interface AWSEC2VpnConnectionOptions : AZModel +@interface AWSEC2VpnConnectionOptions : AWSModel /** - *

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

+ *

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

*/ @property (nonatomic, strong) NSNumber *staticRoutesOnly; @@ -9137,11 +9049,11 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes VPN connection options.

*/ -@interface AWSEC2VpnConnectionOptionsSpecification : AZModel +@interface AWSEC2VpnConnectionOptionsSpecification : AWSModel /** - *

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

+ *

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

*/ @property (nonatomic, strong) NSNumber *staticRoutesOnly; @@ -9150,7 +9062,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a virtual private gateway.

*/ -@interface AWSEC2VpnGateway : AZModel +@interface AWSEC2VpnGateway : AWSModel /** @@ -9188,7 +9100,7 @@ typedef NS_ENUM(NSInteger, AWSEC2VpnStaticRouteSource) { /** *

Describes a static route for a VPN connection.

*/ -@interface AWSEC2VpnStaticRoute : AZModel +@interface AWSEC2VpnStaticRoute : AWSModel /** diff --git a/EC2/AWSEC2Model.m b/EC2/AWSEC2Model.m index a13440b8a61..de1e2e78661 100644 --- a/EC2/AWSEC2Model.m +++ b/EC2/AWSEC2Model.m @@ -14,7 +14,7 @@ */ #import "AWSEC2Model.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSEC2ErrorDomain = @"com.amazonaws.AWSEC2ErrorDomain"; @@ -295,20 +295,6 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end -@implementation AWSEC2AttachVolumeResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"attachment" : @"Attachment", - }; -} - -+ (NSValueTransformer *)attachmentJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2VolumeAttachment class]]; -} - -@end - @implementation AWSEC2AttachVpnGatewayRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -522,9 +508,9 @@ + (NSValueTransformer *)bundleTaskErrorJSONTransformer { + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -581,9 +567,9 @@ + (NSValueTransformer *)storageJSONTransformer { + (NSValueTransformer *)updateTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -880,7 +866,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { } + (NSValueTransformer *)dhcpConfigurationsJSONTransformer { - return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSEC2DhcpConfiguration class]]; + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSEC2LatestDhcpConfiguration class]]; } @end @@ -904,7 +890,7 @@ @implementation AWSEC2CreateImageRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"blockDeviceMappings" : @"BlockDeviceMappings", - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"instanceId" : @"InstanceId", @"name" : @"Name", @@ -932,7 +918,7 @@ @implementation AWSEC2CreateInstanceExportTaskRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"exportToS3Task" : @"ExportToS3Task", @"instanceId" : @"InstanceId", @"targetEnvironment" : @"TargetEnvironment", @@ -1021,20 +1007,6 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end -@implementation AWSEC2CreateKeyPairResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"keyPair" : @"KeyPair", - }; -} - -+ (NSValueTransformer *)keyPairJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2KeyPair class]]; -} - -@end - @implementation AWSEC2CreateNetworkAclEntryRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -1112,7 +1084,7 @@ @implementation AWSEC2CreateNetworkInterfaceRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"groups" : @"Groups", @"privateIpAddress" : @"PrivateIpAddress", @@ -1247,7 +1219,7 @@ @implementation AWSEC2CreateSecurityGroupRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"groupName" : @"GroupName", @"vpcId" : @"VpcId", @@ -1270,7 +1242,7 @@ @implementation AWSEC2CreateSnapshotRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"volumeId" : @"VolumeId", }; @@ -1278,20 +1250,6 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end -@implementation AWSEC2CreateSnapshotResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"snapshot" : @"Snapshot", - }; -} - -+ (NSValueTransformer *)snapshotJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2Snapshot class]]; -} - -@end - @implementation AWSEC2CreateSpotDatafeedSubscriptionRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -1430,6 +1388,9 @@ + (NSValueTransformer *)volumeTypeJSONTransformer { if ([value isEqualToString:@"io1"]) { return @(AWSEC2VolumeTypeIO1); } + if ([value isEqualToString:@"gp2"]) { + return @(AWSEC2VolumeTypeGp2); + } return @(AWSEC2VolumeTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -1437,6 +1398,8 @@ + (NSValueTransformer *)volumeTypeJSONTransformer { return @"standard"; case AWSEC2VolumeTypeIO1: return @"io1"; + case AWSEC2VolumeTypeGp2: + return @"gp2"; case AWSEC2VolumeTypeUnknown: default: return nil; @@ -1446,20 +1409,6 @@ + (NSValueTransformer *)volumeTypeJSONTransformer { @end -@implementation AWSEC2CreateVolumeResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"volume" : @"Volume", - }; -} - -+ (NSValueTransformer *)volumeJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2Volume class]]; -} - -@end - @implementation AWSEC2CreateVpcPeeringConnectionRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -2184,20 +2133,6 @@ + (NSValueTransformer *)attributeJSONTransformer { @end -@implementation AWSEC2DescribeImageAttributeResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"imageAttribute" : @"ImageAttribute", - }; -} - -+ (NSValueTransformer *)imageAttributeJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2ImageAttribute class]]; -} - -@end - @implementation AWSEC2DescribeImagesRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -2319,20 +2254,6 @@ + (NSValueTransformer *)attributeJSONTransformer { @end -@implementation AWSEC2DescribeInstanceAttributeResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"instanceAttribute" : @"InstanceAttribute", - }; -} - -+ (NSValueTransformer *)instanceAttributeJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2InstanceAttribute class]]; -} - -@end - @implementation AWSEC2DescribeInstanceStatusRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -2494,15 +2415,44 @@ @implementation AWSEC2DescribeNetworkInterfaceAttributeRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"attachment" : @"Attachment", - @"description" : @"Description", + @"attribute" : @"Attribute", @"dryRun" : @"DryRun", - @"groups" : @"Groups", @"networkInterfaceId" : @"NetworkInterfaceId", - @"sourceDestCheck" : @"SourceDestCheck", }; } ++ (NSValueTransformer *)attributeJSONTransformer { + return [MTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { + if ([value isEqualToString:@"description"]) { + return @(AWSEC2NetworkInterfaceAttributeDescription); + } + if ([value isEqualToString:@"groupSet"]) { + return @(AWSEC2NetworkInterfaceAttributeGroupSet); + } + if ([value isEqualToString:@"sourceDestCheck"]) { + return @(AWSEC2NetworkInterfaceAttributeSourceDestCheck); + } + if ([value isEqualToString:@"attachment"]) { + return @(AWSEC2NetworkInterfaceAttributeAttachment); + } + return @(AWSEC2NetworkInterfaceAttributeUnknown); + } reverseBlock:^NSString *(NSNumber *value) { + switch ([value integerValue]) { + case AWSEC2NetworkInterfaceAttributeDescription: + return @"description"; + case AWSEC2NetworkInterfaceAttributeGroupSet: + return @"groupSet"; + case AWSEC2NetworkInterfaceAttributeSourceDestCheck: + return @"sourceDestCheck"; + case AWSEC2NetworkInterfaceAttributeAttachment: + return @"attachment"; + case AWSEC2NetworkInterfaceAttributeUnknown: + default: + return nil; + } + }]; +} + @end @implementation AWSEC2DescribeNetworkInterfaceAttributeResult @@ -2510,7 +2460,7 @@ @implementation AWSEC2DescribeNetworkInterfaceAttributeResult + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"attachment" : @"Attachment", - @"description" : @"Description", + @"detail" : @"Description", @"groups" : @"Groups", @"networkInterfaceId" : @"NetworkInterfaceId", @"sourceDestCheck" : @"SourceDestCheck", @@ -2521,7 +2471,7 @@ + (NSValueTransformer *)attachmentJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2NetworkInterfaceAttachment class]]; } -+ (NSValueTransformer *)descriptionJSONTransformer { ++ (NSValueTransformer *)detailJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeValue class]]; } @@ -2762,6 +2712,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -2861,6 +2820,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -3273,9 +3238,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)endTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -3285,9 +3250,9 @@ + (NSValueTransformer *)filtersJSONTransformer { + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -3699,20 +3664,6 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end -@implementation AWSEC2DetachVolumeResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"attachment" : @"Attachment", - }; -} - -+ (NSValueTransformer *)attachmentJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2VolumeAttachment class]]; -} - -@end - @implementation AWSEC2DetachVpnGatewayRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -3734,6 +3685,10 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { }; } ++ (NSValueTransformer *)valuesJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSEC2AttributeValue class]]; +} + @end @implementation AWSEC2DhcpOptions @@ -3794,7 +3749,7 @@ @implementation AWSEC2DiskImage + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"image" : @"Image", @"volume" : @"Volume", }; @@ -3921,6 +3876,9 @@ + (NSValueTransformer *)volumeTypeJSONTransformer { if ([value isEqualToString:@"io1"]) { return @(AWSEC2VolumeTypeIO1); } + if ([value isEqualToString:@"gp2"]) { + return @(AWSEC2VolumeTypeGp2); + } return @(AWSEC2VolumeTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -3928,6 +3886,8 @@ + (NSValueTransformer *)volumeTypeJSONTransformer { return @"standard"; case AWSEC2VolumeTypeIO1: return @"io1"; + case AWSEC2VolumeTypeGp2: + return @"gp2"; case AWSEC2VolumeTypeUnknown: default: return nil; @@ -3950,9 +3910,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attachTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -4027,7 +3987,7 @@ @implementation AWSEC2ExportTask + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"exportTaskId" : @"ExportTaskId", @"exportToS3Task" : @"ExportToS3Task", @"instanceExportDetails" : @"InstanceExportDetails", @@ -4226,9 +4186,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)timestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -4257,9 +4217,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)timestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -4315,7 +4275,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"architecture" : @"Architecture", @"blockDeviceMappings" : @"BlockDeviceMappings", - @"description" : @"Description", + @"detail" : @"Description", @"hypervisor" : @"Hypervisor", @"imageId" : @"ImageId", @"imageLocation" : @"ImageLocation", @@ -4515,7 +4475,7 @@ @implementation AWSEC2ImageAttribute + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"blockDeviceMappings" : @"BlockDeviceMappings", - @"description" : @"Description", + @"detail" : @"Description", @"imageId" : @"ImageId", @"kernelId" : @"KernelId", @"launchPermissions" : @"LaunchPermissions", @@ -4529,7 +4489,7 @@ + (NSValueTransformer *)blockDeviceMappingsJSONTransformer { return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSEC2BlockDeviceMapping class]]; } -+ (NSValueTransformer *)descriptionJSONTransformer { ++ (NSValueTransformer *)detailJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeValue class]]; } @@ -4645,6 +4605,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -4744,6 +4713,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -4813,7 +4788,7 @@ @implementation AWSEC2ImportInstanceRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"diskImages" : @"DiskImages", @"dryRun" : @"DryRun", @"launchSpecification" : @"LaunchSpecification", @@ -4866,7 +4841,7 @@ @implementation AWSEC2ImportInstanceTaskDetails + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"instanceId" : @"InstanceId", @"platform" : @"Platform", @"volumes" : @"Volumes", @@ -4902,7 +4877,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"availabilityZone" : @"AvailabilityZone", @"bytesConverted" : @"BytesConverted", - @"description" : @"Description", + @"detail" : @"Description", @"image" : @"Image", @"status" : @"Status", @"statusMessage" : @"StatusMessage", @@ -4948,7 +4923,7 @@ @implementation AWSEC2ImportVolumeRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"availabilityZone" : @"AvailabilityZone", - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"image" : @"Image", @"volume" : @"Volume", @@ -4985,7 +4960,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"availabilityZone" : @"AvailabilityZone", @"bytesConverted" : @"BytesConverted", - @"description" : @"Description", + @"detail" : @"Description", @"image" : @"Image", @"volume" : @"Volume", }; @@ -5143,6 +5118,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -5242,6 +5226,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -5303,9 +5293,9 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { + (NSValueTransformer *)launchTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -5411,6 +5401,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"blockDeviceMappings" : @"BlockDeviceMappings", @"disableApiTermination" : @"DisableApiTermination", @"ebsOptimized" : @"EbsOptimized", + @"groups" : @"Groups", @"instanceId" : @"InstanceId", @"instanceInitiatedShutdownBehavior" : @"InstanceInitiatedShutdownBehavior", @"instanceType" : @"InstanceType", @@ -5436,6 +5427,10 @@ + (NSValueTransformer *)ebsOptimizedJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeBooleanValue class]]; } ++ (NSValueTransformer *)groupsJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSEC2GroupIdentifier class]]; +} + + (NSValueTransformer *)instanceInitiatedShutdownBehaviorJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeValue class]]; } @@ -5608,7 +5603,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"association" : @"Association", @"attachment" : @"Attachment", - @"description" : @"Description", + @"detail" : @"Description", @"groups" : @"Groups", @"networkInterfaceId" : @"NetworkInterfaceId", @"ownerId" : @"OwnerId", @@ -5698,9 +5693,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attachTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -5744,7 +5739,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"associatePublicIpAddress" : @"AssociatePublicIpAddress", @"deleteOnTermination" : @"DeleteOnTermination", - @"description" : @"Description", + @"detail" : @"Description", @"deviceIndex" : @"DeviceIndex", @"groups" : @"Groups", @"networkInterfaceId" : @"NetworkInterfaceId", @@ -5894,9 +5889,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)impairedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -5951,7 +5946,7 @@ @implementation AWSEC2InstanceStatusEvent + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"code" : @"Code", - @"description" : @"Description", + @"detail" : @"Description", @"notAfter" : @"NotAfter", @"notBefore" : @"NotBefore", }; @@ -5996,17 +5991,17 @@ + (NSValueTransformer *)codeJSONTransformer { + (NSValueTransformer *)notAfterJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)notBeforeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -6177,6 +6172,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSEC2LatestDhcpConfiguration + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"key" : @"Key", + @"values" : @"Values", + }; +} + +@end + @implementation AWSEC2LaunchPermission + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -6283,6 +6289,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -6382,6 +6397,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -6464,7 +6485,7 @@ @implementation AWSEC2ModifyImageAttributeRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"attribute" : @"Attribute", - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"imageId" : @"ImageId", @"launchPermission" : @"LaunchPermission", @@ -6476,7 +6497,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { }; } -+ (NSValueTransformer *)descriptionJSONTransformer { ++ (NSValueTransformer *)detailJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeValue class]]; } @@ -6632,7 +6653,7 @@ @implementation AWSEC2ModifyNetworkInterfaceAttributeRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"attachment" : @"Attachment", - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"groups" : @"Groups", @"networkInterfaceId" : @"NetworkInterfaceId", @@ -6644,7 +6665,7 @@ + (NSValueTransformer *)attachmentJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2NetworkInterfaceAttachmentChanges class]]; } -+ (NSValueTransformer *)descriptionJSONTransformer { ++ (NSValueTransformer *)detailJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeValue class]]; } @@ -6722,6 +6743,21 @@ + (NSValueTransformer *)createVolumePermissionJSONTransformer { @end +@implementation AWSEC2ModifySubnetAttributeRequest + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"mapPublicIpOnLaunch" : @"MapPublicIpOnLaunch", + @"subnetId" : @"SubnetId", + }; +} + ++ (NSValueTransformer *)mapPublicIpOnLaunchJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeBooleanValue class]]; +} + +@end + @implementation AWSEC2ModifyVolumeAttributeRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -6732,6 +6768,10 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { }; } ++ (NSValueTransformer *)autoEnableIOJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2AttributeBooleanValue class]]; +} + @end @implementation AWSEC2ModifyVpcAttributeRequest @@ -6908,7 +6948,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"association" : @"Association", @"attachment" : @"Attachment", @"availabilityZone" : @"AvailabilityZone", - @"description" : @"Description", + @"detail" : @"Description", @"groups" : @"Groups", @"macAddress" : @"MacAddress", @"networkInterfaceId" : @"NetworkInterfaceId", @@ -7010,9 +7050,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attachTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -7391,7 +7431,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"architecture" : @"Architecture", @"blockDeviceMappings" : @"BlockDeviceMappings", - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"imageLocation" : @"ImageLocation", @"kernelId" : @"KernelId", @@ -7587,7 +7627,7 @@ @implementation AWSEC2ReplicateImageRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"clientToken" : @"ClientToken", - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"name" : @"Name", @"sourceImageId" : @"SourceImageId", @@ -7611,8 +7651,8 @@ @implementation AWSEC2ReplicateSnapshotRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", @"destinationRegion" : @"DestinationRegion", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"presignedUrl" : @"PresignedUrl", @"sourceRegion" : @"SourceRegion", @@ -7636,7 +7676,7 @@ @implementation AWSEC2ReportInstanceStatusRequest + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"dryRun" : @"DryRun", @"endTime" : @"EndTime", @"instances" : @"Instances", @@ -7648,17 +7688,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)endTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -7703,7 +7743,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { } + (NSValueTransformer *)launchSpecificationJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2LaunchSpecification class]]; + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2RequestSpotLaunchSpecification class]]; } + (NSValueTransformer *)typeJSONTransformer { @@ -7730,17 +7770,17 @@ + (NSValueTransformer *)typeJSONTransformer { + (NSValueTransformer *)validFromJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)validUntilJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -7760,6 +7800,253 @@ + (NSValueTransformer *)spotInstanceRequestsJSONTransformer { @end +@implementation AWSEC2RequestSpotLaunchSpecification + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"addressingType" : @"AddressingType", + @"blockDeviceMappings" : @"BlockDeviceMappings", + @"ebsOptimized" : @"EbsOptimized", + @"iamInstanceProfile" : @"IamInstanceProfile", + @"imageId" : @"ImageId", + @"instanceType" : @"InstanceType", + @"kernelId" : @"KernelId", + @"keyName" : @"KeyName", + @"monitoring" : @"Monitoring", + @"networkInterfaces" : @"NetworkInterfaces", + @"placement" : @"Placement", + @"ramdiskId" : @"RamdiskId", + @"securityGroupIds" : @"SecurityGroupIds", + @"securityGroups" : @"SecurityGroups", + @"subnetId" : @"SubnetId", + @"userData" : @"UserData", + }; +} + ++ (NSValueTransformer *)blockDeviceMappingsJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSEC2BlockDeviceMapping class]]; +} + ++ (NSValueTransformer *)iamInstanceProfileJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2IamInstanceProfileSpecification class]]; +} + ++ (NSValueTransformer *)instanceTypeJSONTransformer { + return [MTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { + if ([value isEqualToString:@"t1.micro"]) { + return @(AWSEC2InstanceTypeT1_micro); + } + if ([value isEqualToString:@"m1.small"]) { + return @(AWSEC2InstanceTypeM1_small); + } + if ([value isEqualToString:@"m1.medium"]) { + return @(AWSEC2InstanceTypeM1_medium); + } + if ([value isEqualToString:@"m1.large"]) { + return @(AWSEC2InstanceTypeM1_large); + } + if ([value isEqualToString:@"m1.xlarge"]) { + return @(AWSEC2InstanceTypeM1_xlarge); + } + if ([value isEqualToString:@"m3.medium"]) { + return @(AWSEC2InstanceTypeM3_medium); + } + if ([value isEqualToString:@"m3.large"]) { + return @(AWSEC2InstanceTypeM3_large); + } + if ([value isEqualToString:@"m3.xlarge"]) { + return @(AWSEC2InstanceTypeM3_xlarge); + } + if ([value isEqualToString:@"m3.2xlarge"]) { + return @(AWSEC2InstanceTypeM3_2xlarge); + } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } + if ([value isEqualToString:@"m2.xlarge"]) { + return @(AWSEC2InstanceTypeM2_xlarge); + } + if ([value isEqualToString:@"m2.2xlarge"]) { + return @(AWSEC2InstanceTypeM2_2xlarge); + } + if ([value isEqualToString:@"m2.4xlarge"]) { + return @(AWSEC2InstanceTypeM2_4xlarge); + } + if ([value isEqualToString:@"cr1.8xlarge"]) { + return @(AWSEC2InstanceTypeCR1_8xlarge); + } + if ([value isEqualToString:@"i2.xlarge"]) { + return @(AWSEC2InstanceTypeI2_xlarge); + } + if ([value isEqualToString:@"i2.2xlarge"]) { + return @(AWSEC2InstanceTypeI2_2xlarge); + } + if ([value isEqualToString:@"i2.4xlarge"]) { + return @(AWSEC2InstanceTypeI2_4xlarge); + } + if ([value isEqualToString:@"i2.8xlarge"]) { + return @(AWSEC2InstanceTypeI2_8xlarge); + } + if ([value isEqualToString:@"hi1.4xlarge"]) { + return @(AWSEC2InstanceTypeHI1_4xlarge); + } + if ([value isEqualToString:@"hs1.8xlarge"]) { + return @(AWSEC2InstanceTypeHS1_8xlarge); + } + if ([value isEqualToString:@"c1.medium"]) { + return @(AWSEC2InstanceTypeC1_medium); + } + if ([value isEqualToString:@"c1.xlarge"]) { + return @(AWSEC2InstanceTypeC1_xlarge); + } + if ([value isEqualToString:@"c3.large"]) { + return @(AWSEC2InstanceTypeC3_large); + } + if ([value isEqualToString:@"c3.xlarge"]) { + return @(AWSEC2InstanceTypeC3_xlarge); + } + if ([value isEqualToString:@"c3.2xlarge"]) { + return @(AWSEC2InstanceTypeC3_2xlarge); + } + if ([value isEqualToString:@"c3.4xlarge"]) { + return @(AWSEC2InstanceTypeC3_4xlarge); + } + if ([value isEqualToString:@"c3.8xlarge"]) { + return @(AWSEC2InstanceTypeC3_8xlarge); + } + if ([value isEqualToString:@"cc1.4xlarge"]) { + return @(AWSEC2InstanceTypeCC1_4xlarge); + } + if ([value isEqualToString:@"cc2.8xlarge"]) { + return @(AWSEC2InstanceTypeCC2_8xlarge); + } + if ([value isEqualToString:@"g2.2xlarge"]) { + return @(AWSEC2InstanceTypeG2_2xlarge); + } + if ([value isEqualToString:@"cg1.4xlarge"]) { + return @(AWSEC2InstanceTypeCG1_4xlarge); + } + if ([value isEqualToString:@"r3.large"]) { + return @(AWSEC2InstanceTypeR3_large); + } + if ([value isEqualToString:@"r3.xlarge"]) { + return @(AWSEC2InstanceTypeR3_xlarge); + } + if ([value isEqualToString:@"r3.2xlarge"]) { + return @(AWSEC2InstanceTypeR3_2xlarge); + } + if ([value isEqualToString:@"r3.4xlarge"]) { + return @(AWSEC2InstanceTypeR3_4xlarge); + } + if ([value isEqualToString:@"r3.8xlarge"]) { + return @(AWSEC2InstanceTypeR3_8xlarge); + } + return @(AWSEC2InstanceTypeUnknown); + } reverseBlock:^NSString *(NSNumber *value) { + switch ([value integerValue]) { + case AWSEC2InstanceTypeT1_micro: + return @"t1.micro"; + case AWSEC2InstanceTypeM1_small: + return @"m1.small"; + case AWSEC2InstanceTypeM1_medium: + return @"m1.medium"; + case AWSEC2InstanceTypeM1_large: + return @"m1.large"; + case AWSEC2InstanceTypeM1_xlarge: + return @"m1.xlarge"; + case AWSEC2InstanceTypeM3_medium: + return @"m3.medium"; + case AWSEC2InstanceTypeM3_large: + return @"m3.large"; + case AWSEC2InstanceTypeM3_xlarge: + return @"m3.xlarge"; + case AWSEC2InstanceTypeM3_2xlarge: + return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; + case AWSEC2InstanceTypeM2_xlarge: + return @"m2.xlarge"; + case AWSEC2InstanceTypeM2_2xlarge: + return @"m2.2xlarge"; + case AWSEC2InstanceTypeM2_4xlarge: + return @"m2.4xlarge"; + case AWSEC2InstanceTypeCR1_8xlarge: + return @"cr1.8xlarge"; + case AWSEC2InstanceTypeI2_xlarge: + return @"i2.xlarge"; + case AWSEC2InstanceTypeI2_2xlarge: + return @"i2.2xlarge"; + case AWSEC2InstanceTypeI2_4xlarge: + return @"i2.4xlarge"; + case AWSEC2InstanceTypeI2_8xlarge: + return @"i2.8xlarge"; + case AWSEC2InstanceTypeHI1_4xlarge: + return @"hi1.4xlarge"; + case AWSEC2InstanceTypeHS1_8xlarge: + return @"hs1.8xlarge"; + case AWSEC2InstanceTypeC1_medium: + return @"c1.medium"; + case AWSEC2InstanceTypeC1_xlarge: + return @"c1.xlarge"; + case AWSEC2InstanceTypeC3_large: + return @"c3.large"; + case AWSEC2InstanceTypeC3_xlarge: + return @"c3.xlarge"; + case AWSEC2InstanceTypeC3_2xlarge: + return @"c3.2xlarge"; + case AWSEC2InstanceTypeC3_4xlarge: + return @"c3.4xlarge"; + case AWSEC2InstanceTypeC3_8xlarge: + return @"c3.8xlarge"; + case AWSEC2InstanceTypeCC1_4xlarge: + return @"cc1.4xlarge"; + case AWSEC2InstanceTypeCC2_8xlarge: + return @"cc2.8xlarge"; + case AWSEC2InstanceTypeG2_2xlarge: + return @"g2.2xlarge"; + case AWSEC2InstanceTypeCG1_4xlarge: + return @"cg1.4xlarge"; + case AWSEC2InstanceTypeR3_large: + return @"r3.large"; + case AWSEC2InstanceTypeR3_xlarge: + return @"r3.xlarge"; + case AWSEC2InstanceTypeR3_2xlarge: + return @"r3.2xlarge"; + case AWSEC2InstanceTypeR3_4xlarge: + return @"r3.4xlarge"; + case AWSEC2InstanceTypeR3_8xlarge: + return @"r3.8xlarge"; + case AWSEC2InstanceTypeUnknown: + default: + return nil; + } + }]; +} + ++ (NSValueTransformer *)monitoringJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2RunInstancesMonitoringEnabled class]]; +} + ++ (NSValueTransformer *)networkInterfacesJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSEC2InstanceNetworkInterfaceSpecification class]]; +} + ++ (NSValueTransformer *)placementJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2SpotPlacement class]]; +} + +@end + @implementation AWSEC2Reservation + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -7852,9 +8139,9 @@ + (NSValueTransformer *)currencyCodeJSONTransformer { + (NSValueTransformer *)endJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -7909,6 +8196,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -8008,6 +8304,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -8132,9 +8434,9 @@ + (NSValueTransformer *)recurringChargesJSONTransformer { + (NSValueTransformer *)startJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -8216,6 +8518,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -8315,6 +8626,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -8405,9 +8722,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)createDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -8457,9 +8774,9 @@ + (NSValueTransformer *)tagsJSONTransformer { + (NSValueTransformer *)updateDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -8483,17 +8800,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)createDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)effectiveDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -8507,9 +8824,9 @@ + (NSValueTransformer *)reservedInstancesIdsJSONTransformer { + (NSValueTransformer *)updateDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -8618,6 +8935,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -8717,6 +9043,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -9263,6 +9595,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -9362,6 +9703,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -9435,20 +9782,6 @@ + (NSValueTransformer *)placementJSONTransformer { @end -@implementation AWSEC2RunInstancesResult - -+ (NSDictionary *)JSONKeyPathsByPropertyKey { - return @{ - @"reservation" : @"Reservation", - }; -} - -+ (NSValueTransformer *)reservationJSONTransformer { - return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSEC2Reservation class]]; -} - -@end - @implementation AWSEC2S3Storage + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -9467,7 +9800,7 @@ @implementation AWSEC2SecurityGroup + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"groupId" : @"GroupId", @"groupName" : @"GroupName", @"ipPermissions" : @"IpPermissions", @@ -9496,7 +9829,7 @@ @implementation AWSEC2Snapshot + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"encrypted" : @"Encrypted", @"ownerAlias" : @"OwnerAlias", @"ownerId" : @"OwnerId", @@ -9512,9 +9845,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)startTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -9616,9 +9949,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)createTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -9731,17 +10064,17 @@ + (NSValueTransformer *)typeJSONTransformer { + (NSValueTransformer *)validFromJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)validUntilJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -9770,9 +10103,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)updateTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -9830,6 +10163,15 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value isEqualToString:@"m3.2xlarge"]) { return @(AWSEC2InstanceTypeM3_2xlarge); } + if ([value isEqualToString:@"t2.micro"]) { + return @(AWSEC2InstanceTypeT2_micro); + } + if ([value isEqualToString:@"t2.small"]) { + return @(AWSEC2InstanceTypeT2_small); + } + if ([value isEqualToString:@"t2.medium"]) { + return @(AWSEC2InstanceTypeT2_medium); + } if ([value isEqualToString:@"m2.xlarge"]) { return @(AWSEC2InstanceTypeM2_xlarge); } @@ -9929,6 +10271,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"m3.xlarge"; case AWSEC2InstanceTypeM3_2xlarge: return @"m3.2xlarge"; + case AWSEC2InstanceTypeT2_micro: + return @"t2.micro"; + case AWSEC2InstanceTypeT2_small: + return @"t2.small"; + case AWSEC2InstanceTypeT2_medium: + return @"t2.medium"; case AWSEC2InstanceTypeM2_xlarge: return @"m2.xlarge"; case AWSEC2InstanceTypeM2_2xlarge: @@ -10022,9 +10370,9 @@ + (NSValueTransformer *)productDescriptionJSONTransformer { + (NSValueTransformer *)timestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -10359,9 +10707,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)lastStatusChangeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -10413,9 +10761,9 @@ + (NSValueTransformer *)attachmentsJSONTransformer { + (NSValueTransformer *)createTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -10473,6 +10821,9 @@ + (NSValueTransformer *)volumeTypeJSONTransformer { if ([value isEqualToString:@"io1"]) { return @(AWSEC2VolumeTypeIO1); } + if ([value isEqualToString:@"gp2"]) { + return @(AWSEC2VolumeTypeGp2); + } return @(AWSEC2VolumeTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -10480,6 +10831,8 @@ + (NSValueTransformer *)volumeTypeJSONTransformer { return @"standard"; case AWSEC2VolumeTypeIO1: return @"io1"; + case AWSEC2VolumeTypeGp2: + return @"gp2"; case AWSEC2VolumeTypeUnknown: default: return nil; @@ -10504,9 +10857,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)attachTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -10559,7 +10912,7 @@ @implementation AWSEC2VolumeStatusAction + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"code" : @"Code", - @"description" : @"Description", + @"detail" : @"Description", @"eventId" : @"EventId", @"eventType" : @"EventType", }; @@ -10604,7 +10957,7 @@ @implementation AWSEC2VolumeStatusEvent + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"eventId" : @"EventId", @"eventType" : @"EventType", @"notAfter" : @"NotAfter", @@ -10614,17 +10967,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)notAfterJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)notBeforeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -10824,9 +11177,9 @@ + (NSValueTransformer *)accepterVpcInfoJSONTransformer { + (NSValueTransformer *)expirationTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } diff --git a/EC2/Resources/ec2-2014-05-01.json b/EC2/Resources/ec2-2014-05-01.json deleted file mode 100644 index bb26b259847..00000000000 --- a/EC2/Resources/ec2-2014-05-01.json +++ /dev/null @@ -1,13086 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-05-01", - "endpointPrefix":"ec2", - "serviceAbbreviation":"Amazon EC2", - "serviceFullName":"Amazon Elastic Compute Cloud", - "signatureVersion":"v2", - "xmlNamespace":"http://ec2.amazonaws.com/doc/2014-05-01", - "protocol":"query" - }, - "documentation":"Amazon Elastic Compute Cloud\n

Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing\n capacity in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates\n your need to invest in hardware up front, so you can develop and deploy\n applications faster.

", - "operations":{ - "AcceptVpcPeeringConnection":{ - "name":"AcceptVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AcceptVpcPeeringConnectionRequest"}, - "output":{"shape":"AcceptVpcPeeringConnectionResult"}, - "documentation":"

Accept a VPC peering connection request. To accept a request, the VPC peering connection\n must be in the pending-acceptance state, and you must be the owner of\n the peer VPC. Use the DescribeVpcPeeringConnections request to\n view your outstanding VPC peering connection requests.

\n \n \n Example\n This example accepts the specified VPC peering connection\n request.\n https://ec2.amazonaws.com/?Action=AcceptVpcPeeringConnection\n&vpcPeeringConnectionId=pcx-1a2b3c4d\n&AUTHPARAMS\n <AcceptVpcPeeringConnectionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpcPeeringConnection>\n <vpcPeeringConnectionId>pcx-1a2b3c4d</vpcPeeringConnectionId>\n <requesterVpcInfo>\n <ownerId>123456789012</ownerId>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <cidrBlock>10.0.0.0/28</cidrBlock>\n </requesterVpcInfo>\n <accepterVpcInfo>\n <ownerId>777788889999</ownerId>\n <vpcId>vpc-111aaa22</vpcId>\n <cidrBlock>10.0.1.0/28</cidrBlock>\n </accepterVpcInfo>\n <status>\n <code>active</code>\n <message>Active</message>\n </status>\n <tagSet/>\n </vpcPeeringConnection>\n </AcceptVpcPeeringConnectionResponse>\"\n \n " - }, - "AllocateAddress":{ - "name":"AllocateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AllocateAddressRequest"}, - "output":{"shape":"AllocateAddressResult"}, - "documentation":"

Acquires an Elastic IP address.

\n

An Elastic IP address is for use either in the EC2-Classic platform or in a VPC.\n\t\t\t\tFor more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example for EC2-Classic\n This example request allocates an Elastic IP address for use with instances in EC2-Classic.\n https://ec2.amazonaws.com/?Action=AllocateAddress\n&AUTHPARAMS\n <AllocateAddressResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <publicIp>192.0.2.1</publicIp>\n <domain>standard</domain>\n</AllocateAddressResponse>\n \n \n Example for EC2-VPC\n This example request allocates an Elastic IP address for use with instances in a VPC.\n https://ec2.amazonaws.com/?Action=AllocateAddress\nDomain=vpc\n&AUTHPARAMS\n <AllocateAddressResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <publicIp>198.51.100.1</publicIp>\n <domain>vpc</domain>\n <allocationId>eipalloc-5723d13e</allocationId>\n</AllocateAddressResponse>\n \n " - }, - "AssignPrivateIpAddresses":{ - "name":"AssignPrivateIpAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssignPrivateIpAddressesRequest"}, - "documentation":"

Assigns one or more secondary private IP addresses to the specified network interface. You\n\t\t\t\tcan specify one or more specific secondary IP addresses, or\n\t\t\t\tyou can specify the number of secondary IP addresses to be automatically assigned\n\t\t\t\twithin the subnet's CIDR block range. The number of secondary IP addresses that you\n\t\t\t\tcan assign to an instance varies by instance type. For information about\n\t\t\t\tinstance types, see Instance Types \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide. For more information about Elastic IP\n\t\t\t\taddresses, see Elastic IP\n\t\t\t\tAddresses in the Amazon Elastic Compute Cloud User Guide.

\n

AssignPrivateIpAddresses is available only in EC2-VPC.

\n \n \n Example 1\n This example assigns two secondary private IP addresses (10.0.2.1 and\n\t\t\t\t\t10.0.2.11) to the specified network interface.\n https://ec2.amazonaws.com/?Action=AssignPrivateIpAddresses\n&NetworkInterfaceId=eni-d83388b1\n&PrivateIpAddress.0=10.0.2.1\n&PrivateIpAddress.1=10.0.2.11\n&AUTHPARAMS\n <AssignPrivateIpAddresses xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</AssignPrivateIpAddresses>\n \n \n Example 2\n This example assigns two secondary private IP addresses to the specified network\n\t\t\t\t\tinterface. Amazon EC2 automatically assigns these IP addresses from the available IP\n\t\t\t\t\taddresses within the subnet's CIDR block range.\n https://ec2.amazonaws.com/?Action=AssignPrivateIpAddresses\n&NetworkInterfaceId=eni-d83388b1\n&SecondaryPrivateIpAddressCount=2\n&AUTHPARAMS\n <AssignPrivateIpAddresses xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</AssignPrivateIpAddresses>\n \n " - }, - "AssociateAddress":{ - "name":"AssociateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateAddressRequest"}, - "output":{"shape":"AssociateAddressResult"}, - "documentation":"

Associates an Elastic IP address with an instance or a network interface.

\n

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC.\n\t\t\t\tFor more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

\n

[EC2-Classic, default VPC] If the Elastic IP address is already associated with a different\n\t\t\t\tinstance, it is disassociated from that instance and associated with the specified\n\t\t\t\tinstance.

\n

[EC2-VPC] If you don't specify a private IP address, the Elastic IP address is\n\t\t\t\tassociated with the primary IP address. If the Elastic IP address is already\n\t\t\t\tassociated with a different instance or a network interface, you get an error unless\n\t\t\t\tyou allow reassociation.

\n

This is an idempotent operation. If you perform the operation more than once, Amazon EC2\n\t\t\t\tdoesn't return an error.

\n \n \n Example for EC2-Classic\n This example request associates an Elastic IP address with an instance in\n\t\t\t\t\tEC2-Classic.\n https://ec2.amazonaws.com/?Action=AssociateAddress\n&InstanceId=i-2ea64347\n&PublicIp=192.0.2.1\n&AUTHPARAMS\n <AssociateAddressResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</AssociateAddressResponse>\n \n \n Example for EC2-VPC\n This example request associates a Elastic IP address with an instance in a VPC.\n\t\t\t\t\tThe AllowReassignment parameter allows the Elastic IP address to be associated with \n\t\t\t\t\tthe specified instance even if it's already associated with a different instance or a network interface.\n https://ec2.amazonaws.com/?Action=AssociateAddress\n&InstanceId=i-4fd2431a\n&AllocationId=eipalloc-5723d13e\n&AllowReassignment=true\n&AUTHPARAMS\n <AssociateAddressResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n <associationId>eipassoc-fc5ca095</associationId>\n</AssociateAddressResponse>\n \n " - }, - "AssociateDhcpOptions":{ - "name":"AssociateDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateDhcpOptionsRequest"}, - "documentation":"

Associates a set of DHCP options (that you've previously created) with the\n\t\t\t specified VPC, or associates no DHCP options with the VPC.

\n\t\t

After you associate the options with the VPC, any existing instances and all new\n \t\t\t instances that you launch in that VPC use the options. You don't need to restart or\n\t \t\t relaunch the instances. They automatically pick up the changes within a few hours,\n\t\t \t depending on how frequently the instance renews its DHCP lease. You can\n\t\t\t explicitly renew the lease using the operating system on the instance.

\n\t\t

For more information,\n\t\t\t see DHCP Options Sets \n\t\t\t in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example associates the DHCP options with the ID dopt-7a8b9c2d with the VPC\n\t\t\t\t\twith the ID vpc-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=AssociateDhcpOptions \n&DhcpOptionsId=dopt-7a8b9c2d\n&VpcId=vpc-1a2b3c4d\n&AUTHPARAMS\n <AssociateDhcpOptionsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return> \n</AssociateDhcpOptionsResponse>\n \n \n Example 2\n This example changes the VPC with the ID vpc-1a2b3c4d to have no \n\t\t\t\t\tassociated DHCP options set.\n https://ec2.amazonaws.com/?Action=AssociateDhcpOptions \n&DhcpOptionsId=default\n&VpcId=vpc-1a2b3c4d\n&AUTHPARAMS\n <AssociateDhcpOptionsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return> \n</AssociateDhcpOptionsResponse>\n \n " - }, - "AssociateRouteTable":{ - "name":"AssociateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateRouteTableRequest"}, - "output":{"shape":"AssociateRouteTableResult"}, - "documentation":"

Associates a subnet with a route table. The subnet and route table must be in the same VPC.\n\t\t\t\tThis association causes traffic originating from the subnet to be routed according\n\t\t\t\tto the routes in the route table. The action returns an association ID, which you\n\t\t\t\tneed in order to disassociate the route table from the subnet later. A route table\n\t\t\t\tcan be associated with multiple subnets.

\n\t\t

For more information about route tables, see Route Tables in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example associates a route table with the ID rtb-e4ad488d with a subnet with\n\t\t\t\t\tthe ID subnet-15ad487c.\n https://ec2.amazonaws.com/?Action=AssociateRouteTable\n&RouteTableId=rtb-e4ad488d\n&SubnetId=subnet-15ad487c\n <AssociateRouteTableResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <associationId>rtbassoc-f8ad4891</associationId>\n</AssociateRouteTableResponse>\n \n " - }, - "AttachInternetGateway":{ - "name":"AttachInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachInternetGatewayRequest"}, - "documentation":"

Attaches an Internet gateway to a VPC, enabling connectivity between the Internet\n\t\t\t\tand the VPC. For more information about your VPC and Internet gateway, see the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example attaches the Internet gateway with the ID igw-eaad4883 to the VPC with\n\t\t\t\t\tthe ID vpc-11ad4878.\n https://ec2.amazonaws.com/?Action=AttachInternetGateway\n&InternetGatewayId=igw-eaad4883\n&VpcId=vpc-11ad4878\n&AUTHPARAMS\n <AttachInternetGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</AttachInternetGatewayResponse>\n \n " - }, - "AttachNetworkInterface":{ - "name":"AttachNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachNetworkInterfaceRequest"}, - "output":{"shape":"AttachNetworkInterfaceResult"}, - "documentation":"

Attaches a network interface to an instance.

\n \n \n Example\n This example attaches the specified network interface \n\t\t\t\t\tto the specified instance.\n https://ec2.amazonaws.com/?Action=AttachNetworkInterface\n&DeviceIndex=1\n&InstanceId=i-9cc316fe\n&NetworkInterfaceId=eni-ffda3197\n&AUTHPARAMS\n <AttachNetworkInterfaceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>ace8cd1e-e685-4e44-90fb-92014d907212</requestId>\n <attachmentId>eni-attach-d94b09b0</attachmentId>\n</AttachNetworkInterfaceResponse>\n \n " - }, - "AttachVolume":{ - "name":"AttachVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachVolumeRequest"}, - "output":{ - "shape":"VolumeAttachment", - "locationName":"attachment", - "queryName":"Attachment" - }, - "documentation":"

Attaches an Amazon EBS volume to a running or stopped instance and exposes it to the instance\n with the specified device name.

\n

Encrypted Amazon EBS volumes may only be attached to\n instances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in the\n Amazon Elastic Compute Cloud User Guide.

\n

For a list of supported device names, see Attaching an Amazon EBS Volume to an Instance. Any device names that aren't reserved\n for instance store volumes can be used for Amazon EBS volumes. For more information, see Amazon EC2 Instance Store in the\n Amazon Elastic Compute Cloud User Guide.

\n

If a volume has an AWS Marketplace product code:

\n
    \n
  • The volume can only be attached as the root device of a stopped instance.
  • \n
  • You must be subscribed to the AWS Marketplace code that is on the volume.
  • \n
  • The configuration (instance type, operating system) of the instance must support that\n specific AWS Marketplace code. For example, you cannot take a volume from a Windows instance\n and attach it to a Linux instance.
  • \n
  • AWS Marketplace product codes are copied from the volume to the instance.
  • \n
\n

For an overview of the AWS Marketplace, see https://aws.amazon.com/marketplace/help/200900000. For more information about how to use the AWS\n Marketplace, see AWS Marketplace.

\n

For more information about Amazon EBS volumes, see Attaching Amazon EBS Volumes in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n Example 1\n This example request attaches the volume with the ID vol-1a2b3c4d to\n the instance with the ID i-1a2b3c4d and exposes it as\n /dev/sdh.\n https://ec2.amazonaws.com/?Action=AttachVolume\n&VolumeId=vol-1a2b3c4d\n&InstanceId=i-1a2b3c4d\n&Device=/dev/sdh\n&AUTHPARAMS\n <AttachVolumeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <volumeId>vol-1a2b3c4d</volumeId>\n <instanceId>i-1a2b3c4d</instanceId>\n <device>/dev/sdh</device>\n <status>attaching</status>\n <attachTime>YYYY-MM-DDTHH:MM:SS.000Z</attachTime>\n</AttachVolumeResponse>\n \n " - }, - "AttachVpnGateway":{ - "name":"AttachVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachVpnGatewayRequest"}, - "output":{"shape":"AttachVpnGatewayResult"}, - "documentation":"

Attaches a virtual private gateway to a VPC. For more information, see Adding a Hardware Virtual Private Gateway\n\t\t\t\t\tto Your VPC in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example attaches the virtual private gateway with the ID vgw-8db04f81 to the VPC with the ID\n\t\t\t\t\tvpc-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=AttachVpnGateway\n&VpnGatewayId=vgw-8db04f81\n&VpcId=vpc-1a2b3c4d\n&AUTHPARAMS\n <AttachVpnGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <attachment>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <state>attaching</state>\n </attachment>\n</AttachVpnGatewayResponse>\n \n " - }, - "AuthorizeSecurityGroupEgress":{ - "name":"AuthorizeSecurityGroupEgress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AuthorizeSecurityGroupEgressRequest"}, - "documentation":"

Adds one or more egress rules to a security group for use with a VPC.\n\t\t\t\tSpecifically, this action permits instances to send traffic to one or more\n\t\t\t\tCIDR IP address ranges, or to one or more security groups\tfor the same VPC.

\n\t\t\t\n\t\t\t\t

You can have up to 50 rules per security group (covering both ingress and\n\t\t\t\t\tegress rules).

\n\t\t\t
\n

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC.\n\t\t\t\tThis action doesn't apply to security groups for use in EC2-Classic. \n\t\t\t\tFor more information, see Security Groups for Your VPC in\n\t\t\t\tthe Amazon Virtual Private Cloud User Guide.

\n

Each rule consists of the protocol (for example, TCP), plus either a CIDR range or\n\t\t\t\ta source group. For the TCP and UDP protocols, you must also specify the destination\n\t\t\t\tport or port range. For the ICMP protocol, you must also specify the ICMP type and\n\t\t\t\tcode. You can use -1 for the type or code to mean all types or all codes.

\n

Rule changes are propagated to affected instances as quickly as possible. However,\n\t\t\t\ta small delay might occur.

\n \n \n Example 1\n This example request grants your security group with the ID sg-1a2b3c4d access to the\n\t\t\t\t\t192.0.2.0/24 and 198.51.100.0/24 address ranges on TCP port 80.\n https://ec2.amazonaws.com/?Action=AuthorizeSecurityGroupEgress\n&GroupId=sg-1a2b3c4d\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=80\n&IpPermissions.1.ToPort=80\n&IpPermissions.1.IpRanges.1.CidrIp=192.0.2.0/24\n&IpPermissions.1.IpRanges.2.CidrIp=198.51.100.0/24\n&AUTHPARAMS\n <AuthorizeSecurityGroupEgressResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</AuthorizeSecurityGroupEgressResponse>\n \n \n Example 2\n This example request grants egress access from the security group with the ID sg-1a2b3c4d \n\t\t\t\t\tto the security group with the ID sg-9a8d7f5c on TCP port 1433.\n https://ec2.amazonaws.com/?Action=AuthorizeSecurityGroupEgress\n&GroupId=sg-1a2b3c4d\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=1433\n&IpPermissions.1.ToPort=1433\n&IpPermissions.1.Groups.1.GroupId=sg-9a8d7f5c\n&AUTHPARAMS\n <AuthorizeSecurityGroupEgressResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</AuthorizeSecurityGroupEgressResponse>\n \n " - }, - "AuthorizeSecurityGroupIngress":{ - "name":"AuthorizeSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AuthorizeSecurityGroupIngressRequest"}, - "documentation":"

Adds one or more ingress rules to a security group.

\n\t\t\t\n\t\t\t\t

EC2-Classic: You can have up to 100 rules per group.

\n\t\t\t\t

EC2-VPC: You can have up to 50 rules per group (covering both ingress and\n\t\t\t\t\tegress rules).

\n\t\t\t
\n

Rule changes are propagated to instances within the security group as quickly as\n\t\t\t\tpossible. However, a small delay might occur.

\n

[EC2-Classic] This action gives one or more CIDR IP address ranges permission to\n\t\t\t\taccess a security group in your account, or gives one or more security groups\n\t\t\t\t(called the source groups) permission to access a security\n\t\t\t\tgroup for your account. A source group can be for your own AWS account, or another.

\n

[EC2-VPC] This action gives one or more CIDR IP address ranges permission to\n\t\t\t\taccess a security group in your VPC, or gives one or more other security groups\n\t\t\t\t(called the source groups) permission to access a security\n\t\t\t\tgroup for your VPC. The security groups must all be for the same VPC.

\n \n \n Example 1\n This example request grants TCP port 80 access from the 192.0.2.0/24\n\t\t\t\t\tand 198.51.100.0/24 address ranges to the security group for EC2-Classic \n\t\t\t\t\tnamed websrv.\n https://ec2.amazonaws.com/?Action=AuthorizeSecurityGroupIngress\n&GroupName=websrv\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=80\n&IpPermissions.1.ToPort=80\n&IpPermissions.1.IpRanges.1.CidrIp=192.0.2.0/24\n&IpPermissions.1.IpRanges.2.CidrIp=198.51.100.0/24\n&AUTHPARAMS\n \n \n Example 2\n This example request grants TCP port 80\n\t\t\t\t\taccess from the source group for EC2-Classic named OtherAccountGroup (in AWS\n\t\t\t\t\taccount 123456789012) to the security group for EC2-Classic named websrv.\n https://ec2.amazonaws.com/?Action=AuthorizeSecurityGroupIngress\n&GroupName=websrv\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=80\n&IpPermissions.1.ToPort=80\n&IpPermissions.1.Groups.1.GroupName=OtherAccountGroup\n&IpPermissions.1.Groups.1.UserId=123456789012\n&AUTHPARAMS\n \n \n Example 3\n This example request grants TCP port\n\t\t\t\t\t80 access from the source group named OtherGroupInMyVPC\n\t\t\t\t\t(with the ID sg-2a2b3c4d) to the security group named VpcWebServers \n\t\t\t\t\t(with the ID sg-1a2b3c4d). In EC2-VPC, you must use the security group IDs in \n\t\t\t\t\ta request, not the security group names. In this example, your AWS account ID is 123456789012.\n https://ec2.amazonaws.com/?Action=AuthorizeSecurityGroupIngress\n&GroupId=sg-1a2b3c4d\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=80\n&IpPermissions.1.ToPort=80\n&IpPermissions.1.Groups.1.GroupId=sg-2a2b3c4d\n&IpPermissions.1.Groups.1.UserId=123456789012\n&AUTHPARAMS\n \n \n Example 4\n This example request grants your local\n\t\t\t\t\tsystem the ability to use SSH (port 22) to connect to any instance in the security group\n\t\t\t\t\tnamed default.\n https://ec2.amazonaws.com/\n?Action=AuthorizeSecurityGroupIngress\n&GroupName=default\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=22\n&IpPermissions.1.ToPort=22\n&IpPermissions.1.IpRanges.1.CidrIp=your-local-system's-public-ip-address/32\n&AUTHPARAMS\n \n \n Example 5\n This example request grants your local system\n\t\t\t\t\tthe ability to use Remote Desktop (port 3389) to connect to any instance in the security group\n\t\t\t\t\tnamed default.\n https://ec2.amazonaws.com/\n?Action=AuthorizeSecurityGroupIngress\n&GroupName=default\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=3389\n&IpPermissions.1.ToPort=3389\n&IpPermissions.1.IpRanges.1.CidrIp=your-local-system's-public-ip-address/32\n \n " - }, - "BundleInstance":{ - "name":"BundleInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"BundleInstanceRequest"}, - "output":{"shape":"BundleInstanceResult"}, - "documentation":"

Bundles an Amazon instance store-backed Windows instance.

\n

During bundling, only the root device volume (C:\\) is bundled. Data on other\n\t\t\t\tinstance store volumes is not preserved.

\n \n

This procedure is not applicable for Linux/Unix instances or Windows instances\n that are backed by Amazon EBS.

\n\t\t\t
\n

For more information, see Creating an Instance Store-Backed Windows AMI.

\n \n \n Example\n \n

This example request bundles the specified instance.

\n

Before you specify a value for your access key ID, review and follow the guidance \n in Best Practices for Managing AWS Access Keys.

\n
\n https://ec2.amazonaws.com/?Action=BundleInstance\n&InstanceId=i-e468cd8d\n&Storage.S3.AWSAccessKeyId='AKIAIOSFODNN7EXAMPLE'\n&Storage.S3.Bucket=myawsbucket \n&Storage.S3.Prefix=winami\n&Storage.S3.UploadPolicy=eyJleHBpcmF0aW9uIjogIjIwMDgtMDgtMzBUMDg6NDk6MD\nlaIiwiY29uZGl0aW9ucyI6IFt7ImJ1Y2tldCI6ICJteS1idWNrZXQifSxbInN0YXJ0cy13aXRoIiwgI\niRrZXkiLCAibXktbmV3LWltYWdlIl0seyJhY2wiOiAiZWMyLWJ1bmRsZS1yZWFkIn1dfEXAMPLE\n&Storage.S3.UploadPolicySignature=fh5tyyyQD8W4COEthj3nlGNEXAMPLE \n&AUTHPARAMS\n <BundleInstanceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <bundleInstanceTask>\n <instanceId>i-12345678</instanceId>\n <bundleId>bun-c1a540a8</bundleId>\n <state>bundling</state>\n <startTime>2008-10-07T11:41:50.000Z</startTime>\n <updateTime>2008-10-07T11:51:50.000Z</updateTime>\n <progress>70%</progress>\n <storage>\n <S3>\n <bucket>myawsbucket</bucket>\n <prefix>winami</prefix>\n </S3>\n </storage>\n </bundleInstanceTask>\n</BundleInstanceResponse>\n
\n
" - }, - "CancelBundleTask":{ - "name":"CancelBundleTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelBundleTaskRequest"}, - "output":{"shape":"CancelBundleTaskResult"}, - "documentation":"

Cancels a bundling operation for an instance store-backed Windows instance.

\n \n \n Example\n This example request cancels the specified bundle task.\n https://ec2.amazonaws.com/?Action=CancelBundleTask\n&BundleId=bun-cla322b9\n&AUTHPARAMS\n <CancelBundleTaskResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <bundleInstanceTask>\n <instanceId>i-12345678</instanceId>\n <bundleId>bun-cla322b9</bundleId>\n <state>canceling</state>\n <startTime>2008-10-07T11:41:50.000Z</startTime>\n <updateTime>2008-10-07T11:51:50.000Z</updateTime>\n <progress>20%</progress>\n <storage>\n <S3>\n <bucket>myawsbucket</bucket>\n <prefix>my-new-image</prefix>\n </S3>\n </storage>\n </bundleInstanceTask>\n</CancelBundleTaskResponse>\n \n " - }, - "CancelConversionTask":{ - "name":"CancelConversionTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelConversionRequest"}, - "documentation":"

Cancels an active conversion task. The task can be the import of an instance or volume. The\n action removes all artifacts of the conversion, including a partially uploaded volume or\n instance. If the conversion is complete or is in the process of transferring the final disk\n image, the command fails and returns an exception.

\n \n

For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon\n EC2 in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request cancels the conversion task with the ID import-i-fh95npoc. \n https://ec2.amazonaws.com/?Action=CancelConversionTask\n&ConversionTaskId=import-i-fh95npoc\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE\n true\n\n \n " - }, - "CancelExportTask":{ - "name":"CancelExportTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelExportTaskRequest"}, - "documentation":"

Cancels an active export task. The request removes all artifacts of the export,\n including any partially-created Amazon S3 objects. If the export task is complete or\n is in the process of transferring the final disk image, the command fails and\n returns an error.

\n \n \n Example\n This example request cancels the export task with the ID export-i-1234wxyz. \n https://ec2.amazonaws.com/?Action=CancelExportTask\n &exportTaskId=export-i-1234wxyz\n &AUTHPARAMS\n \n59dbff89-35bd-4eac-99ed-be587EXAMPLE\ntrue\n\n \n " - }, - "CancelReservedInstancesListing":{ - "name":"CancelReservedInstancesListing", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelReservedInstancesListingRequest"}, - "output":{"shape":"CancelReservedInstancesListingResult"}, - "documentation":"

Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace.

\n

For more information, see \n Reserved Instance Marketplace \n in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request cancels a Reserved Instance listing in the Reserved Instance Marketplace.\n https://ec2.amazonaws.com/?Action=CancelReservedInstancesListing\n&ReservedInstancesListingId=3ebe97b5-f273-43b6-a204-7a18cEXAMPLE\n&AUTHPARAMS\n \n bec2cf62-98ef-434a-8a15-886fcexample\n \n \n 3ebe97b5-f273-43b6-a204-7a18cEXAMPLE\n e5a2ff3b-7d14-494f-90af-0b5d0EXAMPLE\n 2012-07-12T16:55:28.000Z\n 2012-07-12T16:55:28.000Z\n cancelled\n CANCELLED\n \n \n Available\n 0\n \n \n Sold\n 0\n \n \n Cancelled\n 1\n \n \n Pending\n 0\n \n \n \n \n 5\n 166.64\n USD\n false\n \n \n 4\n 133.32\n USD\n false\n \n \n 3\n 99.99\n USD\n false\n \n \n 2\n 66.66\n USD\n false\n \n \n 1\n 33.33\n USD\n false\n \n \n \n XqJIt1342112125076\n \n \n\n \n " - }, - "CancelSpotInstanceRequests":{ - "name":"CancelSpotInstanceRequests", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelSpotInstanceRequestsRequest"}, - "output":{"shape":"CancelSpotInstanceRequestsResult"}, - "documentation":"

Cancels one or more Spot Instance requests. Spot Instances are instances that\n\t\t\t\tAmazon EC2 starts on your behalf when the maximum price that you specify exceeds the\n\t\t\t\tcurrent Spot Price. Amazon EC2 periodically sets the Spot Price based on available\n\t\t\t\tSpot Instance capacity and current Spot Instance requests. For more information\n\t\t\t\tabout Spot Instances, see Spot\n\t\t\t\t\tInstances in the Amazon Elastic Compute Cloud User Guide.

\n \n

Canceling a Spot Instance request does not terminate running Spot Instances\n\t\t\t\t\tassociated with the request.

\n
\n \n \n Example\n This example cancels the specified Spot Instance request.\n https://ec2.amazonaws.com/?Action=CancelSpotInstanceRequests\n&SpotInstanceRequestId.1=sir-1a2b3c4d\n&AUTHPARAMS\n <CancelSpotInstanceRequestsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <spotInstanceRequestSet>\n <item>\n <spotInstanceRequestId>sir-1a2b3c4d</spotInstanceRequestId>\n <state>cancelled</state>\n </item>\n </spotInstanceRequestSet>\n</CancelSpotInstanceRequestsResponse>\n \n " - }, - "ConfirmProductInstance":{ - "name":"ConfirmProductInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ConfirmProductInstanceRequest"}, - "output":{"shape":"ConfirmProductInstanceResult"}, - "documentation":"

Determines whether a product code is associated with an instance. This action can\n\t\t\t\tonly be used by the owner of the product code. It is useful when a product code\n\t\t\t\towner needs to verify whether another user's instance is eligible for\n\t\t\t\tsupport.

\n \n \n Example\n This example determines whether the specified product code is associated with the\n\t\t\t\t\tspecified instance.\n https://ec2.amazonaws.com/?Action=ConfirmProductInstance\n&ProductCode=774F4FF8\n&InstanceId=i-10a64379\n&AUTHPARAMS\n <ConfirmProductInstanceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n <ownerId>111122223333</ownerId>\n</ConfirmProductInstanceResponse>\n \n " - }, - "CopyImage":{ - "name":"CopyImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CopyImageRequest"}, - "output":{"shape":"CopyImageResult"}, - "documentation":"

Initiates the copy of an AMI from the specified source region to the region in which the\n request was made. You specify the destination region by using its endpoint when making the\n request. AMIs that use encrypted Amazon EBS snapshots cannot be copied with this method.

\n

For more information, see Copying AMIs\n in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request copies the AMI in us-west-2 with the ID ami-1a2b3c4d,\n\t\t\t\t\tnaming the new AMI My-Standard-AMI.\n https://ec2.amazonaws.com/?Action=CopyImage\n&SourceRegion=us-west-2\n&SourceImageId=ami-1a2b3c4d \n&Name=My-Standard-AMI\n&Description=This%20is%20the%20new%20version%20of%20My-Standard-AMI \n&ClientToken=550e8400-e29b-41d4-a716-446655440000\n&AUTHPARAMS\n <CopyImageResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>60bc441d-fa2c-494d-b155-5d6a3EXAMPLE</requestId>\n <imageId>ami-4d3c2b1a</imageId>\n</CopyImageResponse>\n \n " - }, - "CopySnapshot":{ - "name":"CopySnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CopySnapshotRequest"}, - "output":{"shape":"CopySnapshotResult"}, - "documentation":"

Copies a point-in-time snapshot of an Amazon EBS volume and stores it in Amazon S3. You can copy the\n snapshot within the same region or from one region to another. You can use the snapshot to\n create Amazon EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional\n endpoint that you send the HTTP request to.

\n

Copies of encrypted Amazon EBS snapshots remain encrypted. Copies of unencrypted snapshots remain\n unencrypted.

\n

For more information, see Copying an Amazon EBS Snapshot in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request copies the snapshot in the us-west-1 region with the ID\n snap-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=CopySnapshot\n&SourceRegion=us-west-1\n&SourceSnapshotId=snap-1a2b3c4d\n&Description=My_snapshot\n&AUTHPARAMS\n <CopySnapshotResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>60bc441d-fa2c-494d-b155-5d6a3EXAMPLE</requestId>\n <snapshotId>snap-2a2b3c4d</snapshotId>\n</CopySnapshotResponse>\n \n " - }, - "CreateCustomerGateway":{ - "name":"CreateCustomerGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateCustomerGatewayRequest"}, - "output":{"shape":"CreateCustomerGatewayResult"}, - "documentation":"

Provides information to AWS about your VPN customer gateway device. The customer\n\t\t\t\tgateway is the appliance at your end of the VPN connection. (The device on the AWS\n\t\t\t\tside of the VPN connection is the virtual private gateway.) You must provide the\n\t\t\t\tInternet-routable IP address of the customer gateway's external interface. The IP\n\t\t\t\taddress must be static and can't be behind a device performing network address\n\t\t\t\ttranslation (NAT).

\n\t\t

For devices that use Border Gateway Protocol (BGP), you can also provide the\n\t\t\t\tdevice's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to\n\t\t\t\tyour network. If you don't have an ASN already, you can use a private ASN (in the\n\t\t\t\t64512 - 65534 range).

\n\t\t\t\n\t\t\t\t

Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with the\n\t\t\t\t\texception of 7224, which is reserved in the us-east-1 region, and 9059, which is\n\t\t\t\t\treserved in the eu-west-1 region.

\n\t\t\t
\n\t\t

For more information about VPN customer gateways, see\n\t\t\t\t\tAdding a Hardware\n\t\t\t\t\tVirtual Private Gateway to Your VPC in the\n\t\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example passes information to AWS about the customer gateway with the IP\n\t\t\t\t\taddress 12.1.2.3 and BGP ASN 65534.\n https://ec2.amazonaws.com/?Action=CreateCustomerGateway\n&Type=ipsec.1\n&IpAddress=12.1.2.3\n&BgpAsn=65534\n&AUTHPARAMS\n <CreateCustomerGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <customerGateway>\t\t\n <customerGatewayId>cgw-b4dc3961</customerGatewayId>\n <state>pending</state>\n <type>ipsec.1</type>\n <ipAddress>12.1.2.3</ipAddress>\n <bgpAsn>65534</bgpAsn>\n <tagSet/>\n </customerGateway>\n</CreateCustomerGatewayResponse>\n \n " - }, - "CreateDhcpOptions":{ - "name":"CreateDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateDhcpOptionsRequest"}, - "output":{"shape":"CreateDhcpOptionsResult"}, - "documentation":"

Creates a set of DHCP options for your VPC. After creating the set, you must\n\t\t\t\tassociate it with the VPC, causing all existing and new instances that you launch in\n\t\t\t\tthe VPC to use this set of DHCP options. The following are the individual DHCP\n\t\t\t\toptions you can specify. For more information about the options, see RFC 2132.

\n
    \n
  • \ndomain-name-servers - The IP addresses of up to four domain name servers, or\n AmazonProvidedDNS. The default DHCP option set specifies\n AmazonProvidedDNS. If specifying more than one domain name server, specify\n the IP addresses in a single parameter, separated by commas.
  • \n
  • \ndomain-name - If you're using AmazonProvidedDNS in us-east-1,\n specify ec2.internal. If you're using AmazonProvidedDNS in another region,\n specify region.compute.internal (for example,\n ap-northeast-1.compute.internal). Otherwise, specify a domain name (for\n example, MyCompany.com).
  • \n
  • \nntp-servers - The IP addresses of up to four Network Time Protocol (NTP)\n servers.
  • \n
  • \nnetbios-name-servers - The IP addresses of up to four NetBIOS name\n servers.
  • \n
  • \nnetbios-node-type - The NetBIOS node type (1, 2, 4, or 8). We recommend that\n you specify 2 (broadcast and multicast are not currently supported). For more information\n about these node types, see RFC 2132.
  • \n
\n

For more information about DHCP options, see DHCP Options Sets\n\t\t\t\tin the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates a set of DHCP options with a domain name\n example.com and two DNS servers (10.2.5.1 and\n 10.2.5.2). The DNS servers' IP addresses are specified in a single\n parameter, separated by commas, to preserve the order in which they are\n specified.\n https://ec2.amazonaws.com/?Action=CreateDhcpOptions \n&DhcpConfiguration.1.Key=domain-name\n&DhcpConfiguration.1.Value.1=example.com\n&DhcpConfiguration.2.Key=domain-name-servers\n&DhcpConfiguration.2.Value.1=10.2.5.1,10.2.5.2\n&AUTHPARAMS\n <CreateDhcpOptionsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <dhcpOptions>\n <dhcpOptionsId>dopt-7a8b9c2d</dhcpOptionsId>\n <dhcpConfigurationSet>\n <item>\n <key>domain-name</key>\n <valueSet>\n <item>\n <value>example.com</value>\n </item>\n </valueSet>\n </item>\n <item>\n <key>domain-name-servers</key>\n <valueSet>\n <item>\n <value>10.2.5.1</value>\n </item>\n <item>\n <value>10.2.5.2</value>\n </item>\n </valueSet>\n </item>\n </dhcpConfigurationSet>\n <tagSet/>\n </dhcpOptions>\n</CreateDhcpOptionsResponse>\n \n " - }, - "CreateImage":{ - "name":"CreateImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateImageRequest"}, - "output":{"shape":"CreateImageResult"}, - "documentation":"

Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either\n\t\t\t\trunning or stopped.

\n

If you customized your instance with instance store volumes or EBS volumes\n\t\t\t\tin addition to the root device volume, the new AMI contains block device mapping\n\t\t\t\tinformation for those volumes. When you launch an instance from this new AMI,\n\t\t\t\tthe instance automatically launches with those additional volumes.

\n

For more information, see Creating Amazon EBS-Backed Linux AMIs \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request creates an AMI from the specified instance.\n https://ec2.amazonaws.com/?Action=CreateImage\n&Description=Standard+Web+Server+v1.0\n&InstanceId=i-10a64379\n&Name=standard-web-server-v1.0\n&AUTHPARAMS\n <CreateImageResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <imageId>ami-4fa54026</imageId>\n</CreateImageResponse>\n \n " - }, - "CreateInstanceExportTask":{ - "name":"CreateInstanceExportTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInstanceExportTaskRequest"}, - "output":{"shape":"CreateInstanceExportTaskResult"}, - "documentation":"

Exports a running or stopped instance to an Amazon S3 bucket.

\n \n

For information about the supported operating systems, image formats, and known limitations for the\n types of instances you can export, see Exporting EC2 Instances in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request creates an Export VM task that makes a Windows instance available\n as an OVA. \n https://ec2.amazonaws.com/?Action=CreateInstanceExportTask\n &Description=Example%20for%20docs\n &InstanceId=i-12345678\n &TargetEnvironment=VMWare\n &ExportToS3.DiskImageFormat=VMDK\n &ExportToS3.ContainerFormat=OVA\n &ExportToS3.S3bucket=my-bucket-for-exported-vm\n &ExportToS3.S3prefix=my-exports/\n &AUTHPARAMS\n <CreateInstanceExportTaskResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <exportTask>\n <exportTaskId>export-i-1234wxyz</exportTaskId>\n <description>Example for docs</description>\n <state>active</state>\n <statusMessage>Running</statusMessage>\n <instanceExport>\n <instanceId>i-12345678</instanceId>\n <targetEnvironment>VMWare</targetEnvironment>\n </instanceExport>\n <exportToS3>\n <diskImageFormat>VMDK</diskImageFormat>\n <containerFormat>OVA</containerFormat>\n <s3Bucket>my-bucket-for-exported-vm</s3Bucket>\n <s3Key>my-exports/ export-i-1234wxyz .ova</s3Key>\n </exportToS3>\n </exportTask>\n </CreateInstanceExportTaskResponse>\n \n " - }, - "CreateInternetGateway":{ - "name":"CreateInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInternetGatewayRequest"}, - "output":{"shape":"CreateInternetGatewayResult"}, - "documentation":"

Creates an Internet gateway for use with a VPC. After creating the Internet\n\t\t\t\tgateway, you attach it to a VPC using AttachInternetGateway.

\n\t\t

For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates an Internet gateway.\n https://ec2.amazonaws.com/?Action=CreateInternetGateway\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n igw-eaad4883\n \n \n \n\n \n " - }, - "CreateKeyPair":{ - "name":"CreateKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateKeyPairRequest"}, - "output":{ - "shape":"KeyPair", - "documentation":"

Information about the key pair.

", - "locationName":"keyPair", - "queryName":"KeyPair" - }, - "documentation":"

Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key\n\t\t\t\tand displays the private key for you to save to a file. The private key is\n\t\t\t\treturned as an unencrypted PEM encoded PKCS#8 private key. If a key with the\n\t\t\t\tspecified name already exists, Amazon EC2 returns an error.

\n

You can have up to five thousand key pairs per region.

\n

For more information about key pairs, see Key Pairs \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request creates a key pair named my-key-pair.\n https://ec2.amazonaws.com/?Action=CreateKeyPair\n&KeyName=my-key-pair\n&AUTHPARAMS\n <CreateKeyPairResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n my-key-pair\n \n 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f\n \n ---- BEGIN RSA PRIVATE KEY ----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE\n-----END RSA PRIVATE KEY-----\n\n \n \n Saving the File\n Create a file named my-key-pair.pem and paste\n\t\t\t\t\tthe entire key from the response into this file.\n\t\t\t\t\tKeep this file in a safe place; it is required to decrypt login information \n\t\t\t\t\twhen you connect to an instance that you launched using this key pair.\n\t\t\t\t\tIf you're using an SSH client on a Linux computer to connect to your instance, \n\t\t\t\t\tuse the following command to set the permissions of your private key file so \n\t\t\t\t\tthat only you can read it.\n chmod 400 my-key-pair.pem\n \n " - }, - "CreateNetworkAcl":{ - "name":"CreateNetworkAcl", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkAclRequest"}, - "output":{"shape":"CreateNetworkAclResult"}, - "documentation":"

Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition\n\t\t\t\tto security groups) for the instances in your VPC.

\n\t\t

For more information about network ACLs, see Network ACLs in\n\t\t\t\tthe Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates a network ACL in the specified VPC. \n\t\t\t\t\tThe response includes a default entry for egress, and another for ingress,\n\t\t\t\t\teach with a very high rule number. These are the last entries we process to\n\t\t\t\t\tdecide whether traffic is allowed in or out of an associated subnet. If the\n\t\t\t\t\ttraffic doesn't match any rules with a lower rule number, then these default\n\t\t\t\t\tentries ultimately deny the traffic.\n https://ec2.amazonaws.com/?Action=CreateNetworkAcl\n&VpcId=vpc-11ad4878\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n acl-5fb85d36\n vpc-11ad4878\n false\n \n \n 32767\n all\n deny\n true\n 0.0.0.0/0\n \n \n 32767\n all\n deny\n false\n 0.0.0.0/0\n \n \n \n \n \n\n \n " - }, - "CreateNetworkAclEntry":{ - "name":"CreateNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkAclEntryRequest"}, - "documentation":"

Creates an entry (a rule) in a network ACL with the specified rule number. Each\n\t\t\t\tnetwork ACL has a set of numbered ingress rules and a separate set of numbered\n\t\t\t\tegress rules. When determining whether a packet should be allowed in or out of a\n\t\t\t\tsubnet associated with the ACL, we process the entries in the ACL according to the\n\t\t\t\trule numbers, in ascending order. Each network ACL has a set of ingress rules and a\n\t\t\t\tseparate set of egress rules.

\n\t\t

We recommend that you leave room between the rule numbers (for example,\n\t\t\t\t100, 110, 120, ...), and not number them one right after the other (for\n\t\t\t\texample, 101, 102, 103, ...). This makes it easier to add a rule between\n\t\t\t\texisting ones without having to renumber the rules.

\n\t\t

After you add an entry, you can't modify it; you must either replace it, or create\n\t\t\t\tan entry and delete the old one.

\n\t\t

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates an entry with rule number 110 in the network ACL with the ID\n\t\t\t\t\tacl-2cb85d45. The rule allows ingress traffic from anywhere (0.0.0.0/0) on UDP\n\t\t\t\t\tport 53 into any associated subnet.\n https://ec2.amazonaws.com/?Action=CreateNetworkAclEntry\n&NetworkAclId=acl-2cb85d45\n&RuleNumber=110\n&Protocol=udp\n&RuleAction=allow\n&Egress=false\n&CidrBlock=0.0.0.0/0\n&PortRange.From=53\n&PortRange.To=53\n&AUTHPARAMS\n <CreateNetworkAclEntryResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</CreateNetworkAclEntryResponse>\n \n " - }, - "CreateNetworkInterface":{ - "name":"CreateNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkInterfaceRequest"}, - "output":{"shape":"CreateNetworkInterfaceResult"}, - "documentation":"

Creates a network interface in the specified subnet.

\n\t\t

For more information about network interfaces, see Elastic Network Interfaces \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example 1\n This example creates a network interface in the specified\n\t\t\t\t\tsubnet with a primary IP address that is automatically selected by Amazon EC2.\n https://ec2.amazonaws.com/?Action=CreateNetworkInterface\n&SubnetId=subnet-b2a249da\n&AUTHPARAMS\n <CreateNetworkInterfaceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>8dbe591e-5a22-48cb-b948-dd0aadd55adf</requestId>\n <networkInterface>\n <networkInterfaceId>eni-cfca76a6</networkInterfaceId>\n <subnetId>subnet-b2a249da</subnetId>\n <vpcId>vpc-c31dafaa</vpcId>\n <availabilityZone>ap-southeast-1b</availabilityZone>\n <description/>\n <ownerId>251839141158</ownerId>\n <requesterManaged>false</requesterManaged>\n <status>available</status>\n <macAddress>02:74:b0:72:79:61</macAddress>\n <privateIpAddress>10.0.2.157</privateIpAddress>\n <sourceDestCheck>true</sourceDestCheck>\n <groupSet>\n <item>\n <groupId>sg-1a2b3c4d</groupId>\n <groupName>default</groupName>\n </item>\n </groupSet>\n <tagSet/>\n <privateIpAddressesSet>\n <item>\n <privateIpAddress>10.0.2.157</privateIpAddress>\n <primary>true</primary>\n </item>\n </privateIpAddressesSet>\n </networkInterface>\n</CreateNetworkInterfaceResponse>\n \n \n Example 2\n This example creates a network interface in the specified\n\t\t\t\t\tsubnet with a primary IP address of 10.0.2.140 and four secondary private IP\n\t\t\t\t\taddresses that are automatically selected by Amazon EC2.\n https://ec2.amazonaws.com/?Action=CreateNetworkInterface\n&PrivateIpAddresses.0.Primary=true\n&PrivateIpAddresses.0.PrivateIpAddress=10.0.2.140\n&SecondaryPrivateIpAddressCount=4\n&SubnetId=subnet-a61dafcf\n&AUTHPARAMS\n <CreateNetworkInterfaceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>bd78c839-0895-4fac-a17f-98b559b6b630</requestId>\n <networkInterface>\n <networkInterfaceId>eni-1bcb7772</networkInterfaceId>\n <subnetId>subnet-a61dafcf</subnetId>\n <vpcId>vpc-c31dafaa</vpcId>\n <availabilityZone>ap-southeast-1b</availabilityZone>\n <description/>\n <ownerId>251839141158</ownerId>\n <requesterManaged>false</requesterManaged>\n <status>pending</status>\n <macAddress>02:74:b0:70:7f:1a</macAddress>\n <privateIpAddress>10.0.2.140</privateIpAddress>\n <sourceDestCheck>true</sourceDestCheck>\n <groupSet>\n <item>\n <groupId>sg-1a2b3c4d</groupId>\n <groupName>default</groupName>\n </item>\n </groupSet>\n <tagSet/>\n <privateIpAddressesSet>\n <item>\n <privateIpAddress>10.0.2.140</privateIpAddress>\n <primary>true</primary>\n </item>\n <item>\n <privateIpAddress>10.0.2.172</privateIpAddress>\n <primary>false</primary>\n </item>\n <item>\n <privateIpAddress>10.0.2.169</privateIpAddress>\n <primary>false</primary>\n </item>\n <item>\n <privateIpAddress>10.0.2.170</privateIpAddress>\n <primary>false</primary>\n </item>\n <item>\n <privateIpAddress>10.0.2.171</privateIpAddress>\n <primary>false</primary>\n </item>\n </privateIpAddressesSet>\n </networkInterface>\n</CreateNetworkInterfaceResponse>\n \n \n Example 3\n This example creates a network interface with a primary private IP\n\t\t\t\t\taddress of 10.0.2.130 and two secondary IP addresses of 10.0.2.132 and\n\t\t\t\t\t10.0.2.133.\n https://ec2.amazonaws.com/?Action=CreateNetworkInterface\n&PrivateIpAddresses.0.Primary=true\n&PrivateIpAddresses.0.PrivateIpAddress=10.0.2.130\n&PrivateIpAddresses.1.Primary=false\n&PrivateIpAddresses.1.PrivateIpAddress=10.0.2.132\n&PrivateIpAddresses.2.Primary=false\n&PrivateIpAddresses.2.PrivateIpAddress=10.0.2.133\n&SubnetId=subnet-a61dafcf\n&AUTHPARAMS\n <CreateNetworkInterfaceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n<requestId>a9565f4c-f928-4113-859b-905886d11658</requestId>\n <networkInterface>\n <networkInterfaceId>eni-41c47828</networkInterfaceId>\n <subnetId>subnet-a61dafcf</subnetId>\n <vpcId>vpc-c31dafaa</vpcId>\n <availabilityZone>ap-southeast-1b</availabilityZone>\n <description/>\n <ownerId>251839141158</ownerId>\n <requesterManaged>false</requesterManaged>\n <status>pending</status>\n <macAddress>02:74:b0:78:bf:ab</macAddress>\n <privateIpAddress>10.0.2.130</privateIpAddress>\n <sourceDestCheck>true</sourceDestCheck>\n <groupSet>\n <item>\n <groupId>sg-188d9f74</groupId>\n <groupName>default</groupName>\n </item>\n </groupSet>\n <tagSet/>\n <privateIpAddressesSet>\n <item>\n <privateIpAddress>10.0.2.130</privateIpAddress>\n <primary>true</primary>\n </item>\n <item>\n <privateIpAddress>10.0.2.133</privateIpAddress>\n <primary>false</primary>\n </item>\n <item>\n <privateIpAddress>10.0.2.132</privateIpAddress>\n <primary>false</primary>\n </item>\n </privateIpAddressesSet>\n </networkInterface>\n</CreateNetworkInterfaceResponse>\n \n " - }, - "CreatePlacementGroup":{ - "name":"CreatePlacementGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreatePlacementGroupRequest"}, - "documentation":"

Creates a placement group that you launch cluster instances into. You must give\n\t\t\t the group a name that's unique within the scope of your account.

\n

For more information about placement groups and cluster instances, see\n\t\t\t\tCluster Instances\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example creates a placement group named XYZ-cluster.\n https://ec2.amazonaws.com/?Action=CreatePlacementGroup\n&GroupName=XYZ-cluster\n&Strategy=cluster\n&AUTHPARAMS\n <CreatePlacementGroupResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>d4904fd9-82c2-4ea5-adfe-a9cc3EXAMPLE</requestId>\n <return>true</return>\n</CreatePlacementGroupResponse>\n \n " - }, - "CreateReservedInstancesListing":{ - "name":"CreateReservedInstancesListing", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateReservedInstancesListingRequest"}, - "output":{"shape":"CreateReservedInstancesListingResult"}, - "documentation":"

Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved Instance Marketplace. \n You can submit one Reserved Instance listing at a time.

\n

For more information, see Reserved Instance Marketplace in the\n\t\t\t\tAmazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example creates a Reserved Instance Marketplace listing from the \n specified Reserved Instance, which has 11 months remaining in its term. \n In this example, we set the upfront price at $2.50, and the price drops\n\t\t\t\t\tover the course of the 11-month term if the instance is still not sold.\n https://ec2.amazonaws.com/?Action=CreateReservedInstancesListing\n&ClientToken=myIdempToken1\n&InstanceCount=1\n&PriceSchedules.0.Price=2.5\n&PriceSchedules.0.Term=11\n&PriceSchedules.1.Price=2.0\n&PriceSchedules.1.Term=8\n&PriceSchedules.2.Price=1.5\n&PriceSchedules.2.Term=5\n&PriceSchedules.3.Price=0.7\n&PriceSchedules.3.Term=3\n&PriceSchedules.4.Price=0.1\n&PriceSchedules.4.Term=1\n&ReservedInstancesId=e5a2ff3b-7d14-494f-90af-0b5d0EXAMPLE\n&AUTHPARAMS\n \n a42481af-335a-4e9e-b291-bd18dexample\n \n \n 5ec28771-05ff-4b9b-aa31-9e57dEXAMPLE\n e5a2ff3b-7d14-494f-90af-0b5d0EXAMPLE\n 2012-07-17T17:11:09.449Z\n 2012-07-17T17:11:09.468Z\n active\n ACTIVE\n \n \n Available\n 1\n \n \n Sold\n 0\n \n \n Cancelled\n 0\n \n \n Pending\n 0\n \n \n \n \n 11\n 2.5\n USD\n true\n \n \n 10\n 2.5\n USD\n false\n \n \n 9\n 2.5\n USD\n false\n \n \n 8\n 2.0\n USD\n false\n \n \n 7\n 2.0\n USD\n false\n \n \n 6\n 2.0\n USD\n false\n \n \n 5\n 1.5\n USD\n false\n \n \n 4\n 1.5\n USD\n false\n \n \n 3\n 0.7\n USD\n false\n \n \n 2\n 0.7\n USD\n false\n \n \n 1\n 0.1\n USD\n false\n \n \n \n myIdempToken1\n \n \n\n \n " - }, - "CreateRoute":{ - "name":"CreateRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateRouteRequest"}, - "documentation":"

Creates a route in a route table within a VPC.

\n

You must specify one of the following targets: Internet gateway, NAT instance, VPC peering connection, or network interface.

\n

When determining how to route traffic, we use the route with the most specific\n\t\t\tmatch. For example, let's say the traffic is destined for 192.0.2.3, and the route\n\t\t\ttable includes the following two routes:

\n\t\t\t
    \n\t\t\t\t
  • \n\t\t\t\t\t

    192.0.2.0/24 (goes to some target A)

    \n\t\t\t\t
  • \n\t\t\t\t
  • \n\t\t\t\t\t

    192.0.2.0/28 (goes to some target B)

    \n\t\t\t\t
  • \n\t\t\t
\n\t\t

Both routes apply to the traffic destined for 192.0.2.3. However, the second route\n\t\t\t\tin the list covers a smaller number of IP addresses and is therefore more specific,\n\t\t\t\tso we use that route to determine where to target the traffic.

\n

For more information about route tables, see Route Tables in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example creates a route in the route table with the ID rtb-e4ad488d. The\n\t\t\t\t\troute matches all traffic (0.0.0.0/0) and routes it to the Internet gateway with the\n\t\t\t\t\tID igw-eaad4883.\n https://ec2.amazonaws.com/?Action=CreateRoute\n&RouteTableId=rtb-e4ad488d\n&DestinationCidrBlock=0.0.0.0/0\n&GatewayId=igw-eaad4883\n&AUTHPARAMS\n \n \n Example 2\n This example creates a route in the route table with the ID rtb-g8ff4ea2. The\n\t\t\t\t\troute sends all traffic (0.0.0.0/0) to the NAT instance with the ID\n\t\t\t\t\ti-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=CreateRoute\n&RouteTableId=rtb-g8ff4ea2\n&DestinationCidrBlock=0.0.0.0/0\n&InstanceId=i-1a2b3c4d\n&AUTHPARAMS\n \n \n Example 3\n This example command creates a route in route table rtb-g8ff4ea2. The route\n matches traffic for the CIDR block 10.0.0.0/16 and routes it to VPC\n peering connection, pcx-111aaa22. This route enables traffic to be\n directed to the other peered VPC in the VPC peering connection.\n https://ec2.amazonaws.com/?Action=CreateRoute\n&RouteTableId=rtb-g8ff4ea2\n&DestinationCidrBlock=10.0.0.0/16\n&vpcPeeringConnectionId=pcx-111aaa22\n&AUTHPARAMS\n \n " - }, - "CreateRouteTable":{ - "name":"CreateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateRouteTableRequest"}, - "output":{"shape":"CreateRouteTableResult"}, - "documentation":"

Creates a route table for the specified VPC. After you create a route table, you can\n\t\t\tadd routes and associate the table with a subnet.

\n

For more information about route tables, see Route Tables in\n\t\t\t\tthe Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates a route table for the VPC with the ID vpc-11ad4878.\n By default, every route table includes a local route that enables traffic to\n\t\t\t\t\tflow within the VPC. The following response shows that route.\n https://ec2.amazonaws.com/?Action=CreateRouteTable\n&VpcId=vpc-11ad4878\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n rtb-f9ad4890\n vpc-11ad4878\n \n \n 10.0.0.0/22\n local\n active\n \n \n \n \n \n\n \n " - }, - "CreateSecurityGroup":{ - "name":"CreateSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSecurityGroupRequest"}, - "output":{"shape":"CreateSecurityGroupResult"}, - "documentation":"

Creates a security group.

\n

A security group is for use with instances either in the EC2-Classic platform \n\t\t\t\tor in a specific VPC. For more information, see\n\t\t\t\tAmazon EC2 Security Groups in \n\t\t\t\tthe Amazon Elastic Compute Cloud User Guide and \n\t\t\t\tSecurity Groups for Your VPC in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n\t\t\t\t

EC2-Classic: You can have up to 500 security groups.

\n\t\t\t\t

EC2-VPC: You can create up to 100 security groups per VPC.

\n\t\t\t
\n

When you create a security group, you specify a friendly name of your choice. You\n\t\t\t\tcan have a security group for use in EC2-Classic with the same name as a security group\n\t\t\t\tfor use in a VPC. However, you can't have two security groups for use in EC2-Classic with the\n\t\t\t\tsame name or two security groups for use in a VPC with the same name.

\n

You have a default security group for use in EC2-Classic and a default security group\n\t\t\t\tfor use in your VPC. If you don't specify a security group when you launch an instance, the\n\t\t\t\tinstance is launched into the appropriate default security group. A default security\n\t\t\t\tgroup includes a default rule that grants instances unrestricted network access to\n\t\t\t\teach other.

\n

You can add or remove rules from your security groups using \n\t\t\t\t\tAuthorizeSecurityGroupIngress,\n\t\t\t\t\tAuthorizeSecurityGroupEgress,\n\t\t\t\t\tRevokeSecurityGroupIngress, and\n\t\t\t\t\tRevokeSecurityGroupEgress.

\n \n \n Example for EC2-Classic\n This example creates a security group named websrv for EC2-Classic.\n https://ec2.amazonaws.com/?Action=CreateSecurityGroup\n&GroupName=websrv\n&GroupDescription=Web Servers\n&AUTHPARAMS\n <CreateSecurityGroupResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n <groupId>sg-1a2b3c4d</groupId>\n</CreateSecurityGroupResponse>\n \n \n Example for EC2-VPC\n This example creates a security group named WebServerSG for the specified VPC.\n https://ec2.amazonaws.com/?Action=CreateSecurityGroup\n&GroupName=WebServerSG\n&GroupDescription=Web Servers\n&VpcId=vpc-3325caf2\n&AUTHPARAMS\n <CreateSecurityGroupResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n <groupId>sg-0a42d66a</groupId>\n</CreateSecurityGroupResponse>\n \n " - }, - "CreateSnapshot":{ - "name":"CreateSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSnapshotRequest"}, - "output":{ - "shape":"Snapshot", - "locationName":"snapshot", - "queryName":"Snapshot" - }, - "documentation":"

Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You can use snapshots for backups,\n to make copies of Amazon EBS volumes, and to save data before shutting down an instance.

\n

When a snapshot is created, any AWS Marketplace product codes that are associated with the\n source volume are propagated to the snapshot.

\n

You can take a snapshot of an attached volume that is in use. However, snapshots only capture\n data that has been written to your Amazon EBS volume at the time the snapshot command is issued;\n this may exclude any data that has been cached by any applications or the operating system. If\n you can pause any file writes to the volume long enough to take a snapshot, your snapshot\n should be complete. However, if you cannot pause all file writes to the volume, you should\n unmount the volume from within the instance, issue the snapshot command, and then remount the\n volume to ensure a consistent and complete snapshot. You may remount and use your volume while\n the snapshot status is pending.

\n

To create a snapshot for Amazon EBS volumes that serve as root devices, you should stop the instance\n before taking the snapshot.

\n

Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are\n created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and\n any associated snapshots always remain protected.

\n

For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example creates a snapshot of the volume with the ID\n vol-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=CreateSnapshot\n&VolumeId=vol-1a2b3c4d\n&Description=Daily+Backup\n&AUTHPARAMS\n <CreateSnapshotResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <snapshotId>snap-1a2b3c4d</snapshotId>\n <volumeId>vol-1a2b3c4d</volumeId>\n <status>pending</status>\n <startTime>YYYY-MM-DDTHH:MM:SS.000Z</startTime>\n <progress>60%</progress>\n <ownerId>111122223333</ownerId>\n <volumeSize>30</volumeSize>\n <description>Daily Backup</description>\n</CreateSnapshotResponse>\n \n " - }, - "CreateSpotDatafeedSubscription":{ - "name":"CreateSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSpotDatafeedSubscriptionRequest"}, - "output":{"shape":"CreateSpotDatafeedSubscriptionResult"}, - "documentation":"

Creates a datafeed for Spot Instances, enabling you to view Spot Instance usage logs.\n\t\t\t\tYou can create one data feed per AWS account. For more information, see\n\t\t\t\tSpot Instances in\n\t\t\t\tthe Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example creates a Spot Instance datafeed for the account.\n https://ec2.amazonaws.com/?Action=CreateSpotDatafeedSubscription\n&Bucket=my-s3-bucket\n&AUTHPARAMS\n <CreateSpotDatafeedSubscriptionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <spotDatafeedSubscription>\n <ownerId>123456789012</ownerId>\n <bucket>my-s3-bucket</bucket>\n <prefix>spotdata_</prefix>\n <state>Active</state>\n </spotDatafeedSubscription>\n</CreateSpotDatafeedSubscriptionResponse>\n \n " - }, - "CreateSubnet":{ - "name":"CreateSubnet", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSubnetRequest"}, - "output":{"shape":"CreateSubnetResult"}, - "documentation":"

Creates a subnet in an existing VPC.

\n

When you create each subnet, you provide the VPC ID and the CIDR block you want\n\t\t\t\tfor the subnet. After you create a subnet, you can't change its CIDR block. The\n\t\t\t\tsubnet's CIDR block can be the same as the VPC's CIDR block (assuming you want only\n\t\t\t\ta single subnet in the VPC), or a subset of the VPC's CIDR block. If you create more\n\t\t\t\tthan one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest\n\t\t\t\tsubnet (and VPC) you can create uses a /28 netmask (16 IP addresses), and the\n\t\t\t\tlargest uses a /16 netmask (65,536 IP addresses).

\n \n

AWS reserves both the first four and the last IP address in each subnet's\n CIDR block. They're not available for use.

\n
\n\t\t

If you add more than one subnet to a VPC, they're set up in a star topology with a\n\t\t\t\tlogical router in the middle.

\n\t\t

For more information about subnets, see Your VPC and Subnets\n\t\t\t in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates a subnet with CIDR block 10.0.1.0/24 in the VPC with the ID\n\t\t\t\t\tvpc-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=CreateSubnet\n&VpcId=vpc-1a2b3c4d\n&CidrBlock=10.0.1.0/24\n&AUTHPARAMS\n <CreateSubnetResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <subnet>\n <subnetId>subnet-9d4a7b6c</subnetId>\n <state>pending</state>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <cidrBlock>10.0.1.0/24</cidrBlock> \n <availableIpAddressCount>251</availableIpAddressCount>\n <availabilityZone>us-east-1a</availabilityZone>\n <tagSet/>\n </subnet>\n</CreateSubnetResponse>\n \n " - }, - "CreateTags":{ - "name":"CreateTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateTagsRequest"}, - "documentation":"

Adds or overwrites one or more tags for the specified EC2 resource or resources.\n Each resource can have a maximum of 10 tags. Each tag consists of a key and optional\n value. Tag keys must be unique per resource.

\n

For more information about tags, see Tagging\n Your Resources in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request adds (or overwrites) two tags for an AMI and an instance. One\n of the tags is just a key (webserver), with no value (we set the value to an empty\n string). The other tag consists of a key (stack) and value\n (Production).\n https://ec2.amazonaws.com/?Action=CreateTags\n&ResourceId.1=ami-1a2b3c4d\n&ResourceId.2=i-7f4d3a2b\n&Tag.1.Key=webserver\n&Tag.1.Value=\n&Tag.2.Key=stack\n&Tag.2.Value=Production\n&AUTHPARAMS\n \n 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE\n true\n\n \n " - }, - "CreateVolume":{ - "name":"CreateVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVolumeRequest"}, - "output":{ - "shape":"Volume", - "locationName":"volume", - "queryName":"Volume" - }, - "documentation":"

Creates an Amazon EBS volume that can be attached to an instance in the same Availability Zone.\n The volume is created in the specified region.

\n

You can create a new empty volume or restore a volume from an Amazon EBS snapshot.\n Any AWS Marketplace product codes from the snapshot are propagated to the volume.

\n

You can create encrypted volumes with the\n Encrypted parameter. Encrypted volumes may only be attached to instances\n that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also\n automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

\n

For more information, see Creating or\n Restoring an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request creates an 80 GiB encrypted volume in the Availability\n Zone us-east-1a.\n https://ec2.amazonaws.com/?Action=CreateVolume\n&Size=80\n&AvailabilityZone=us-east-1a\n&Encrypted=1\n&AUTHPARAMS\n <CreateVolumeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <volumeId>vol-1a2b3c4d</volumeId>\n <size>80</size>\n <snapshotId/>\n <availabilityZone>us-east-1a</availabilityZone>\n <status>creating</status>\n <createTime>YYYY-MM-DDTHH:MM:SS.000Z</createTime>\n <volumeType>standard</volumeType>\n <encrypted>true</encrypted>\n</CreateVolumeResponse>\n \n " - }, - "CreateVpc":{ - "name":"CreateVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpcRequest"}, - "output":{"shape":"CreateVpcResult"}, - "documentation":"

Creates a VPC with the specified CIDR block.

\n\t\t

The smallest VPC you can create uses a /28 netmask (16 IP addresses), \n\t\t\t\tand the largest uses a /16 netmask (65,536 IP addresses). \n\t\t\t\tTo help you decide how big to make your VPC, see Your VPC and Subnets in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n\t\t

By default, each instance you launch in the VPC has the default DHCP options, which\n\t\t\t includes only a default DNS server that we provide (AmazonProvidedDNS).\n\t\t\t For more information about DHCP options, see DHCP Options Sets\n\t\t\t\tin the Amazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example creates a VPC with the CIDR block 10.0.0.0/16.\n https://ec2.amazonaws.com/?Action=CreateVpc\n&CidrBlock=10.0.0.0/16\n&AUTHPARAMS\n <CreateVpcResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\t\t\t\t\t\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpc>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <state>pending</state>\n <cidrBlock>10.0.0.0/16</cidrBlock> \n <dhcpOptionsId>dopt-1a2b3c4d2</dhcpOptionsId>\n <instanceTenancy>default</instanceTenancy>\n <tagSet/>\n </vpc>\n</CreateVpcResponse>\n \n \n Example 2\n This example creates a VPC with the dedicated tenancy option.\n https://ec2.amazonaws.com/?Action=CreateVpc\n&CidrBlock=10.32.0.0/16\n&InstanceTenancy=dedicated\n&AUTHPARAMS\n <CreateVpcResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>a9e49797-a74f-4f68-b302-a134a51fd054</requestId>\n <vpc>\n <vpcId>vpc-11a63c78</vpcId>\n <state>pending</state>\n <cidrBlock>10.32.0.0/16</cidrBlock>\n <dhcpOptionsId>dopt-1a2b3c4d2</dhcpOptionsId>\n <instanceTenancy>dedicated</instanceTenancy>\n </vpc>\n</CreateVpcResponse>\n \n " - }, - "CreateVpcPeeringConnection":{ - "name":"CreateVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpcPeeringConnectionRequest"}, - "output":{"shape":"CreateVpcPeeringConnectionResult"}, - "documentation":"

Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer\n VPC with which to create the connection. The peer VPC can belong to another AWS\n account. The requester VPC and peer VPC cannot have overlapping CIDR blocks.

\n

The owner of the peer VPC must accept the peering request to activate the peering\n connection. The VPC peering connection request expires after 7 days, after which it\n cannot be accepted or rejected.

\n

A CreateVpcPeeringConnection request between VPCs with overlapping CIDR blocks\n results in the VPC peering connection having a status of failed.

\n \n \n Example 1\n This example requests a peering connection between your VPC (vpc-1a2b3c4d),\n and a VPC (vpc-a1b2c3d4) that belongs to AWS account\n 123456789012. \n https://ec2.amazonaws.com/?Action=CreateVpcPeeringConnection\n&VpcId=vpc-1a2b3c4d\n&PeerVpcId=vpc-a1b2c3d4\n&PeerOwnerId=123456789012\n&AUTHPARAMS \n <CreateVpcPeeringConnectionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpcPeeringConnection>\n <vpcPeeringConnectionId>pcx-73a5401a</vpcPeeringConnectionId>\n <requesterVpcInfo>\n <ownerId>777788889999</ownerId>\n <vpcId>vpc-vpc-1a2b3c4d</vpcId>\n <cidrBlock>10.0.0.0/28</cidrBlock>\n </requesterVpcInfo>\n <accepterVpcInfo>\n <ownerId>123456789012</ownerId>\n <vpcId>vpc-a1b2c3d4</vpcId>\n </accepterVpcInfo>\n <status>\n <code>initiating-request</code>\n <message>Initiating Request to 123456789012</message>\n </status>\n <expirationTime>2014-02-18T14:37:25.000Z</expirationTime>\n <tagSet/>\n </vpcPeeringConnection>\n</CreateVpcPeeringConnectionResponse>\n \n \n Example 2\n This example requests a peering connection between your VPCs vpc-1a2b3c4d and vpc-11122233.\n https://ec2.amazonaws.com/?Action=CreateVpcPeeringConnection\n&VpcId=vpc-1a2b3c4d\n&PeerVpcId=vpc-11122233\n&AUTHPARAMS\n \n " - }, - "CreateVpnConnection":{ - "name":"CreateVpnConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnConnectionRequest"}, - "output":{"shape":"CreateVpnConnectionResult"}, - "documentation":"

Creates a VPN connection between an existing virtual private gateway and a VPN customer\n\t\t\t\tgateway. The only supported connection type is ipsec.1.

\n\t\t

The response includes information that you need to give to your network administrator \n\t\t to configure your customer gateway.

\n \n\t\t\t

We strongly recommend that you use HTTPS when calling this operation\n\t\t\t\t\tbecause the response contains sensitive cryptographic information for\n\t\t\t\t\tconfiguring your customer gateway.

\n\t\t
\n\t\t

If you decide to shut down your VPN connection for any reason and later create a new VPN\n\t\t\t\tconnection, you must reconfigure your customer gateway with the new information\n\t\t\t\treturned from this call.

\n\t\t

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway\n\t\t\t\tto Your VPC in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example creates a VPN connection between the virtual private gateway with the ID\n\t\t\t\t\tvgw-8db04f81 and the customer gateway with the ID cgw-b4dc3961. The response\n\t\t\t\t\tincludes configuration information for the customer gateway. Because it's a long set of information, we haven't\n\t\t\t\t included the complete response here. To see an example of the configuation information,\n\t\t\t\t see the Amazon Virtual Private Cloud Network Administrator Guide.\n https://ec2.amazonaws.com/?Action=CreateVpnConnection\n&Type=ipsec.1\n&CustomerGatewayId=cgw-b4dc3961\n&VpnGatewayId=vgw-8db04f81\n&AUTHPARAMS\n <CreateVpnConnectionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpnConnection>\n <vpnConnectionId>vpn-44a8938f</vpnConnectionId>\n <state>pending</state>\n <customerGatewayConfiguration>\n ...Customer gateway configuration data in escaped XML format...\n </customerGatewayConfiguration> \n <type>ipsec.1</type>\n <customerGatewayId>cgw-b4dc3961</customerGatewayId>\n <vpnGatewayId>vgw-8db04f81</vpnGatewayId>\n <tagSet/>\n </vpnConnection>\n</CreateVpnConnectionResponse>\n \n \n Example 2\n This example creates a VPN connection with the static routes option between\n\t\t\t\t\tthe virtual private gateway with the ID vgw-8db04f81, and the customer\n\t\t\t\t\tgateway with the ID cgw-b4dc3961, for a device that does not support the Border\n\t\t\t\t\tGateway Protocol (BGP). The response includes configuration information for the\n\t\t\t\t\tVPN connection's customer gateway. Because it's a long set of information, we haven't\n\t\t\t\t\tincluded the complete response here.\n https://ec2.amazonaws.com/?Action=CreateVpnConnection\n&Type=ipsec.1\n&CustomerGatewayId=cgw-b4dc3961\n&VpnGatewayId=vgw-8db04f81\n&Options.StaticRoutesOnly=true\n&AUTHPARAMS\n <CreateVpnConnectionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>5cc7891f-1f3b-4fc4-a626-bdea8f63ff5a</requestId>\n <vpnConnection>\n <vpnConnectionId>vpn-83ad48ea</vpnConnectionId>\n <state>pending</state>\n <customerGatewayConfiguration>\n ...Customer gateway configuration data in escaped XML format...\n </customerGatewayConfiguration>\n <customerGatewayId>cgw-63ae4b0a</customerGatewayId>\n <vpnGatewayId>vgw-4ea04527</vpnGatewayId>\n <options>\n <staticRoutesOnly>true</staticRoutesOnly>\n </options>\n <routes/>\n </vpnConnection>\n</CreateVpnConnectionResponse>\n \n " - }, - "CreateVpnConnectionRoute":{ - "name":"CreateVpnConnectionRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnConnectionRouteRequest"}, - "documentation":"

Creates a static route associated with a VPN connection between an existing\n\t\t\t\tvirtual private gateway and a VPN customer gateway. The static route allows traffic\n\t\t\t\tto be routed from the virtual private gateway to the VPN customer gateway.

\n\t\t

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway\n\t\t\t\tto Your VPC in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates a static route to the VPN connection for the VPN\n\t\t\t\t\tconnection with the ID vpn-83ad48ea to the destination CIDR block 11.12.0.0/16. Note that\n\t\t\t\t\twhen using the Query API the \"/\" is denoted as \"%2F\".\n https://ec2.amazonaws.com/?Action=CreateVpnConnectionRoute\n&DestinationCidrBlock=11.12.0.0%2F16\n&VpnConnectionId=vpn-83ad48ea\n&AUTHPARAMS\n <CreateVpnConnectionRouteResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>4f35a1b2-c2c3-4093-b51f-abb9d7311990</requestId>\n <return>true</return>\n</CreateVpnConnectionRouteResponse>\n \n " - }, - "CreateVpnGateway":{ - "name":"CreateVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnGatewayRequest"}, - "output":{"shape":"CreateVpnGatewayResult"}, - "documentation":"

Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your\n\t\t\t\tVPN connection. You can create a virtual private gateway before creating the VPC itself.

\n\t\t

For more information about virtual private gateways, see Adding a Hardware Virtual Private Gateway\n\t\t\t\tto Your VPC in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example creates a virtual private gateway.\n https://ec2.amazonaws.com/?Action=CreateVpnGateway\n&Type=ipsec.1\n&AUTHPARAMS\n <CreateVpnGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpnGateway>\n <vpnGatewayId>vgw-8db04f81</vpnGatewayId>\n <state>pending</state>\n <type>ipsec.1</type>\n <availabilityZone>us-east-1a</availabilityZone>\n <attachments/>\n <tagSet/>\n </vpnGateway>\n</CreateVpnGatewayResponse>\n \n " - }, - "DeleteCustomerGateway":{ - "name":"DeleteCustomerGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteCustomerGatewayRequest"}, - "documentation":"

Deletes the specified customer gateway. You must delete the VPN connection before you can delete\n\t\t\t\tthe customer gateway.

\n \n \n Example\n This example deletes the specified customer gateway.\n https://ec2.amazonaws.com/?Action=DeleteCustomerGateway\n&CustomerGatewayId=cgw-b4dc3961\n&AUTHPARAMS\n <DeleteCustomerGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</DeleteCustomerGatewayResponse>\n \n " - }, - "DeleteDhcpOptions":{ - "name":"DeleteDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteDhcpOptionsRequest"}, - "documentation":"

Deletes the specified set of DHCP options. You must disassociate the set of DHCP options\n\t\t\t\tbefore you can delete it. You can disassociate the set of DHCP options by\n\t\t\t\tassociating either a new set of options or the default set of options with the VPC.

\n \n \n Example\n This example deletes the specified set of DHCP options.\n https://ec2.amazonaws.com/?Action=DeleteDhcpOptions\t\t\t\t\t\t\t \n&DhcpOptionsId=dopt-7a8b9c2d\n&AUTHPARAMS\n <DeleteDhcpOptionsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\t\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId> \n <return>true</return>\n</DeleteDhcpOptionsResponse>\n \n " - }, - "DeleteInternetGateway":{ - "name":"DeleteInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteInternetGatewayRequest"}, - "documentation":"

Deletes the specified Internet gateway. You must detach the Internet gateway \n\t\t\t\tfrom the VPC before you can delete it.

\n \n \n Example\n This example deletes the specified Internet gateway.\n https://ec2.amazonaws.com/?Action=DeleteInternetGateway\n&InternetGatewayId=igw-eaad4883\n&AUTHPARAMS\n <DeleteInternetGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteInternetGatewayResponse>\n \n " - }, - "DeleteKeyPair":{ - "name":"DeleteKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteKeyPairRequest"}, - "documentation":"

Deletes the specified key pair, by removing the public key from Amazon EC2.

\n \n \n Example\n This example request deletes the key pair named my-key-pair.\n https://ec2.amazonaws.com/?Action=DeleteKeyPair\n&KeyName=my-key-pair\n&AUTHPARAMS\n <DeleteKeyPairResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteKeyPairResponse>\n \n " - }, - "DeleteNetworkAcl":{ - "name":"DeleteNetworkAcl", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkAclRequest"}, - "documentation":"

Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. \n\t\t\t\tYou can't delete the default network ACL.

\n \n \n Example\n This example deletes the specified network ACL.\n https://ec2.amazonaws.com/?Action=DeleteNetworkAcl\n&NetworkAclId=acl-2cb85d45\n&AUTHPARAMS\n <DeleteNetworkAclResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteNetworkAclResponse>\n \n " - }, - "DeleteNetworkAclEntry":{ - "name":"DeleteNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkAclEntryRequest"}, - "documentation":"

Deletes the specified ingress or egress entry (rule) from the specified network ACL.

\n \n \n Example\n This example deletes ingress rule number 100 from the specified network ACL.\n https://ec2.amazonaws.com/?Action=DeleteNetworkAclEntry\n&NetworkAclId=acl-2cb85d45\n&RuleNumber=100\n&AUTHPARAMS\n <DeleteNetworkAclEntryResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteNetworkAclEntryResponse>\n \n " - }, - "DeleteNetworkInterface":{ - "name":"DeleteNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkInterfaceRequest"}, - "documentation":"

Deletes the specified network interface. You must detach the network interface\n\t\t\t before you can delete it.

\n \n \n Example\n This example deletes the specified network interface.\n https://ec2.amazonaws.com/?Action=DeleteNetworkInterface\n&NetworkInterfaceId=eni-ffda3197\n&AUTHPARAMS\n <DeleteNetworkInterfaceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>e1c6d73b-edaa-4e62-9909-6611404e1739</requestId>\n <return>true</return>\n</DeleteNetworkInterfaceResponse>\n \n " - }, - "DeletePlacementGroup":{ - "name":"DeletePlacementGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeletePlacementGroupRequest"}, - "documentation":"

Deletes the specified placement group. You must terminate all instances in the\n\t\t\t\tplacement group before you can delete the placement group. For more information about placement groups and\n\t\t\t\tcluster instances, see Cluster Instances\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example deletes the placement group named XYZ-cluster.\n https://ec2.amazonaws.com/?Action=DeletePlacementGroup\n&GroupName=XYZ-cluster\n&AUTHPARAMS\n <DeletePlacementGroupResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>d4904fd9-82c2-4ea5-adfe-a9cc3EXAMPLE</requestId>\n <return>true</return>\n</DeletePlacementGroupResponse>\n \n " - }, - "DeleteRoute":{ - "name":"DeleteRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRouteRequest"}, - "documentation":"

Deletes the specified route from the specified route table.

\n \n \n Example\n This example deletes the route with destination CIDR 172.16.1.0/24 from the\n\t\t\t\t\tspecified route table.\n https://ec2.amazonaws.com/?Action=DeleteRoute\n&RouteTableId=rtb-e4ad488d\n&DestinationCidrBlock=172.16.1.0/24\n&AUTHPARMS\n <DeleteRouteResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteRouteResponse>\n \n " - }, - "DeleteRouteTable":{ - "name":"DeleteRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRouteTableRequest"}, - "documentation":"

Deletes the specified route table. You must disassociate the route table from any subnets\n\t\t\t\tbefore you can delete it. You can't delete the main route table.

\n \n \n Example\n This example deletes the specified route table.\n https://ec2.amazonaws.com/?Action=DeleteRouteTable\n&RouteTableId=rtb-e4ad488d\n&AUTHPARAMS\n <DeleteRouteTableResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteRouteTableResponse>\n \n " - }, - "DeleteSecurityGroup":{ - "name":"DeleteSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSecurityGroupRequest"}, - "documentation":"

Deletes a security group.

\n

If you attempt to delete a security group that is associated with an instance, or is\n\t\t\t referenced by another security group, the operation fails with\n\t\t\t\tInvalidGroup.InUse in EC2-Classic or\n\t\t\t\tDependencyViolation in EC2-VPC.

\n \n \n Example for EC2-Classic\n This example deletes the specified security group for EC2-Classic.\n https://ec2.amazonaws.com/?Action=DeleteSecurityGroup\n&GroupName=websrv\n&AUTHPARAMS\n <DeleteSecurityGroupResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteSecurityGroupResponse>\n \n \n Example for EC2-VPC\n his example deletes the specified security group for EC2-VPC.\n https://ec2.amazonaws.com/?Action=DeleteSecurityGroup\n&GroupId=sg-1a2b3c4d\n&AUTHPARAMS\n <DeleteSecurityGroupResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteSecurityGroupResponse>\n \n " - }, - "DeleteSnapshot":{ - "name":"DeleteSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSnapshotRequest"}, - "documentation":"

Deletes the specified snapshot.

\n

When you make periodic snapshots of a volume, the snapshots are incremental, and only the\n blocks on the device that have changed since your last snapshot are saved in the new snapshot.\n When you delete a snapshot, only the data not needed for any other snapshot is removed. So\n regardless of which prior snapshots have been deleted, all active snapshots will have access\n to all the information needed to restore the volume.

\n

You cannot delete a snapshot of the root device of an Amazon EBS volume used by a registered AMI.\n You must first de-register the AMI before you can delete the snapshot.

\n

For more information, see Deleting an\n Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request deletes the snapshot with the ID\n snap-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=DeleteSnapshot\n&SnapshotId.1=snap-1a2b3c4d\n&AUTHPARAMS\n <DeleteSnapshotResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteSnapshotResponse>\n \n " - }, - "DeleteSpotDatafeedSubscription":{ - "name":"DeleteSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSpotDatafeedSubscriptionRequest"}, - "documentation":"

Deletes the datafeed for Spot Instances. For more information, see\n\t\t\t\tSpot Instances in\n\t\t\t\tthe Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request deletes the datafeed for the AWS account.\n https://ec2.amazonaws.com/?Action=DeleteSpotDatafeedSubscription\n&AUTHPARAMS\n <DeleteSpotDatafeedSubscriptionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteSpotDatafeedSubscriptionResponse>\n \n " - }, - "DeleteSubnet":{ - "name":"DeleteSubnet", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSubnetRequest"}, - "documentation":"

Deletes the specified subnet. You must terminate all running instances in the\n\t\t\t\tsubnet before you can delete the subnet.

\n \n \n Example\n This example deletes the specified subnet.\n https://ec2.amazonaws.com/?Action=DeleteSubnet\n&SubnetId=subnet-9d4a7b6c\n&AUTHPARAMS\n <DeleteSubnetResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\t\t\t\t\t\t\t\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</DeleteSubnetResponse>\n \n " - }, - "DeleteTags":{ - "name":"DeleteTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteTagsRequest"}, - "documentation":"

Deletes the specified set of tags from the specified set of resources. This call is designed\n to follow a DescribeTags request.

\n

For more information about tags, see Tagging\n Your Resources in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example deletes the tags for the AMI with the ID ami-1a2b3c4d.\n First, get a list of the tags by using the DescribeTags request, then delete\n them.\n https://ec2.amazonaws.com/?Action=DeleteTags\n&ResourceId.1=ami-1a2b3c4d\n&Tag.1.Key=webserver\n&Tag.2.Key=stack\n&AUTHPARAMS\n \n 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE\n true\n\n \n \n Example\n This example deletes the stack and webserver tags for two\n particular instances.\n https://ec2.amazonaws.com/?Action=DeleteTags\n&ResourceId.1=i-5f4e3d2a\n&ResourceId.2=i-5f4e3d2a\n&Tag.1.Key=stack\n&Tag.2.Key=webserver\n&AUTHPARAMS\n \n \n Example\n You can specify a tag key without a corresponding tag value to delete the tag\n regardless of its value. This example request deletes all tags that have a key of\n Purpose, regardless of the tag value.\n https://ec2.amazonaws.com/?Action=DeleteTags\n&ResourceId.1=i-5f4e3d2a\n&Tag.1.Key=Purpose\n&AUTHPARAMS\n \n \n Example\n When you create a tag, you can set the tag value to the empty\n string. Correspondingly, you can delete only tags that have a specific key and whose value is\n the empty string. This example request deletes all tags for the specified instance where the\n key is Purpose and the tag value is the empty string.\n https://ec2.amazonaws.com/?Action=DeleteTags\n&ResourceId.1=i-5f4e3d2a\n&Tag.1.Key=Purpose\n&Tag.2.Value=\n&AUTHPARAMS\n \n " - }, - "DeleteVolume":{ - "name":"DeleteVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVolumeRequest"}, - "documentation":"

Deletes the specified Amazon EBS volume. The volume must be in the available state (not\n attached to an instance).

\n \n

The volume may remain in the deleting state for several minutes.

\n
\n

For more information, see Deleting an Amazon EBS\n Volume in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request deletes the volume with the ID\n vol-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=DeleteVolume\n&VolumeId=vol-1a2b3c4d\n&AUTHPARAMS\n <DeleteVolumeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeleteVolumeResponse>\n \n " - }, - "DeleteVpc":{ - "name":"DeleteVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpcRequest"}, - "documentation":"

Deletes the specified VPC. You must detach or delete all gateways and resources that are\n\t\t\t\tassociated with the VPC before you can delete it. For example, you must terminate all instances\n\t\t\t\trunning in the VPC, delete all security groups associated with the VPC (except the default one), \n\t\t\t\tdelete all route tables associated with the VPC (except the default one), and so on.

\n \n \n Example\n This example deletes the specified VPC.\n https://ec2.amazonaws.com/?Action=DeleteVpc\t\t\t\t\t\t\t \n&VpcId=vpc-1a2b3c4d\n&AUTHPARAMS\n <DeleteVpcResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\t\t\t\t\t\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</DeleteVpcResponse>\n \n " - }, - "DeleteVpcPeeringConnection":{ - "name":"DeleteVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpcPeeringConnectionRequest"}, - "output":{"shape":"DeleteVpcPeeringConnectionResult"}, - "documentation":"

Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the\n peer VPC can delete the VPC peering connection if it's in the active\n state. The owner of the requester VPC can delete a VPC peering connection in the\n pending-acceptance state.

\n \n \n Example\n This example deletes the specified VPC peering connection.\n https://ec2.amazonaws.com/?Action=DeleteVpcPeeringConnection\n &vpcPeeringConnectionId=pcx-1a2b3c4d\n&AUTHPARAMS\n <DeleteVpcPeeringConnectionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</DeleteVpcPeeringConnectionResponse>\n \n " - }, - "DeleteVpnConnection":{ - "name":"DeleteVpnConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnConnectionRequest"}, - "documentation":"

Deletes the specified VPN connection.

\n\t\t

If you're deleting the VPC and its associated components, we recommend that you\n\t\t\t\tdetach the virtual private gateway from the VPC and delete the VPC before deleting the VPN\n\t\t\t\tconnection.

\n \n \n Example\n This example deletes the specified VPN connection.\n https://ec2.amazonaws.com/?Action=DeleteVpnConnection\n&vpnConnectionId=vpn-44a8938f\n&AUTHPARAMS\n <DeleteVpnConnectionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\t\t\t\t\t\t\t\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</DeleteVpnConnectionResponse>\n \n " - }, - "DeleteVpnConnectionRoute":{ - "name":"DeleteVpnConnectionRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnConnectionRouteRequest"}, - "documentation":"

Deletes the specified static route associated with a VPN connection between an existing\n\t\t\t\tvirtual private gateway and a VPN customer gateway. The static route allows traffic\n\t\t\t\tto be routed from the virtual private gateway to the VPN customer gateway.

\n \n \n Example\n This example deletes a static route to the destination CIDR block\n\t\t\t\t\t11.12.0.0/16 associated with the VPN connection with the ID\n\t\t\t\t\tvpn-83ad48ea. Note that when using the Query API, the \"/\" is\n\t\t\t\t\tdenoted as \"%2F\".\n https://ec2.amazonaws.com/?Action=DeleteVpnConnectionRoute\n&DestinationCidrBlock=11.12.0.0%2F16\n&VpnConnectionId=vpn-83ad48ea\n&AUTHPARAMS\n <DeleteVpnConnectionRouteResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>4f35a1b2-c2c3-4093-b51f-abb9d7311990</requestId>\n <return>true</return>\n</DeleteVpnConnectionRouteResponse>\n \n " - }, - "DeleteVpnGateway":{ - "name":"DeleteVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnGatewayRequest"}, - "documentation":"

Deletes the specified virtual private gateway. We recommend that before you\n\t\t\t\tdelete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note\n\t\t\t\tthat you don't need to delete the virtual private gateway if you plan to delete and\n\t\t\t\trecreate the VPN connection between your VPC and your network.

\n \n \n Example\n This example deletes the specified virtual private gateway.\n https://ec2.amazonaws.com/?Action=DeleteVpnGateway\n&vpnGatewayId=vgw-8db04f81\n&AUTHPARAMS\n <DeleteVpnGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\t\t\t\t\t\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</DeleteVpnGatewayResponse>\n \n " - }, - "DeregisterImage":{ - "name":"DeregisterImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterImageRequest"}, - "documentation":"

Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch\n\t\t\t\tnew instances.

\n

This command does not delete the AMI.

\n \n \n Example\n This example request deregisters the specified AMI.\n https://ec2.amazonaws.com/?Action=DeregisterImage\n&ImageId=ami-4fa54026\n&AUTHPARAMS\n <DeregisterImageResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DeregisterImageResponse>\n \n " - }, - "DescribeAccountAttributes":{ - "name":"DescribeAccountAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAccountAttributesRequest"}, - "output":{"shape":"DescribeAccountAttributesResult"}, - "documentation":"

Describes the specified attribute of your AWS account.

\n \n \n Example\n This example describes the platforms that are supported by your\n\t\t\t\t\tAWS account. The first response is for an account that supports only EC2-VPC.\n\t\t\t\t\tThe second response if for an account that supports both EC2-Classic and EC2-VPC.\n https://ec2.amazonaws.com/?Action=DescribeAccountAttributes\n&AttributeName.1=supported-platforms\n&AUTHPARAMS\n <DescribeAccountAttributesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <accountAttributeSet>\n <item>\n <attributeName>supported-platforms</attributeName>\n <attributeValueSet>\n <item>\n <attributeValue>VPC</attributeValue>    \n </item>\n </attributeValueSet>\n </item>\n </accountAttributeSet>\n</DescribeAccountAttributesResponse>\n <DescribeAccountAttributesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <accountAttributeSet>\n <item>\n <attributeName>supported-platforms</attributeName>\n <attributeValueSet>\n <item>\n <attributeValue>EC2</attributeValue>    \n </item>\n <item>\n <attributeValue>VPC</attributeValue>    \n </item>\n </attributeValueSet>\n </item>\n </accountAttributeSet>\n</DescribeAccountAttributesResponse>\n \n \n Example 2\n This example describes the ID of your default VPC. \n The first response is for an account that supports only EC2-VPC.\n\t\t\t\t The second response if for an account that supports both EC2-Classic and EC2-VPC.\n https://ec2.amazonaws.com/?Action=DescribeAccountAttributes\n&AttributeName.1=default-vpc\n&AUTHPARAMS\n <DescribeAccountAttributesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <accountAttributeSet>\n <item>\n <attributeName>default-vpc</attributeName>\n <attributeValueSet>\n <item>\n <attributeValue>vpc-xxxxxxxx</attributeValue>    \n </item>\n </attributeValueSet>\n </item>\n </accountAttributeSet>\n</DescribeAccountAttributesResponse>\n <DescribeAccountAttributesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <accountAttributeSet>\n <item>\n <attributeName>default-vpc</attributeName>\n <attributeValueSet>\n <item>\n <attributeValue>none</attributeValue>    \n </item>\n </attributeValueSet>\n </item>\n </accountAttributeSet>\n</DescribeAccountAttributesResponse>\n \n " - }, - "DescribeAddresses":{ - "name":"DescribeAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAddressesRequest"}, - "output":{"shape":"DescribeAddressesResult"}, - "documentation":"

Describes one or more of your Elastic IP addresses.

\n

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC.\n\t\t\t\tFor more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example for EC2-Classic\n This example request describes two specific Elastic IP addresses allocated to your account.\n\t\t\t\t\tBoth addresses were created for instances in EC2-Classic, so you must specify them using \n\t\t\t\t\ttheir IP addresses. The address 192.0.2.1 is assigned to instance i-f15ebb98, \n\t\t\t\t\tand 198.51.100.2 isn't assigned to an instance.\n https://ec2.amazonaws.com/?Action=DescribeAddresses\n&PublicIp.1=192.0.2.1\n&PublicIp.2=198.51.100.2\n&AUTHPARAMS\n <DescribeAddressesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <addressesSet> \n <item>\n <publicIp>192.0.2.1</publicIp>\n <domain>standard</domain>\n <instanceId>i-f15ebb98</instanceId>\n </item>\n <item>\n <publicIp>198.51.100.2</publicIp>\n <domain>standard</domain>\n <instanceId/>\n </item> \n </addressesSet> \n</DescribeAddressesResponse>\n \n \n Example 1 for EC2-VPC\n This example request describes a specific Elastic IP address allocated to\n\t\t\t\t\tyour account. This address was created for instances in EC2-VPC, \n\t\t\t\t\tso you must use the allocation ID to specify the address.\n https://ec2.amazonaws.com/?Action=DescribeAddresses\n&AllocationId.1= eipalloc-08229861\n&AUTHPARAMS\n <DescribeAddressesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>f7de5e98-491a-4c19-a92d-908d6EXAMPLE</requestId>\n <addressesSet>\n <item>\n <publicIp>203.0.113.41</publicIp>\n <allocationId>eipalloc-08229861</allocationId>\n <domain>vpc</domain>\n <instanceId>i-64600030</instanceId>\n <associationId>eipassoc-f0229899</associationId>\n <networkInterfaceId>eni-ef229886</networkInterfaceId>\n <networkInterfaceOwnerId>053230519467</networkInterfaceOwnerId>\n <privateIpAddress>10.0.0.228</privateIpAddress>\n </item>\n </addressesSet>\n</DescribeAddressesResponse>\n \n \n Example 2 for EC2-VPC\n This example describes your Elastic IP addresses for EC2-VPC only.\n https://ec2.amazonaws.com/?Action=DescribeAddresses\n&Filter.1.Name=domain\n&Filter.1.Value.1=vpc\n&AUTHPARAMS\n \n " - }, - "DescribeAvailabilityZones":{ - "name":"DescribeAvailabilityZones", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAvailabilityZonesRequest"}, - "output":{"shape":"DescribeAvailabilityZonesResult"}, - "documentation":"

Describes one or more of the Availability Zones that are available to you. The results\n\t\t\t\tinclude zones only for the region you're currently using. If there is an event\n\t\t\t\timpacting an Availability Zone, you can use this request to view the state and any\n\t\t\t\tprovided message for that Availability Zone.

\n

For more information, see Regions and Availability Zones\n in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example request describes the Availability Zones that are available to you.\n\t\t\t\t\tThe response includes Availability Zones only for the current region.\n https://ec2.amazonaws.com/?Action=DescribeAvailabilityZones\n&AUTHPARAMS\n <DescribeAvailabilityZonesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <availabilityZoneInfo>\n <item>\n <zoneName>us-east-1a</zoneName>\n <zoneState>available</zoneState>\n <regionName>us-east-1</regionName>\n <messageSet/>\n </item>\n <item>\n <zoneName>us-east-1b</zoneName>\n <zoneState>available</zoneState>\n <regionName>us-east-1</regionName>\n <messageSet/>\n </item>\n <item>\n <zoneName>us-east-1c</zoneName>\n <zoneState>available</zoneState>\n <regionName>us-east-1</regionName>\n <messageSet/>\n </item>\n <item>\n <zoneName>us-east-1d</zoneName>\n <zoneState>available</zoneState>\n <regionName>us-east-1</regionName>\n <messageSet/>\n </item>\n </availabilityZoneInfo>\n</DescribeAvailabilityZonesResponse>\n \n " - }, - "DescribeBundleTasks":{ - "name":"DescribeBundleTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeBundleTasksRequest"}, - "output":{"shape":"DescribeBundleTasksResult"}, - "documentation":"

Describes one or more of your bundling tasks.

\n

Completed bundle tasks are listed for only a limited time. If your bundle task is no longer in the list, you can still register an AMI from it. Just use RegisterImage with the Amazon S3 bucket name and image manifest name you provided to the bundle task.

\n \n \n Example 1\n This example describes the status of the specified bundle task.\n https://ec2.amazonaws.com/?Action=DescribeBundleTasks\n&bundleId.1=bun-c1a540a8\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n i-12345678\n bun-c1a540a8\n cancelling\n 2008-10-07T11:41:50.000Z\n 2008-10-07T11:51:50.000Z\n \n \n myawsbucket\n winami\n \n \n 20%\n \n \n\n \n \n Example 2\n This example filters the response to include only bundle tasks whose state is either complete or failed, and in addition are targeted for the Amazon S3 bucket named myawsbucket.\n https://ec2.amazonaws.com/?Action=DescribeBundleTasks\n&Filter.1.Name=s3-bucket\n&Filter.1.Value.1=myawsbucket\n&Filter.2.Name=state\n&Filter.2.Name.1=complete\n&Filter.2.Name.2=failed\n&AUTHPARAMS\n \n " - }, - "DescribeConversionTasks":{ - "name":"DescribeConversionTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeConversionTasksRequest"}, - "output":{"shape":"DescribeConversionTasksResult"}, - "documentation":"

Describes one or more of your conversion tasks. For more information, see Using the Command Line\n Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes all your conversion tasks. \n https://ec2.amazonaws.com/?Action=DescribeConversionTasks\n &AUTHPARAMS\n \n \n \n \n import-i-fh95npoc\n 2010-12-22T12:01Z\n \n 1000\n us-east-1a\n \n \n VDMK\n 128696320\n \n https://s3.amazonaws.com/myawsbucket/​a3a5e1b6-590d-43cc-97c1-15c7325d3f41/​Win_2008_Server_Data_Center_SP2_32-bit.​vmdkmanifest.xml?AWSAccessKeyId=​AKIAIOSFODNN7EXAMPLE&​Expires=1294855591&​Signature=5snej01TlTtL0uR7KExtEXAMPLE%3D\n \n \n \n 8\n vol-34d8a2ff\n \n \n active\n \n \n \n \n\n \n " - }, - "DescribeCustomerGateways":{ - "name":"DescribeCustomerGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCustomerGatewaysRequest"}, - "output":{"shape":"DescribeCustomerGatewaysResult"}, - "documentation":"

Describes one or more of your VPN customer gateways.

\n\t\t

For more information about VPN customer gateways, see\n\t\t\t\tAdding a Hardware\n\t\t\t\tVirtual Private Gateway to Your VPC in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example request describes the specified customer gateway.\n https://ec2.amazonaws.com/?Action=DescribeCustomerGateways\n&CustomerGatewayId.1=cgw-b4dc3961\n&AUTHPARAMS\n <DescribeCustomerGatewaysResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <customerGatewaySet>\n <item>\n <customerGatewayId>cgw-b4dc3961</customerGatewayId>\n <state>available</state>\n <type>ipsec.1</type>\n <ipAddress>12.1.2.3</ipAddress> \n <bgpAsn>65534</bgpasn> \n <tagSet/>\n </item>\n </customerGatewaySet>\n</DescribeCustomerGatewaysResponse>\n \n \n Example 2\n This example request uses filters to describe any customer gateway you\n\t\t\t\t\town whose IP address is 12.1.2.3, and whose state is either pending\n\t\t\t\t\tor available.\n https://ec2.amazonaws.com/?Action=DescribeCustomerGateways\n&Filter.1.Name=ip-address\n&Filter.1.Value.1=12.1.2.3\n&Filter.2.Name=state\n&Filter.2.Value.1=pending\n&Filter.2.Value.2=available\n&AUTHPARAMS\n \n " - }, - "DescribeDhcpOptions":{ - "name":"DescribeDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDhcpOptionsRequest"}, - "output":{"shape":"DescribeDhcpOptionsResult"}, - "documentation":"

Describes one or more of your DHCP options sets.

\n\t\t

For more information about DHCP options sets, see DHCP Options Sets\n\t\t\t\tin the Amazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example describes the specified DHCP options set.\n https://ec2.amazonaws.com/?Action=DescribeDhcpOptions\n&DhcpOptionsId.1=dopt-7a8b9c2d\n&AUTHPARAMS\n <DescribeDhcpOptionsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <dhcpOptionsSet>\n <item>\n <dhcpOptionsId>dopt-7a8b9c2d</dhcpOptionsId>\n <dhcpConfigurationSet>\n <item>\n <key>domain-name</key>\n <valueSet>\n <item>\n <value>example.com</value>\n </item>\n </valueSet>\n </item>\n <item>\n <key>domain-name-servers</key>\n <valueSet>\n <item>\n <value>10.2.5.1</value>\n </item>\n </valueSet>\n </item>\n <item>\n <key>domain-name-servers</key>\n <valueSet>\n <item>\n <value>10.2.5.2</value>\n </item>\n </valueSet>\n </item>\n </dhcpConfigurationSet>\n <tagSet/>\n </item>\n </dhcpOptionsSet>\n</DescribeDhcpOptionsResponse>\n \n \n Example 2\n This example uses filters to describe any DHCP options set that\n\t\t\t\t\tincludes a domain-name option whose value includes the string\n\t\t\t\t\texample.\n https://ec2.amazonaws.com/?Action=DescribeDhcpOptions\n&Filter.1.Name=key\n&Filter.1.Value.1=domain-name\n&Filter.2.Name=value\n&Filter.2.Value.1=*example*\n&AUTHPARAMS\n \n " - }, - "DescribeExportTasks":{ - "name":"DescribeExportTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeExportTasksRequest"}, - "output":{"shape":"DescribeExportTasksResult"}, - "documentation":"

Describes one or more of your export tasks.

\n \n \n Example\n This example describes a single export task. \n https://ec2.amazonaws.com/?Action=DescribeExportTasks\n &exportTaskId.1=export-i-1234wxyz\n &AUTHPARAMS\n <DescribeExportTasksResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <exportTaskSet>\n <item>\n <exportTaskId>export-i-1234wxyz</exportTaskId>\n <description>Example for docs</description>\n <state>active</state>\n <statusMessage>Running</statusMessage>\n <instanceExport>\n <instanceId>i-12345678</instanceId>\n <targetEnvironment>VMWare</targetEnvironment>\n </instanceExport>\n <exportToS3>\n <diskImageFormat>VMDK</diskImageFormat>\n <containerFormat>OVA</containerFormat>\n <s3Bucket>my-bucket-for-exported-vm</s3Bucket>\n <s3Key>my-exports/ export-i-1234wxyz .ova</s3Key>\n </exportToS3>\n </item>\n </exportTaskSet>\n </ DescribeExportTasksResponse>\n \n " - }, - "DescribeImageAttribute":{ - "name":"DescribeImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeImageAttributeRequest"}, - "output":{ - "shape":"ImageAttribute", - "documentation":"

Information about the image attribute.

", - "locationName":"imageAttribute", - "queryName":"ImageAttribute" - }, - "documentation":"

Describes the specified attribute of the specified AMI. You can specify only one attribute at a time.

\n \n \n Example 1\n This example lists the launch permissions for the specified AMI.\n https://ec2.amazonaws.com/?Action=DescribeImageAttribute\n&ImageId=ami-61a54008\n&Attribute=launchPermission\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n ami-61a54008\n \n \n all\n \n \n 495219933132\n \n \n\n \n \n Example 2\n This example lists the product codes for the specified AMI.\n https://ec2.amazonaws.com/?Action=DescribeImageAttribute\n&ImageId=ami-2bb65342\n&Attribute=productCodes\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n ami-2bb65342\n \n \n a1b2c3d4e5f6g7h8i9j10k11\n marketplace\n \n \n\n \n " - }, - "DescribeImages":{ - "name":"DescribeImages", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeImagesRequest"}, - "output":{"shape":"DescribeImagesResult"}, - "documentation":"

Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to\n\t\t\t\tyou include public images, private images that you own, and private images owned by\n\t\t\t\tother AWS accounts but for which you have explicit launch permissions.

\n

Deregistered images are included in the returned results for an unspecified interval after deregistration.

\n \n \n Example 1\n This example describes the specified AMI.\n https://ec2.amazonaws.com/?Action=DescribeImages\n&ImageId.1=ami-be3adfd7\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n ami-1a2b3c4d\n amazon/getting-started\n available\n 123456789012\n true\n i386\n machine\n aki-1a2b3c4d\n ari-1a2b3c4d\n amazon\n getting-started\n Image Description\n ebs\n /dev/sda\n \n \n /dev/sda1\n \n snap-1a2b3c4d\n 15\n false\n standard\n \n \n \n paravirtual\n \n xen\n \n \n\n \n \n Example 2\n This example filters the response to include only public Windows images with an x86_64 architecture.\n https://ec2.amazonaws.com/?Action=DescribeImages\n&Filter.1.Name=is-public\n&Filter.1.Value.1=true\n&Filter.2.Name=architecture\n&Filter.2.Value.1=x86_64\n&Filter.3.Name=platform\n&Filter.3.Value.1=windows\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n ami-1a2b3c4d\n ec2-public-windows-images/Server2003r2-x86_64-Win-v1.07.manifest.xml\n available\n 123456789012\n true\n x86_64\n machine\n windows\n amazon\n instance-store\n \n hvm\n \n xen\n \n ...\n \n\n \n \n Example 3\n This example returns the results to display images where the owner is\n\t\t\t\t\t\taws-marketplace.\n https://ec2.amazonaws.com/?Action=DescribeImages\n&Owner.0=aws-marketplace\n&AUTHPARAMS\n \n 4a4a27a2-2e7c-475d-b35b-ca822EXAMPLE\n \n \n ami-1a2b3c4d\n aws-marketplace/example-marketplace-amzn-ami.1\n available\n 123456789012\n true\n \n \n a1b2c3d4e5f6g7h8i9j10k11\n marketplace\n \n \n i386\n machine\n aki-1a2b3c4d\n aws-marketplace\n example-marketplace-amzn-ami.1\n Amazon Linux AMI i386 EBS\n ebs\n /dev/sda1\n \n \n /dev/sda1\n \n snap-1a2b3c4d\n 8\n true\n \n \n \n paravirtual\n xen\n \n ...\n \n\n \n " - }, - "DescribeInstanceAttribute":{ - "name":"DescribeInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstanceAttributeRequest"}, - "output":{ - "shape":"InstanceAttribute", - "queryName":"InstanceAttribute" - }, - "documentation":"

Describes the specified attribute of the specified instance. You can specify only one\n\t\t\t\tattribute at a time.

\n \n \n Example 1\n This example lists the instance type of the specified instance.\n https://ec2.amazonaws.com/?Action=DescribeInstanceAttribute\n&InstanceId=i-10a64379\n&Attribute=instanceType\n&AUTHPARAMS\n <DescribeInstanceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instanceId>i-10a64379</instanceId>\n <instanceType>\n <value>t1.micro</value>\n </instanceType>\n</DescribeInstanceAttributeResponse>\n \n \n Example 2\n This example lists the current value of the InstanceInitiatedShutdownBehavior attribute for the specified instance.\n https://ec2.amazonaws.com/?Action=DescribeInstanceAttribute\n&InstanceId=i-10a64379\n&Attribute=instanceInitiatedShutdownBehavior\n&AUTHPARAMS\n <DescribeInstanceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instanceId>i-10a64379</instanceId>\n <instanceInitiatedShutdownBehavior>\n <value>stop</value>\n </instanceInitiatedShutdownBehavior>\n</DescribeInstanceAttributeResponse>\n \n \n Example 3\n This example lists the current value of the DisableApiTermination attribute for the specified instance.\n https://ec2.amazonaws.com/?Action=DescribeInstanceAttribute\n&InstanceId=i-10a64379\n&Attribute=disableApiTermination\n&AUTHPARAMS\n <DescribeInstanceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instanceId>i-10a64379</instanceId>\n <disableApiTermination>\n <value>false</value>\n </disableApiTermination>\n</DescribeInstanceAttributeResponse>\n \n " - }, - "DescribeInstanceStatus":{ - "name":"DescribeInstanceStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstanceStatusRequest"}, - "output":{"shape":"DescribeInstanceStatusResult"}, - "documentation":"

Describes the status of one or more instances, including any scheduled events.

\n\t\t\t

Instance status has two main components:

\n\t\t\t
    \n\t\t\t\t
  • \n\t\t\t\t\t

    System Status reports impaired functionality that stems from issues\n\t\t\t\t\t\trelated to the systems that support an instance, such as such as hardware\n\t\t\t\t\t\tfailures and network connectivity problems. This call reports\n\t\t\t\t\t\tsuch problems as impaired reachability.

    \n\t\t\t\t
  • \n\t\t\t\t
  • \n\t\t\t\t\t

    Instance Status reports impaired functionality that arises from\n\t\t\t\t\t\tproblems internal to the instance. This call reports\n\t\t\t\t\t\tsuch problems as impaired reachability.

    \n\t\t\t\t
  • \n\t\t\t
\n

Instance status provides information about four types of scheduled events for an\n instance that may require your attention:

\n\t\t\t
    \n\t\t\t\t
  • \n\t\t\t\t\t

    Scheduled Reboot: When Amazon EC2 determines that an instance must be rebooted, the\n\t\t\t\t\t\tinstances status returns one of two event codes:\n\t\t\t\t\t\tsystem-reboot or instance-reboot. System\n\t\t\t\t\t\treboot commonly occurs if certain maintenance or upgrade operations require\n\t\t\t\t\t\ta reboot of the underlying host that supports an instance. Instance reboot\n\t\t\t\t\t\tcommonly occurs if the instance must be rebooted, rather than the underlying\n\t\t\t\t\t\thost. Rebooting events include a scheduled start and end time.

    \n\t\t\t\t
  • \n\t\t\t\t
  • \n\t\t\t\t\t

    System Maintenance: When Amazon EC2 determines that an instance requires maintenance that\n\t\t\t\t\t\trequires power or network impact, the instance status is the event\n\t\t\t\t\t\tcode system-maintenance. System maintenance is either\n\t\t\t\t\t\tpower maintenance or network maintenance. For power maintenance, your\n\t\t\t\t\t\tinstance will be unavailable for a brief period of time and then rebooted.\n\t\t\t\t\t\tFor network maintenance, your instance will experience a brief loss of\n\t\t\t\t\t\tnetwork connectivity. System maintenance events include a scheduled start\n\t\t\t\t\t\tand end time. You will also be notified by email if one of your instances is\n\t\t\t\t\t\tset for system maintenance. The email message indicates when your instance\n\t\t\t\t\t\tis scheduled for maintenance.

    \n\t\t\t\t
  • \n\t\t\t\t
  • \n\t\t\t\t\t

    Scheduled Retirement: When Amazon EC2 determines that an instance must be shut down, the\n\t\t\t\t\t\tinstance status is the event code\n\t\t\t\t\t\tinstance-retirement. Retirement commonly occurs when the\n\t\t\t\t\t\tunderlying host is degraded and must be replaced. Retirement events include\n\t\t\t\t\t\ta scheduled start and end time. You will also be notified by email if one of\n\t\t\t\t\t\tyour instances is set to retiring. The email message indicates when your\n\t\t\t\t\t\tinstance will be permanently retired.

    \n\t\t\t\t
  • \n\t\t\t\t
  • \n\t\t\t\t\t

    Scheduled Stop: When Amazon EC2 determines that an instance must be shut down, the\n\t\t\t\t\t\tinstances status returns an event code called instance-stop.\n\t\t\t\t\t\tStop events include a scheduled start and end time. You will also be\n\t\t\t\t\t\tnotified by email if one of your instances is set to stop. The email message\n\t\t\t\t\t\tindicates when your instance will be stopped.

    \n\t\t\t\t
  • \n\t\t\t
\n\n\t\t\t

When your instance is retired, it will either be terminated (if its root device type is the\n\t\t\t\tinstance-store) or stopped (if its root device type is an EBS volume). Instances\n\t\t\t\tstopped due to retirement will not be restarted, but you can do so manually. You can\n\t\t\t\talso avoid retirement of EBS-backed instances by manually restarting your instance\n\t\t\t\twhen its event code is instance-retirement. This ensures that your\n\t\t\t\tinstance is started on a different underlying host.

\n

For more information about failed status checks, see Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. For more information about working with scheduled events, see Working with an Instance That Has a Scheduled Event in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example 1\n This example returns instance status descriptions for all instances.\n https://ec2.amazonaws.com/?\nAction=DescribeInstanceStatus\n&AUTHPARAMS\n \n \n Example 2\n This example returns instance status descriptions for the specified instances.\n https://ec2.amazonaws.com/?\nAction=DescribeInstanceStatus\n&InstanceId.0=i-1a2b3c4d\n&InstanceId.1=i-2a2b3c4d\n&AUTHPARAMS\n \n \n Example 3\n This example returns instance status descriptions for all instances specified\n\t\t\t\t\tby supported DescribeInstanceStatus filters.\n https://ec2.amazonaws.com/?\nAction=DescribeInstanceStatus\n&Filter.0.Name=system-status.reachability\n&Filter.0.Value.failed\n&AUTHPARAMS\n \n 3be1508e-c444-4fef-89cc-0b1223c4f02fEXAMPLE\n \n \n i-1a2b3c4d\n us-east-1d\n \n 16\n running\n \n \n impaired\n
\n \n reachability\n failed\n YYYY-MM-DDTHH:MM:SS.000Z\n \n
\n
\n \n impaired\n
\n \n reachability\n failed\n YYYY-MM-DDTHH:MM:SS.000Z\n \n
\n
\n \n \n instance-retirement\n The instance is running on degraded hardware\n YYYY-MM-DDTHH:MM:SS+0000\n YYYY-MM-DDTHH:MM:SS+0000\n \n \n
\n \n i-2a2b3c4d\n us-east-1d\n \n 16\n running\n \n \n ok\n
\n \n reachability\n passed\n \n
\n
\n \n ok\n
\n \n reachability\n passed\n \n
\n
\n \n \n instance-reboot\n The instance is scheduled for a reboot\n YYYY-MM-DDTHH:MM:SS+0000\n YYYY-MM-DDTHH:MM:SS+0000\n \n \n
\n \n i-3a2b3c4d\n us-east-1d\n \n 16\n running\n \n \n ok\n
\n \n reachability\n passed\n \n
\n
\n \n ok\n
\n \n reachability\n passed\n \n
\n
\n
\n \n i-4a2b3c4d\n us-east-1d\n \n 16\n running\n \n \n ok\n
\n \n reachability\n passed\n \n
\n
\n \n insufficient-data\n
\n \n reachability\n insufficient-data\n \n
\n
\n
\n
\n
\n
\n
" - }, - "DescribeInstances":{ - "name":"DescribeInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstancesRequest"}, - "output":{"shape":"DescribeInstancesResult"}, - "documentation":"

Describes one or more of your instances.

\n

If you specify one or more instance IDs, Amazon EC2 returns information for those\n instances. If you do not specify instance IDs, Amazon EC2 returns information for\n all relevant instances. If you specify an instance ID that is not valid, an error is returned.\n If you specify an instance that you do not own, it is not included in the returned\n results.

\n

Recently terminated instances might appear in the returned results. This interval\n is usually less than one hour.

\n \n \n Example 1\n This example describes all instances owned by your AWS account. The\n example response shows information for one instance.\n https://ec2.amazonaws.com/?Action=DescribeInstances\n&AUTHPARAMS\n \n <DescribeInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>fdcdcab1-ae5c-489e-9c33-4637c5dda355</requestId>\n <reservationSet>\n <item>\n <reservationId>r-1a2b3c4d</reservationId>\n <ownerId>123456789012</ownerId>\n <groupSet>\n <item>\n <groupId>sg-1a2b3c4d</groupId>\n <groupName>my-security-group</groupName>\n </item>\n </groupSet>\n <instancesSet>\n <item>\n <instanceId>i-1a2b3c4d</instanceId>\n <imageId>ami-1a2b3c4d</imageId>\n <instanceState>\n <code>16</code>\n <name>running</name>\n </instanceState>\n <privateDnsName/>\n <dnsName/>\n <reason/>\n <keyName>my-key-pair</keyName>\n <amiLaunchIndex>0</amiLaunchIndex>\n <productCodes/>\n <instanceType>c1.medium</instanceType>\n <launchTime>YYYY-MM-DDTHH:MM:SS+0000</launchTime>\n <placement>\n <availabilityZone>us-west-2a</availabilityZone>\n <groupName/>\n <tenancy>default</tenancy>\n </placement>\n <platform>windows</platform>\n <monitoring>\n <state>disabled</state>\n </monitoring>\n <subnetId>subnet-1a2b3c4d</subnetId>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <privateIpAddress>10.0.0.12</privateIpAddress>\n <ipAddress>46.51.219.63</ipAddress>\n <sourceDestCheck>true</sourceDestCheck>\n <groupSet>\n <item>\n <groupId>sg-1a2b3c4d</groupId>\n <groupName>my-security-group</groupName>\n </item>\n </groupSet>\n <architecture>x86_64</architecture>\n <rootDeviceType>ebs</rootDeviceType>\n <rootDeviceName>/dev/sda1</rootDeviceName>\n <blockDeviceMapping>\n <item>\n <deviceName>/dev/sda1</deviceName>\n <ebs>\n <volumeId>vol-1a2b3c4d</volumeId>\n <status>attached</status>\n <attachTime>YYYY-MM-DDTHH:MM:SS.SSSZ</attachTime>\n <deleteOnTermination>true</deleteOnTermination>\n </ebs>\n </item>\n </blockDeviceMapping>\n <virtualizationType>hvm</virtualizationType>\n <clientToken>ABCDE1234567890123</clientToken>\n <tagSet>\n <item>\n <key>Name</key>\n <value>Windows Instance</value>\n </item>\n </tagSet>\n <hypervisor>xen</hypervisor>\n <networkInterfaceSet>\n <item>\n <networkInterfaceId>eni-1a2b3c4d</networkInterfaceId>\n <subnetId>subnet-1a2b3c4d</subnetId>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <description>Primary network interface</description>\n <ownerId>123456789012</ownerId>\n <status>in-use</status>\n <macAddress>1b:2b:3c:4d:5e:6f</macAddress>\n <privateIpAddress>10.0.0.12</privateIpAddress>\n <sourceDestCheck>true</sourceDestCheck>\n <groupSet>\n <item>\n <groupId>sg-1a2b3c4d</groupId>\n <groupName>my-security-group</groupName>\n </item>\n </groupSet>\n <attachment>\n <attachmentId>eni-attach-1a2b3c4d</attachmentId>\n <deviceIndex>0</deviceIndex>\n <status>attached</status>\n <attachTime>YYYY-MM-DDTHH:MM:SS+0000</attachTime>\n <deleteOnTermination>true</deleteOnTermination>\n </attachment>\n <association>\n <publicIp>198.51.100.63</publicIp>\n <ipOwnerId>123456789012</ipOwnerId>\n </association>\n <privateIpAddressesSet>\n <item>\n <privateIpAddress>10.0.0.12</privateIpAddress>\n <primary>true</primary>\n <association>\n <publicIp>198.51.100.63</publicIp>\n <ipOwnerId>123456789012</ipOwnerId>\n </association>\n </item>\n <item>\n <privateIpAddress>10.0.0.14</privateIpAddress>\n <primary>false</primary>\n <association>\n <publicIp>198.51.100.177</publicIp>\n <ipOwnerId>123456789012</ipOwnerId>\n </association>\n </item>\n </privateIpAddressesSet>\n </item>\n </networkInterfaceSet>\n </item>\n </instancesSet>\n </item>\n </reservationSet>\n </DescribeInstancesResponse>\n \n \n Example 2\n This example describes only the instances that have the m1.small or m1.large instance type and an attached Amazon EBS volume that will be deleted on termination.\n https://ec2.amazonaws.com/?Action=DescribeInstances\n&Filter.1.Name=instance-type\n&Filter.1.Value.1=m1.small\n&Filter.1.Value.2=m1.large\n&Filter.2.Name=block-device-mapping.status\n&Filter.2.Value.1=attached\n&Filter.3.Name=block-device-mapping.delete-on-termination\n&Filter.3.Value.1=true\n&AUTHPARAMS\n \n \n Example 3\n This example describes all instances that are running in a VPC.\n https://ec2.amazonaws.com/?Action=DescribeInstances\n&Filter.1.Name=vpc-id\n&Filter.1.Value.1=*\n&AUTHPARAMS\n \n \n Example 4\n This example describes any instances that have a tag with the key Owner,\n regardless of the value of the tag.\n https://ec2.amazonaws.com/?Action=DescribeInstances\n&Filter.1.Name=tag-key\n&Filter.1.Value.1=Owner\n&AUTHPARAMS\n \n \n Example\n This example lists only the instances that have a tag with the key\n Owner and the value DbAdmin.\n https://ec2.amazonaws.com/?Action=DescribeInstances\n&Filter.1.Name=tag:Owner\n&Filter.1.Value.1=DbAdmin\n&AUTHPARAMS\n \n " - }, - "DescribeInternetGateways":{ - "name":"DescribeInternetGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInternetGatewaysRequest"}, - "output":{"shape":"DescribeInternetGatewaysResult"}, - "documentation":"

Describes one or more of your Internet gateways.

\n \n \n Example\n This example describes all your Internet gateways.\n https://ec2.amazonaws.com/?Action=DescribeInternetGateways\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n igw-eaad4883EXAMPLE\n \n \n vpc-11ad4878\n available\n \n \n \n \n \n\n \n " - }, - "DescribeKeyPairs":{ - "name":"DescribeKeyPairs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeKeyPairsRequest"}, - "output":{"shape":"DescribeKeyPairsResult"}, - "documentation":"

Describes one or more of your key pairs.

\n

For more information about key pairs, see Key Pairs \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes the keypair with name my-key-pair.\n https://ec2.amazonaws.com/?Action=DescribeKeyPairs\n&KeyName.1=my-key-pair\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n my-key-pair\n 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f\n \n \n\n \n \n Example\n This example filters the response to include only key pairs whose names include the string Dave.\n https://ec2.amazonaws.com/?Action=DescribeKeyPairs\n&Filter.1.Name=key-name\n&Filter.1.Value.1=*Dave*\n&AUTHPARAMS\n \n " - }, - "DescribeNetworkAcls":{ - "name":"DescribeNetworkAcls", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkAclsRequest"}, - "output":{"shape":"DescribeNetworkAclsResult"}, - "documentation":"

Describes one or more of your network ACLs.

\n\t\t

For more information about network ACLs, see Network ACLs in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example describes all your network ACLs.\n https://ec2.amazonaws.com/?Action=DescribeNetworkAcls\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n acl-5566953c\n vpc-5266953b\n true\n \n \n 100\n all\n allow\n true\n 0.0.0.0/0\n \n \n 32767\n all\n deny\n true\n 0.0.0.0/0\n \n \n 100\n all\n allow\n false\n 0.0.0.0/0\n \n \n 32767\n all\n deny\n false\n 0.0.0.0/0\n \n \n \n \n \n \n acl-5d659634\n vpc-5266953b\n false\n \n \n 110\n 6\n allow\n true\n 0.0.0.0/0\n \n 49152\n 65535\n \n \n \n 32767\n all\n deny\n true\n 0.0.0.0/0\n \n \n 110\n 6\n allow\n false\n 0.0.0.0/0\n \n 80\n 80\n \n \n \n 120\n 6\n allow\n false\n 0.0.0.0/0\n \n 443\n 443\n \n \n \n 32767\n all\n deny\n false\n 0.0.0.0/0\n \n \n \n \n aclassoc-5c659635\n acl-5d659634\n subnet-ff669596\n \n \n aclassoc-c26596ab\n acl-5d659634\n subnet-f0669599\n \n \n \n \n \n\n \n " - }, - "DescribeNetworkInterfaceAttribute":{ - "name":"DescribeNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkInterfaceAttributeRequest"}, - "output":{"shape":"DescribeNetworkInterfaceAttributeResult"}, - "documentation":"

Describes a network interface attribute. You can specify only one attribute at a\n\t\t\t\ttime.

\n \n \n Example\n This example describes the sourceDestCheck attribute of the specified network interface.\n https://ec2.amazonaws.com/?Action=DescribeNetworkInterfaceAttribute\n&NetworkInterfaceId=eni-686ea200\n&Attribute=sourceDestCheck\n&AUTHPARAMS\n <DescribeNetworkInterfaceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a20c6b2-d71c-45fb-bba7-37306850544b</requestId>\n <networkInterfaceId>eni-686ea200</networkInterfaceId>\n <sourceDestCheck>\n <value>true</value>\n </sourceDestCheck>\n</DescribeNetworkInterfaceAttributeResponse>\n \n " - }, - "DescribeNetworkInterfaces":{ - "name":"DescribeNetworkInterfaces", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkInterfacesRequest"}, - "output":{"shape":"DescribeNetworkInterfacesResult"}, - "documentation":"

Describes one or more of your network interfaces.

\n \n \n Example\n This example describes all your network interfaces.\n https://ec2.amazonaws.com/?Action=DescribeNetworkInterfaces\n&AUTHPARAMS\n <DescribeNetworkInterfacesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>fc45294c-006b-457b-bab9-012f5b3b0e40</requestId>\n <networkInterfaceSet>\n <item>\n <networkInterfaceId>eni-0f62d866</networkInterfaceId>\n <subnetId>subnet-c53c87ac</subnetId>\n <vpcId>vpc-cc3c87a5</vpcId>\n <availabilityZone>api-southeast-1b</availabilityZone>\n <description/>\n <ownerId>053230519467</ownerId>\n <requesterManaged>false</requesterManaged>\n <status>in-use</status>\n <macAddress>02:81:60:cb:27:37</macAddress>\n <privateIpAddress>10.0.0.146</privateIpAddress>\n <sourceDestCheck>true</sourceDestCheck>\n <groupSet>\n <item>\n <groupId>sg-3f4b5653</groupId>\n <groupName>default</groupName>\n </item>\n </groupSet>\n <attachment>\n <attachmentId>eni-attach-6537fc0c</attachmentId>\n <instanceId>i-22197876</instanceId>\n <instanceOwnerId>053230519467</instanceOwnerId>\n <deviceIndex>0</deviceIndex>\n <status>attached</status>\n <attachTime>2012-07-01T21:45:27.000Z</attachTime>\n <deleteOnTermination>true</deleteOnTermination>\n </attachment>\n <tagSet/>\n <privateIpAddressesSet>\n <item>\n <privateIpAddress>10.0.0.146</privateIpAddress>\n <primary>true</primary>\n </item>\n <item>\n <privateIpAddress>10.0.0.148</privateIpAddress>\n <primary>false</primary>\n </item>\n <item>\n <privateIpAddress>10.0.0.150</privateIpAddress>\n <primary>false</primary>\n </item>\n </privateIpAddressesSet>\n </item>\n <item>\n <networkInterfaceId>eni-a66ed5cf</networkInterfaceId>\n <subnetId>subnet-cd8a35a4</subnetId>\n <vpcId>vpc-f28a359b</vpcId>\n <availabilityZone>ap-southeast-1b</availabilityZone>\n <description>Primary network interface</description>\n <ownerId>053230519467</ownerId>\n <requesterManaged>false</requesterManaged>\n <status>in-use</status>\n <macAddress>02:78:d7:00:8a:1e</macAddress>\n <privateIpAddress>10.0.1.233</privateIpAddress>\n <sourceDestCheck>true</sourceDestCheck>\n <groupSet>\n <item>\n <groupId>sg-a2a0b2ce</groupId>\n <groupName>quick-start-1</groupName>\n </item>\n </groupSet>\n <attachment>\n <attachmentId>eni-attach-a99c57c0</attachmentId>\n <instanceId>i-886401dc</instanceId>\n <instanceOwnerId>053230519467</instanceOwnerId>\n <deviceIndex>0</deviceIndex>\n <status>attached</status>\n <attachTime>2012-06-27T20:08:44.000Z</attachTime>\n <deleteOnTermination>true</deleteOnTermination>\n </attachment>\n <tagSet/>\n <privateIpAddressesSet>\n <item>\n <privateIpAddress>10.0.1.233</privateIpAddress>\n <primary>true</primary>\n </item>\n <item>\n <privateIpAddress>10.0.1.20</privateIpAddress>\n <primary>false</primary>\n </item>\n </privateIpAddressesSet>\n </item>\n </networkInterfaceSet>\n</DescribeNetworkInterfacesResponse>\n \n " - }, - "DescribePlacementGroups":{ - "name":"DescribePlacementGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribePlacementGroupsRequest"}, - "output":{"shape":"DescribePlacementGroupsResult"}, - "documentation":"

Describes one or more of your placement groups. For more information about\n\t\t\t\tplacement groups and cluster instances, see\n\t\t\t\tCluster Instances\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes the placement group named XYZ-cluster.\n https://ec2.amazonaws.com/?Action=DescribePlacementGroups\n&GroupName.1=XYZ-cluster\n&AUTHPARAMS\n \n d4904fd9-82c2-4ea5-adfe-a9cc3EXAMPLE\n \n \n XYZ-cluster\n cluster\n available\n \n \n\n \n \n Example\n This example filters the response to include only placement groups that\n include the string Project in the name.\n https://ec2.amazonaws.com/?Action=DescribePlacementGroups\n&Filter.1.Name=group-name\n&Filter.1.Value=*Project*\n&AUTHPARAMS\n \n d4904fd9-82c2-4ea5-adfe-a9cc3EXAMPLE\n \n \n Project-cluster\n cluster\n available\n \n \n\n \n " - }, - "DescribeRegions":{ - "name":"DescribeRegions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRegionsRequest"}, - "output":{"shape":"DescribeRegionsResult"}, - "documentation":"

Describes one or more regions that are currently available to you.

\n

For a list of the regions supported by Amazon EC2, see Regions and Endpoints.

\n \n \n Example 1\n This example displays information about all regions.\n https://ec2.amazonaws.com/?Action=DescribeRegions\n&AUTHPARAMS\n \n \n Example 2\n This example displays information about the specified regions only.\n https://ec2.amazonaws.com/?Action=DescribeRegions\n&RegionName.1=us-east-1\n&RegionName.2=eu-west-1\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n us-east-1\n ec2.us-east-1.amazonaws.com\n \n \n eu-west-1\n ec2.eu-west-1amazonaws.com\n \n \n\n \n " - }, - "DescribeReservedInstances":{ - "name":"DescribeReservedInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesRequest"}, - "output":{"shape":"DescribeReservedInstancesResult"}, - "documentation":"

Describes one or more of the Reserved Instances that you purchased.

\n

For more information about Reserved Instances, see Reserved\n\t\t\t\tInstances in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes Reserved Instances owned by your account.\n https://ec2.amazonaws.com/?Action=DescribeReservedInstances\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n ...\n \n e5a2ff3b-7d14-494f-90af-0b5d0EXAMPLE\n m1.xlarge\n us-east-1b\n 31536000\n 61.0\n 0.034\n 3\n Linux/UNIX\n active \n default\n USD\n Light Utilization\n \n \n ...\n \n\n \n \n Example\n This example filters the response to include only one-year, m1.small Linux/UNIX Reserved Instances. \n If you want Linux/UNIX Reserved Instances specifically for use with a VPC, set the product description to \n Linux/UNIX (Amazon VPC).\n https://ec2.amazonaws.com/?Action=DescribeReservedInstances\n&Filter.1.Name=duration\n&Filter.1.Value.1=31536000\n&Filter.2.Name=instance-type\n&Filter.2.Value.1=m1.small\n&Filter.3.Name=product-description\n&Filter.3.Value.1=Linux%2FUNIX\n&AUTHPARAMS\n \n " - }, - "DescribeReservedInstancesListings":{ - "name":"DescribeReservedInstancesListings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesListingsRequest"}, - "output":{"shape":"DescribeReservedInstancesListingsResult"}, - "documentation":"

Describes your account's Reserved Instance listings in the Reserved Instance Marketplace.

\n

For more information, see Reserved Instance Marketplace \n in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example shows all the listings associated with your account.\n https://ec2.amazonaws.com/?Action=DescribeReservedInstancesListings\n&AUTHPARAMS\n \n cec5c904-8f3a-4de5-8f5a-ff7f9EXAMPLE\n \n \n 253dfbf9-c335-4808-b956-d942cEXAMPLE\n e5a2ff3b-7d14-494f-90af-0b5d0EXAMPLE\n 2012-07-06T19:35:29.000Z\n 2012-07-06T19:35:30.000Z\n active\n ACTIVE\n \n \n Available\n 20\n \n \n Sold\n 0\n \n \n Cancelled\n 0\n \n \n Pending\n 0\n \n \n \n \n 8\n 480.0\n USD\n false\n \n \n 7\n 420.0\n USD\n false\n \n \n 6\n 360.0\n USD\n active\n \n \n 5\n 300.0\n USD\n false\n \n \n 4\n 240.0\n USD\n false\n \n \n 3\n 180.0\n USD\n false\n \n \n 2\n 120.0\n USD\n false\n \n \n 1\n 60.0\n USD\n false\n \n \n \n myclienttoken1\n \n \n\n \n " - }, - "DescribeReservedInstancesModifications":{ - "name":"DescribeReservedInstancesModifications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesModificationsRequest"}, - "output":{"shape":"DescribeReservedInstancesModificationsResult"}, - "documentation":"

Describes the modifications made to your Reserved Instances. If no parameter is specified, information about all your Reserved Instances modification requests is returned. If a modification ID is specified, only information about the specific modification is returned.

\n \n \n Example 1\n https://ec2.amazonaws.com/?Action=DescribeReservedInstancesModifications\n&AUTHPARAMS\n \n \n Example 2\n This example filters the response to include only Reserved Instances modification requests with status processing.\n https://ec2.amazonaws.com/?Action=DescribeReservedInstancesModifications\n&Filter.1.Name=status\n&Filter.1.Value.1=processing\n&AUTHPARAMS\n \n " - }, - "DescribeReservedInstancesOfferings":{ - "name":"DescribeReservedInstancesOfferings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesOfferingsRequest"}, - "output":{"shape":"DescribeReservedInstancesOfferingsResult"}, - "documentation":"

Describes Reserved Instance offerings that are available for purchase. With \n\t\t\t\tReserved Instances, you purchase the right to launch instances for a\n\t\t\t\tperiod of time. During that time period, you do not receive insufficient capacity\n\t\t\t\terrors, and you pay a lower usage rate than the rate charged for On-Demand\n\t\t\t\tinstances for the actual time used.

\n

For more information, see Reserved Instance Marketplace\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example Describing Reserved Instance Marketplace Offerings Only\n This example requests a list of Linux/Unix, Light Utilization Reserved\n\t\t\t\t\tInstances that are available through the Reserved Instance Marketplace only.\n\t\t\t\t\tWhen using the Query API, all strings must be URL-encoded.\n https://ec2.amazonaws.com/?Action=DescribeReservedInstancesOfferings\n&Filter.0.Name=marketplace\n&Filter.0.Value.1=true\n&IncludeMarketplace=true\n&OfferingType=Light+Utilization\n&ProductDescription=Linux%2FUNIX\n&Version=2013-10-01\n&AUTHPARAMS\n 2bc7dafa-dafd-4257-bdf9-c0814EXAMPLE\n \n \n a6ce8269-7b8c-42cd-a7f5-0841cEXAMPLE\n m1.large\n us-east-1a\n 90720000\n 96.03\n 0.027\n Linux/UNIX\n default\n USD\n Light Utilization\n \n true\n \n \n 96.03\n 1\n \n \n \n \n 2bc7dafa-dafd-4257-bdf9-c0814EXAMPLE\n m1.xlarge\n us-east-1b\n 28512000\n 61.0\n 0.034\n Linux/UNIX\n default\n USD\n Light Utilization\n \n \n Hourly\n 0.29\n \n \n true\n \n \n 61.0\n 2\n \n \n \n \n\n \n \n Example Describing AWS Offerings Only\n This example lists AWS offerings only.\n https://ec2.amazonaws.com/?Action=DescribeReservedInstancesOfferings\n&IncludeMarketplace=false\n&AUTHPARAMS\n \n \n \n Example Using Tokens to Manage Results\n You can use pagination support to query the results sequentially and in parts. \n Specify the maximum number of results that are returned in the response. Then, each paginated response \n contains a token that can be provided as input to a subsequent DescribeReservedInstancesOfferings call \n to fetch the next page. (Make sure that you use URL encoding for the token value.)\n https://ec2.amazonaws.com/?Action=DescribeReservedInstancesOfferings\n&MaxResults=5\n&AUTHPARAMS\n\n\n d072f652-cc57-458c-89e0-e6c02EXAMPLE\n \n ...\n \n 649fd0c8-7846-46b8-8f84-a6400EXAMPLE\n m1.large\n us-east-1a\n 94608000\n 1200.0\n 0.0\n Linux/UNIX (Amazon VPC)\n default\n USD\n Heavy Utilization\n \n \n Hourly\n 0.052\n \n \n false\n \n \n \n e5a2ff3b-a4f3-477c-8928-dbd00EXAMPLE\n m1.large\n us-east-1a\n 94608000\n 1000.0\n 0.076\n Linux/UNIX (Amazon VPC)\n default\n USD\n Medium Utilization\n \n false\n \n \n ...\n \n h/C8YKPQBHEjW8xKz1827/Zzyb0VqsqkjRo3TqhFYeE=\n\n\nhttps://ec2.amazonaws.com/?Action=DescribeReservedInstancesOfferings\n&MaxResults=5\n&NextToken=h%2FC8YKPQBHEjW8xKz1827%2FZzyb0VqsqkjRo3TqhFYeE%3D\n&AUTHPARAMS\n \n \n Example Using Filters\n This example filters the response to include only one-year, m1.small or m1.large \n Linux/UNIX Reserved Instances. If you want Linux/UNIX Reserved Instances specifically for use with a VPC, \n set the product description to Linux/UNIX (Amazon VPC).\n https://ec2.amazonaws.com/?Action=DescribeReservedInstancesOfferings\n&Filter.1.Name=duration\n&Filter.1.Value.1=31536000\n&Filter.2.Name=instance-type\n&Filter.2.Value.1=m1.small\n&Filter.2.Value.2=m1.large\n&Filter.3.Name=product-description\n&Filter.3.Value.1=Linux%2FUNIX\n&AUTHPARAMS\n \n " - }, - "DescribeRouteTables":{ - "name":"DescribeRouteTables", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRouteTablesRequest"}, - "output":{"shape":"DescribeRouteTablesResult"}, - "documentation":"

Describes one or more of your route tables.

\n\t\t

For more information about route tables, see Route Tables in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example describes all your route tables.\n The first route table in the returned list is the VPC's main route table. Its\n\t\t\t\t association ID represents the association between the table and the VPC.\n https://ec2.amazonaws.com/?Action=DescribeRouteTables\n&AUTHPARAMS\n \n 6f570b0b-9c18-4b07-bdec-73740dcf861a\n \n \n rtb-13ad487a\n vpc-11ad4878\n \n \n 10.0.0.0/22\n local\n active\n CreateRouteTable\n \n \n \n \n rtbassoc-12ad487b\n rtb-13ad487a\n
true
\n
\n
\n \n
\n \n rtb-f9ad4890\n vpc-11ad4878\n \n \n 10.0.0.0/22\n local\n active\n CreateRouteTable\n \n \n 0.0.0.0/0\n igw-eaad4883\n active\n \n \n \n \n rtbassoc-faad4893\n rtb-f9ad4890\n subnet-15ad487c\n \n \n \n \n
\n
\n
\n
" - }, - "DescribeSecurityGroups":{ - "name":"DescribeSecurityGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSecurityGroupsRequest"}, - "output":{"shape":"DescribeSecurityGroupsResult"}, - "documentation":"

Describes one or more of your security groups.

\n

A security group is for use with instances either in the EC2-Classic platform \n\t\t\t\tor in a specific VPC. For more information, see\n\t\t\t\tAmazon EC2 Security Groups in \n\t\t\t\tthe Amazon Elastic Compute Cloud User Guide and \n\t\t\t\tSecurity Groups for Your VPC in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example returns information about two security groups that are configured\n\t\t\t\t\tfor the account.\n https://ec2.amazonaws.com/?Action=DescribeSecurityGroups\n&GroupName.1=WebServers\n&GroupName.2=RangedPortsBySource\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n 123456789012\n sg-1a2b3c4d\n WebServers\n Web Servers\n \n \n \n tcp\n 80\n 80\n \n \n \n 0.0.0.0/0\n \n \n \n \n \n \n \n 123456789012\n sg-2a2b3c4d\n RangedPortsBySource\n Group A\n \n \n tcp\n 6000\n 7000\n \n \n 123456789012\n sg-3a2b3c4d\n Group B\n \n \n \n \n \n \n \n \n\n \n \n Example 2\n This example describes all security groups that grant access over TCP specifically on port 22 \n from instances associated with app_server_group or database_group.\n https://ec2.amazonaws.com/?Action=DescribeSecurityGroups\n&Filter.1.Name=ip-permission.protocol\n&Filter.1.Value.1=tcp\n&Filter.2.Name=ip-permission.from-port\n&Filter.2.Value.1=22\n&Filter.3.Name=ip-permission.to-port\n&Filter.3.Value.1=22\n&Filter.4.Name=ip-permission.group-name\n&Filter.4.Value.1=app_server_group\n&Filter.4.Value.2=database_group\n&AUTHPARAMS\n \n " - }, - "DescribeSnapshotAttribute":{ - "name":"DescribeSnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSnapshotAttributeRequest"}, - "output":{"shape":"DescribeSnapshotAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified snapshot. You can specify only one attribute at a\n time.

\n

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes permissions for a snapshot with the ID of\n snap-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=DescribeSnapshotAttribute\n&SnapshotId=snap-1a2b3c4d\n&Attribute=createVolumePermission\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n snap-1a2b3c4d\n \n \n all\n \n \n\n \n " - }, - "DescribeSnapshots":{ - "name":"DescribeSnapshots", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSnapshotsRequest"}, - "output":{"shape":"DescribeSnapshotsResult"}, - "documentation":"

Describes one or more of the Amazon EBS snapshots available to you. Available snapshots include \n public snapshots available for any AWS account to launch, private\n snapshots that you own, and private snapshots owned by another AWS account but for which\n you've been given explicit create volume permissions.

\n

The create volume permissions fall into the following categories:

\n
    \n
  • \npublic: The owner of the snapshot granted create volume permissions for the snapshot\n to the all group. All AWS accounts have create volume permissions for these\n snapshots.
  • \n
  • \nexplicit: The owner of the snapshot granted create volume permissions to a specific\n AWS account.
  • \n
  • \nimplicit: An AWS account has implicit create volume permissions for all snapshots it\n owns.
  • \n
\n

The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or\n AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all\n snapshots for which you have create volume permissions.

\n

If you specify one or more snapshot IDs, only snapshots that have the specified IDs are\n returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot\n ID for which you do not have access, it is not included in the returned results.

\n

If you specify one or more snapshot owners, only snapshots from the specified owners and for\n which you have access are returned. The results can include the AWS account IDs of the specified\n owners, amazon for snapshots owned by Amazon, or self for snapshots\n that you own.

\n

If you specify a list of restorable users, only snapshots with create snapshot permissions for\n those users are returned. You can specify AWS account IDs (if you own the snapshots),\n self for snapshots for which you own or have explicit permissions, or\n all for public snapshots.

\n

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes a snapshot with an ID of\n snap-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=DescribeSnapshots\n&SnapshotId=snap-1a2b3c4d\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n snap-1a2b3c4d\n vol-1a2b3c4d\n pending\n YYYY-MM-DDTHH:MM:SS.SSSZ\n 80%\n 111122223333\n 15\n Daily Backup\n true\n \n \n \n\n \n \n Example\n This example filters the response to include only snapshots with the\n pending status, and that are also tagged with a value that includes the string\n db_.\n https://ec2.amazonaws.com/?Action=DescribeSnapshots\n&Filter.1.Name=status\n&Filter.1.Value.1=pending\n&Filter.2.Name=tag-value\n&Filter.2.Value.1=*db_*\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n snap-1a2b3c4d\n vol-1a2b3c4d\n pending\n YYYY-MM-DDTHH:MM:SS.SSSZ\n 30%\n 111122223333\n 15\n Daily Backup\n \n \n Purpose\n demo_db_14_backup\n \n \n true\n \n \n\n \n " - }, - "DescribeSpotDatafeedSubscription":{ - "name":"DescribeSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotDatafeedSubscriptionRequest"}, - "output":{"shape":"DescribeSpotDatafeedSubscriptionResult"}, - "documentation":"

Describes the datafeed for Spot Instances. For more information, see\n\t\t\t\tSpot Instances in\n\t\t\t\tthe Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes the datafeed for the account.\n https://ec2.amazonaws.com/?Action=DescribeSpotDatafeedSubscription\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n 123456789012\n my-s3-bucket\n spotdata_\n Active\n \n\n \n " - }, - "DescribeSpotInstanceRequests":{ - "name":"DescribeSpotInstanceRequests", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotInstanceRequestsRequest"}, - "output":{"shape":"DescribeSpotInstanceRequestsResult"}, - "documentation":"

Describes the Spot Instance requests that belong to your account. Spot Instances\n\t\t\t\tare instances that Amazon EC2 starts on your behalf when the maximum price that you\n\t\t\t\tspecify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price\n\t\t\t\tbased on available Spot Instance capacity and current Spot Instance requests. For\n\t\t\t\tmore information about Spot Instances, see \n\t\t\t\tSpot Instances in the\n\t\t\t\tAmazon Elastic Compute Cloud User Guide.

\n

You can use DescribeSpotInstanceRequests to find a\n\t\t\t\trunning Spot Instance by examining the response. If the status of\n\t\t\t\tthe Spot Instance is fulfilled, the instance ID \n\t\t\t\tappears in the response and contains the identifier of the instance.\n\t\t\t\tAlternatively, you can use DescribeInstances with a filter to\n\t\t\t\tlook for instances where the instance lifecycle is spot.

\n \n \n Example for DescribeSpotInstanceRequests\n This example returns information about current Spot Instance requests.\n https://ec2.amazonaws.com/?Action=DescribeSpotInstanceRequests\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE\n \n \n sir-1a2b3c4d\n 0.09\n one-time\n active\n \n fulfilled\n YYYY-MM-DDTHH:MM:SS.000Z\n Your Spot request is fulfilled.\n \n \n ami-1a2b3c4d\n my-key-pair\n \n \n sg-1a2b3c4d\n websrv\n \n \n m1.small\n \n false\n \n false\n \n i-1a2b3c4d\n YYYY-MM-DDTHH:MM:SS.000Z\n Linux/UNIX\n us-east-1a\n \n \n\n \n \n Example for DescribeInstances\n Alternatively, you can use DescribeInstances as follows.\n https://ec2.amazonaws.com/?Action=DescribeInstances\n&Filter.1.Name=instance-lifecycle\n&Filter.1.Value.1=spot\n&AUTHPARAMS\n \n " - }, - "DescribeSpotPriceHistory":{ - "name":"DescribeSpotPriceHistory", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotPriceHistoryRequest"}, - "output":{"shape":"DescribeSpotPriceHistoryResult"}, - "documentation":"

Describes the Spot Price history. Spot Instances are instances that Amazon EC2\n\t\t\t\tstarts on your behalf when the maximum price that you specify exceeds the current\n\t\t\t\tSpot Price. Amazon EC2 periodically sets the Spot Price based on available Spot\n\t\t\t\tInstance capacity and current Spot Instance requests. For more information about\n\t\t\t\tSpot Instances, see Spot\n\t\t\t\tInstances in the Amazon Elastic Compute Cloud User Guide.

\n

When you specify an Availability Zone, this operation describes the price history \n for the specified Availability Zone with the most recent set of prices listed first. \n If you don't specify an Availability Zone, you get the prices across all Availability Zones, \n starting with the most recent set. However, if you're using an API version earlier than 2011-05-15,\n you get the lowest price across the region for the specified time period. The prices \n returned are listed in chronological order, from the oldest to the most recent.

\n \n \n Example\n This example gets Spot Price history for a particular day in December 2009\n\t\t\t\t\tfor the specified Availability Zone.\n https://ec2.amazonaws.com/?Action=DescribeSpotPriceHistory\n&StartTime=2009-12-04T00:00:00.000Z\n&EndTime=2009-12-04T23:59:59.000Z\n&AvailabilityZone=us-east-1a\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n \n \n m1.small\n Linux/UNIX\n 0.287\n 2009-12-04T20:56:05.000Z\n us-east-1a\n \n \n m1.small\n Windows\n 0.033\n 2009-12-04T22:33:47.000Z\n us-east-1a\n \n \n \n\n \n \n Example with Filters\n This example uses filters to get the same results as the previous example.\n https://ec2.amazonaws.com/?Action=DescribeSpotPriceHistory\n&Filter.1.Name=timestamp\n&Filter.1.Value.1=2009-12-04*\n&Filter.2.Name=availability-zone\n&Filter.2.Value.1=us-east-1a\n&AUTHPARAMS\n \n " - }, - "DescribeSubnets":{ - "name":"DescribeSubnets", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSubnetsRequest"}, - "output":{"shape":"DescribeSubnetsResult"}, - "documentation":"

Describes one or more of your subnets.

\n\t\t

For more information about subnets, see Your VPC and Subnets\n\t\t\t in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example describes the subnets with the IDs subnet-9d4a7b6c and\n\t\t\t\t\tsubnet-6e7f829e.\n https://ec2.amazonaws.com/?Action=DescribeSubnets\n&SubnetId.1=subnet-9d4a7b6c\n&SubnetId.2=subnet-6e7f829e\n&AUTHPARAMS\n <DescribeSubnetsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <subnetSet>\n <item>\n <subnetId>subnet-9d4a7b6c</subnetId>\n <state>available</state>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <cidrBlock>10.0.1.0/24</cidrBlock>\n <availableIpAddressCount>251</availableIpAddressCount>\n <availabilityZone>us-east-1a</availabilityZone>\n <defaultForAz>false</defaultForAz>\n <mapPublicIpOnLaunch>false</mapPublicIpOnLaunch>\n <tagSet/>\n </item>\n <item>\n <subnetId>subnet-6e7f829e</subnetId>\n <state>available</state>\n <vpcId>vpc-1a2b3c4d>/vpcId>\n <cidrBlock>10.0.0.0/24</cidrBlock> \n <availableIpAddressCount>251</availableIpAddressCount>\n <availabilityZone>us-east-1a</availabilityZone>\n <defaultForAz>false</defaultForAz>\n <mapPublicIpOnLaunch>false</mapPublicIpOnLaunch>\n <tagSet/>\n </item>\n <subnetSet/>\n</DescribeSubnetsResponse>\n \n \n Example 2\n This example uses filters to describe any subnet you own that is\n\t\t\t\t\tin the VPC with the ID vpc-1a2b3c4d or vpc-6e7f8a92, and whose state is\n\t\t\t\t\tavailable.\n https://ec2.amazonaws.com/?Action=DescribeSubnets\t\t\t\t\t\t\n&Filter.1.Name=vpc-id\n&Filter.1.Value.1=vpc-1a2b3c4d\n&Filter.1.Value.2=vpc-6e7f8a92\n&Filter.2.Name=state\n&Filter.2.Value.1=available\n&AUTHPARAMS\n \n " - }, - "DescribeTags":{ - "name":"DescribeTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTagsRequest"}, - "output":{"shape":"DescribeTagsResult"}, - "documentation":"

Describes one or more of the tags for your EC2 resources.

\n

For more information about tags, see Tagging Your Resources in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes all the tags in your account.\n https://ec2.amazonaws.com/?Action=DescribeTags\n&AUTHPARAMS\n \n 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE\n \n \n ami-1a2b3c4d\n image\n webserver\n \n \n \n ami-1a2b3c4d\n image\n stack\n Production\n \n \n i-5f4e3d2a\n instance\n webserver\n \n \n \n i-5f4e3d2a\n instance\n stack\n Production\n \n \n i-12345678\n instance\n database_server\n \n \n \n i-12345678\n instance\n stack\n Test\n \n \n\n \n \n Example\n This example describes only the tags for the AMI with ID ami-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=DescribeTags\n&Filter.1.Name=resource-id\n&Filter.1.Value.1=ami-1a2b3c4d\n&AUTHPARAMS\n \n 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE\n \n \n ami-1a2b3c4d\n image\n webserver\n \n \n \n ami-1a2b3c4d\n image\n stack\n Production\n \n \n\n \n \n Example\n This example describes the tags for all your instances.\n https://ec2.amazonaws.com/?Action=DescribeTags\n&Filter.1.Name=resource-type\n&Filter.1.Value.1=instance\n&AUTHPARAMS\n \n 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE\n \n \n i-5f4e3d2a\n instance\n webserver\n \n \n \n i-5f4e3d2a\n instance\n stack\n Production\n \n \n i-12345678\n instance\n database_server\n \n \n \n i-12345678\n instance\n stack\n Test\n \n \n\n \n \n Example\n This example describes the tags for all your instances tagged with the key\n webserver. Note that you can use wildcards with\n filters, so you could specify the value as ?ebserver to\n find tags with the key webserver or\n Webserver.\n https://ec2.amazonaws.com/?Action=DescribeTags\n&Filter.1.Name=key\n&Filter.1.Value.1=webserver\n&AUTHPARAMS\n \n 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE\n \n \n i-5f4e3d2a\n instance\n webserver\n \n \n \n\n \n \n Example\n This example describes the tags for all your instances tagged with either\n stack=Test or stack=Production.\n https://ec2.amazonaws.com/?Action=DescribeTags\n&Filter.1.Name=resource-type\n&Filter.1.Value.1=instance\n&Filter.2.Name=key\n&Filter.2.Value.1=stack\n&Filter.3.Name=value\n&Filter.3.Value.1=Test\n&Filter.3.Value.2=Production\n&AUTHPARAMS\n \n 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE \n \n \n i-5f4e3d2a\n instance\n stack\n Production\n \n \n i-12345678\n instance\n stack\n Test\n \n \n\n \n \n Example\n This example describes the tags for all your instances tagged with Purpose=[empty\n string].\n https://ec2.amazonaws.com/?Action=DescribeTags\n&Filter.1.Name=resource-type\n&Filter.1.Value.1=instance\n&Filter.2.Name=key\n&Filter.2.Value.1=Purpose\n&Filter.3.Name=value\n&Filter.3.Value.1=\n&AUTHPARAMS\n \n " - }, - "DescribeVolumeAttribute":{ - "name":"DescribeVolumeAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumeAttributeRequest"}, - "output":{"shape":"DescribeVolumeAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified volume. You can specify only one attribute\n at a time.

\n

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes the autoEnableIO attribute of the volume\n vol-12345678.\n https://ec2.amazonaws.com/?Action=DescribeVolumeAttribute\n&Attribute=autoEnableIO\n&VolumeId=vol-12345678\n&AUTHPARAMS\n <DescribeVolumeAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>5jkdf074-37ed-4004-8671-a78ee82bf1cbEXAMPLE</requestId> \n <volumeId>vol-12345678</volumeId>\n <autoEnableIO>\n <value>false</value>\n </autoEnableIO>\n</DescribeVolumeAttributeResponse>\n \n \n Example\n This example describes the productCodes attribute of the volume\n vol-12345678.\n https://ec2.amazonaws.com/?Action=DescribeVolumeAttribute\n&Attribute=productCodes\n&VolumeId=vol-12345678\n&AUTHPARAMS\n <DescribeVolumeAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>5jkdf074-37ed-4004-8671-a78ee82bf1cbEXAMPLE</requestId> \n <volumeId>vol-12345678</volumeId>\n <productCodes>\n <item>\n <productCode>a1b2c3d4e5f6g7h8i9j10k11</productCode>\n <type>marketplace</type>\n </item>\n </productCodes>\n</DescribeVolumeAttributeResponse>\n \n " - }, - "DescribeVolumeStatus":{ - "name":"DescribeVolumeStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumeStatusRequest"}, - "output":{"shape":"DescribeVolumeStatusResult"}, - "documentation":"

Describes the status of the specified volumes. Volume status provides the result of the\n checks performed on your volumes to determine events that can impair the performance of your\n volumes. The performance of a volume can be affected if an issue occurs on the volume's\n underlying host. If the volume's underlying host experiences a power outage or system issue,\n after the system is restored, there could be data inconsistencies on the volume. Volume events\n notify you if this occurs. Volume actions notify you if any action needs to be taken in\n response to the event.

\n

The DescribeVolumeStatus operation provides the following information about the\n specified volumes:

\n

Status: Reflects the current status of the volume. The possible values are\n ok, impaired , warning, or\n insufficient-data. If all checks pass, the overall status of the volume is\n ok. If the check fails, the overall status is impaired. If the\n status is insufficient-data, then the checks may still be taking place on your\n volume at the time. We recommend that you retry the request. For more information on volume status,\n see Monitoring the Status of Your\n Volumes.

\n

Events: Reflect the cause of a volume status and may require you to take action.\n For example, if your volume returns an impaired status, then the volume event\n might be potential-data-inconsistency. This means that your volume has been\n affected by an issue with the underlying host, has all I/O operations disabled, and may have\n inconsistent data.

\n

Actions: Reflect the actions you may have to take in response to an event. For\n example, if the status of the volume is impaired and the volume event shows\n potential-data-inconsistency, then the action shows\n enable-volume-io. This means that you may want to enable the I/O operations for\n the volume by calling the EnableVolumeIO action and then check the volume for data\n consistency.

\n \n

Volume status is based on the volume status checks, and does not reflect the volume state.\n Therefore, volume status does not indicate volumes in the error state (for\n example, when a volume is incapable of accepting I/O.)

\n
\n \n \n Example\n This example describes the status of all the volumes associated with your\n account.\n https://ec2.amazonaws.com/?Action=DescribeVolumeStatus\n&AUTHPARAMS\n \n 5jkdf074-37ed-4004-8671-a78ee82bf1cbEXAMPLE\n \n \n vol-11111111\n us-east-1d\n \n ok\n
\n \n io-enabled\n passed\n \n
\n
\n
\n \n vol-22222222\n us-east-1d\n \n impaired\n
\n \n io-enabled\n failed\n \n
\n
\n \n \n evol-61a54008\n potential-data-inconsistency\n THIS IS AN EXAMPLE\n 2011-12-01T14:00:00.000Z\n 2011-12-01T15:00:00.000Z\n \n \n \n \n enable-volume-io\n evol-61a54008\n potential-data-inconsistency\n THIS IS AN EXAMPLE \n \n \n
\n
\n\n
\n
\n \n Example\n This example describes all the volumes in the us-east-1d\n Availability Zone with failed\n io-enabled status.\n https://ec2.amazonaws.com/?Action=DescribeVolumeStatus\n&Filter.1.Name=availability-zone\n&Filter.1.Value.1=us-east-1d\n&Filter.2.Name=volume-status.details-name\n&Filter.2.Value.1=io-enabled\n&Filter.3.Name=volume-status.details-status\n&Filter.3.Value.1=failed\n&AUTHPARAMS\n \n
" - }, - "DescribeVolumes":{ - "name":"DescribeVolumes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumesRequest"}, - "output":{"shape":"DescribeVolumesResult"}, - "documentation":"

Describes the specified Amazon EBS volumes.

\n

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example describes all volumes associated with your account.\n https://ec2.amazonaws.com/?Action=DescribeVolumes\n&AUTHPARAMS\n <DescribeVolumesResponse xmlns=\"http://ec2.amazonaws.com/doc/2014-02-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <volumeSet>\n <item>\n <volumeId>vol-1a2b3c4d</volumeId>\n <size>80</size>\n <snapshotId/>\n <availabilityZone>us-east-1a</availabilityZone>\n <status>in-use</status>\n <createTime>YYYY-MM-DDTHH:MM:SS.SSSZ</createTime>\n <attachmentSet>\n <item>\n <volumeId>vol-1a2b3c4d</volumeId>\n <instanceId>i-1a2b3c4d</instanceId>\n <device>/dev/sdh</device>\n <status>attached</status>\n <attachTime>YYYY-MM-DDTHH:MM:SS.SSSZ</attachTime>\n <deleteOnTermination>false</deleteOnTermination>\n </item>\n </attachmentSet>\n <volumeType>standard</volumeType>\n <encrypted>true</encrypted>\n </item>\n </volumeSet>\n</DescribeVolumesResponse>\n \n " - }, - "DescribeVpcAttribute":{ - "name":"DescribeVpcAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcAttributeRequest"}, - "output":{"shape":"DescribeVpcAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified VPC. You can specify only one attribute at a time.

\n \n \n Example 1\n This example describes the enableDnsSupport attribute of the specified VPC.\n The sample response indicates that DNS resolution is supported.\n https://ec2.amazonaws.com/?Action=DescribeVpcAttribute\n&VpcId=vpc-1a2b3c4d\n&Attribute=enableDnsSupport\n&AUTHPARAMS\n <DescribeVpcAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpcId>vpc-1a2b3c4d</vpcId>\n  <enableDnsSupport>\n <value>true</value>\n </enableDnsSupport>\n</DescribeVpcAttributeResponse>\n \n \n Example 2\n This request describes the enableDnsHostnames attribute of the\n\t\t\t\t\tspecified VPC. The sample response indicates that DNS hostnames are supported.\n https://ec2.amazonaws.com/?Action=DescribeVpcAttribute\n&VpcId=vpc-1a2b3c4d\n&Attribute=enableDnsHostnames\n&AUTHPARAMS\n <DescribeVpcAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpcId>vpc-1a2b3c4d</vpcId>\n  <enableDnsHostnames>\n <value>true</value>\n </enableDnsHostnames>\n</DescribeVpcAttributeResponse>\n \n " - }, - "DescribeVpcPeeringConnections":{ - "name":"DescribeVpcPeeringConnections", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcPeeringConnectionsRequest"}, - "output":{"shape":"DescribeVpcPeeringConnectionsResult"}, - "documentation":"

Describes one or more of your VPC peering connections.

\n \n \n Example 1\n This example describes all of your VPC peering connections.\n https://ec2.amazonaws.com/?Action=DescribeVpcPeeringConnections\n&AUTHPARAMS\n <DescribeVpcPeeringConnectionsResponse xmlns=http://ec2.amazonaws.com/doc/2013-10-01/\">\n<requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpcPeeringConnectionSet>\n <item>\n <vpcPeeringConnectionId>pcx-111aaa22</vpcPeeringConnectionId>\n <requesterVpcInfo>\n <ownerId>777788889999</ownerId>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <cidrBlock>172.31.0.0/16</cidrBlock>\n </requesterVpcInfo>\n <accepterVpcInfo>\n <ownerId>123456789012</ownerId>\n <vpcId>vpc-aa22cc33</vpcId>\n </accepterVpcInfo>\"\n <status>\n <code>pending-acceptance</code>\n <message>Pending Acceptance by 123456789012</message>\n </status>\n <expirationTime>2014-02-17T16:00:50.000Z</expirationTime>\n <tagSet/>\n </item>\n </vpcPeeringConnectionSet>\n</DescribeVpcPeeringConnectionsResponse>\n \n \n Example 2\n This example describes all of your VPC peering connections that are in the\n pending-acceptance state.\n https://ec2.amazonaws.com/?Action=DescribeVpcPeeringConnections\n&Filter.1.Name=status-code\n&Filter.1.Value=pending-acceptance\n&AUTHPARAMS\n \n \n Example 3\n This example describes all of your VPC peering connections that have the tag\n Name=Finance or Name=Accounts.\n https://ec2.amazonaws.com/?Action=DescribeVpcPeeringConnections\n&Filter.1.Name=tag:Name\n&Filter.1.Value.1=Finance\n&Filter.1.Value.2=Accounts\n&AUTHPARAMS\n \n \n Example 4\n This example describes all of the VPC peering connections for your specified VPC,\n vpc-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=DescribeVpcPeeringConnections\n&Filter.1.Name=requester-vpc-info.vpc-id\n&Filter.1.Value=vpc-1a2b3c4d\n&AUTHPARAMS\n \n " - }, - "DescribeVpcs":{ - "name":"DescribeVpcs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcsRequest"}, - "output":{"shape":"DescribeVpcsResult"}, - "documentation":"

Describes one or more of your VPCs.

\n \n \n Example 1\n This example describes the specified VPC.\n https://ec2.amazonaws.com/?Action=DescribeVpcs\n&VpcId.1=vpc-1a2b3c4d\n&AUTHPARAMS\n <DescribeVpcsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpcSet>\n <item>\n <vpcId>vpc-1a2b3c4d</vpcId>\n <state>available</state>\n <cidrBlock>10.0.0.0/23</cidrBlock> \n <dhcpOptionsId>dopt-7a8b9c2d</dhcpOptionsId> \n <instanceTenancy>default</instanceTenancy>\n <isDefault>false</isDefault>\n <tagSet/>\n </item>\n </vpcSet>\n</DescribeVpcsResponse>\n \n \n Example 2\n This example uses filters to describe any VPC you own that uses\n\t\t\t\t\tthe set of DHCP options with the ID dopt-7a8b9c2d or \n\t\t\t\t\tdopt-2b2a3d3c and whose state is available.\n https://ec2.amazonaws.com/?Action=DescribeVpcs\t\t\t\t\t\n&Filter.1.Name=dhcp-options-id\n&Filter.1.Value.1=dopt-7a8b9c2d\n&Filter.1.Value.2=dopt-2b2a3d3c\n&Filter.2.Name=state\n&Filter.2.Value.1=available\n&AUTHPARAMS\n \n " - }, - "DescribeVpnConnections":{ - "name":"DescribeVpnConnections", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpnConnectionsRequest"}, - "output":{"shape":"DescribeVpnConnectionsResult"}, - "documentation":"

Describes one or more of your VPN connections.

\n\t\t

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway\n\t\t\t\tto Your VPC in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example describes the specified VPN connection. The response\n\t\t\t\t\tincludes the customer gateway configuration information. Because it's a long set\n\t\t\t\t\tof information, we haven't displayed it here. To see an example of the configuration information,\n\t\t\t\t see the Amazon Virtual Private Cloud Network Administrator Guide.\n https://ec2.amazonaws.com/?Action=DescribeVpnConnections\n&VpnConnectionId.1=vpn-44a8938f\n&AUTHPARAMS\n <DescribeVpnConnectionsResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpnConnectionSet>\n <item>\n <vpnConnectionId>vpn-44a8938f</vpnConnectionId>\n <state>available</state>\n <customerGatewayConfiguration>\n ...Customer gateway configuration data in escaped XML format...\n </customerGatewayConfiguration> \n <type>ipsec.1</type>\n <customerGatewayId>cgw-b4dc3961</customerGatewayId>\n <vpnGatewayId>vgw-8db04f81</vpnGatewayId>\n <tagSet/>\n </item>\n </vpnConnectionSet>\n</DescribeVpnConnectionsResponse>\n \n \n Example 2\n This example describes any VPN connection you own that is associated with the\n\t\t\t\t\tcustomer gateway with ID cgw-b4dc3961, and whose state is either\n\t\t\t\t\tpending or available.\n https://ec2.amazonaws.com/?Action=DescribeVpnConnections\t\t\t\t\t\t\t\n&Filter.1.Name=customer-gateway-id\n&Filter.1.Value.1=cgw-b4dc3961\n&Filter.2.Name=state\n&Filter.2.Value.1=pending\n&Filter.2.Value.2=available\n&AUTHPARAMS\n \n " - }, - "DescribeVpnGateways":{ - "name":"DescribeVpnGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpnGatewaysRequest"}, - "output":{"shape":"DescribeVpnGatewaysResult"}, - "documentation":"

Describes one or more of your virtual private gateways.

\n\t\t

For more information about virtual private gateways, see Adding an IPsec Hardware VPN\n\t\t\t\tto Your VPC in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example 1\n This example describes the specified virtual private gateway.\n https://ec2.amazonaws.com/?Action=DescribeVpnGateways\n&VpnGatewayId.1=vgw-8db04f81\n&AUTHPARAMS\n <DescribeVpnGatewaysResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <vpnGatewaySet>\t\n <item>\n <vpnGatewayId>vgw-8db04f81</vpnGatewayId>\n <state>available</state>\n <type>ipsec.1</type>\n <availabilityZone>us-east-1a</availabilityZone> \n <attachments>\n <item>\n <vpcId>vpc-1a2b3c4d<vpcId>\n <state>attached</state>\n </item>\n </attachments>\n <tagSet/>\n </item>\n </vpnGatewaySet>\n</DescribeVpnGatewaysResponse>\n \n \n Example 2\n This example uses filters to describe any virtual private gateway you own\n\t\t\t\t\tthat is in the us-east-1a Availability Zone, and whose state is either\n\t\t\t\t\tpending or available.\n https://ec2.amazonaws.com/?Action=DescribeVpnGateways\n&Filter.1.Name=availability-zone\n&Filter.1.Value.1=us-east-1a\n&Filter.2.Name=state\n&Filter.2.Value.1=pending\n&Filter.2.Value.2=available\n&AUTHPARAMS\n \n " - }, - "DetachInternetGateway":{ - "name":"DetachInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachInternetGatewayRequest"}, - "documentation":"

Detaches an Internet gateway from a VPC, disabling connectivity between the\n\t\t\t\tInternet and the VPC. The VPC must not contain any running instances with Elastic IP\n\t\t\t\taddresses.

\n \n \n Example\n The example detaches the specified Internet gateway from the specified VPC.\n https://ec2.amazonaws.com/?Action=DetachInternetGateway\n&InternetGatewayId=igw-eaad4883\n&VpcId=vpc-11ad4878\n&AUTHPARAMS\n <DetachInternetGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DetachInternetGatewayResponse>\n \n " - }, - "DetachNetworkInterface":{ - "name":"DetachNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachNetworkInterfaceRequest"}, - "documentation":"

Detaches a network interface from an instance.

\n \n \n Example\n This example detaches the specified elastic network interface (ENI).\n https://ec2.amazonaws.com/?Action=DetachNetworkInterface\n&AttachmentId=eni-attach-d94b09b0\n&AUTHPARAMS\n <DetachNetworkInterfaceResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>ce540707-0635-46bc-97da-33a8a362a0e8</requestId>\n <return>true</return>\n</DetachNetworkInterfaceResponse>\n \n " - }, - "DetachVolume":{ - "name":"DetachVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachVolumeRequest"}, - "output":{ - "shape":"VolumeAttachment", - "locationName":"attachment", - "queryName":"Attachment" - }, - "documentation":"

Detaches an Amazon EBS volume from an instance. Make sure to unmount any file systems on the\n device within your operating system before detaching the volume. Failure to do so results in\n the volume being stuck in a busy state while detaching.

\n

If an Amazon EBS volume is the root device of an instance, it can't be detached while the\n instance is running. To detach the root volume, stop the instance\n first.

\n

If the root volume is detached from an instance with an AWS Marketplace product code, then\n the AWS Marketplace product codes from that volume are no longer associated with the\n instance.

\n

For more information, see Detaching an\n Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example detaches volume\n vol-1a2b3c4d.\n https://ec2.amazonaws.com/?Action=DetachVolume\n&VolumeId=vol-1a2b3c4d\n&AUTHPARAMS\n <DetachVolumeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <volumeId>vol-1a2b3c4d</volumeId>\n <instanceId>i-1a2b3c4d</instanceId>\n <device>/dev/sdh</device>\n <status>detaching</status>\n <attachTime>YYYY-MM-DDTHH:MM:SS.000Z</attachTime>\n</DetachVolumeResponse>\n \n " - }, - "DetachVpnGateway":{ - "name":"DetachVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachVpnGatewayRequest"}, - "documentation":"

Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the\n\t\t\t\tVPC and not use it anymore. You can confirm a virtual private gateway has been completely\n\t\t\t\tdetached from a VPC by describing the virtual private gateway (any attachments to the\n\t\t\t\tvirtual private gateway are also described).

\n\t\t

You must wait for the attachment's state to switch to detached before\n\t\t\t\tyou can delete the VPC or attach a different VPC to the virtual private gateway.

\n \n \n Example\n This example detaches the specified virtual private gateway from the specified VPC.\n https://ec2.amazonaws.com/?Action=DetachVpnGateway\n&VpnGatewayId=vgw-8db04f81\n&VpcId=vpc-1a2b3c4d\n&AUTHPARAMS\n <DetachVpnGatewayResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</DetachVpnGatewayResponse>\n \n " - }, - "DisableVgwRoutePropagation":{ - "name":"DisableVgwRoutePropagation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableVgwRoutePropagationRequest"}, - "documentation":"

Disables a virtual private gateway (VGW) from propagating routes to the routing\n\t\t\t\ttables of a VPC.

\n \n \n Example\n This example disables the virtual private gateway vgw-d8e09e8a\n\t\t\t\t\tfrom automatically propagating routes to the routing table with ID\n\t\t\t\t\trtb-c98a35a0.\n https://ec2.amazonaws.com/?Action=DisableVgwRoutePropagationResponse\n&RouteTableID=rtb-c98a35a0\n&GatewayId= vgw-d8e09e8a\n&AUTHPARAMS\n <DisableVgwRoutePropagationResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>4f35a1b2-c2c3-4093-b51f-abb9d7311990</requestId>\n <return>true</return>\n</DisableVgwRoutePropagationResponse>\n \n " - }, - "DisassociateAddress":{ - "name":"DisassociateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisassociateAddressRequest"}, - "documentation":"

Disassociates an Elastic IP address from the instance or network interface it's\n\t\t\t\tassociated with.

\n

This is an idempotent operation. If you perform the operation more than once, Amazon EC2\n\t\t\t\tdoesn't return an error.

\n \n \n Example for EC2-Classic\n This example disassociates the specified Elastic IP address from\n\t\t\t\t\tthe instance in EC2-Classic to which it is associated.\n https://ec2.amazonaws.com/?Action=DisassociateAddress\n&PublicIp=192.0.2.1\n&AUTHPARAMS\n \n \n Example for EC2-VPC\n This example disassociates the specified Elastic IP address from\n\t\t\t\t\t the instance in a VPC to which it is associated.\n https://ec2.amazonaws.com/?Action=DisassociateAddress\n&AssociationId=eipassoc-aa7486c3\n&AUTHPARAMS\n \n " - }, - "DisassociateRouteTable":{ - "name":"DisassociateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisassociateRouteTableRequest"}, - "documentation":"

Disassociates a subnet from a route table.

\n\t\t

After you perform this action, the subnet no longer uses the routes in the route table.\n\t\t\t\tInstead, it uses the routes in the VPC's main route table. For more information\n\t\t\t\tabout route tables, see Route\n\t\t\t\tTables in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example disassociates the specified route table from the subnet it's associated to.\n https://ec2.amazonaws.com/?Action=DisassociateRouteTable\n&AssociationId=rtbassoc-fdad4894\n&AUTHPARAMS\n <DisassociateRouteTableResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</DisassociateRouteTableResponse>\n \n " - }, - "EnableVgwRoutePropagation":{ - "name":"EnableVgwRoutePropagation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableVgwRoutePropagationRequest"}, - "documentation":"

Enables a virtual private gateway (VGW) to propagate routes to the routing tables\n\t\t\t\tof a VPC.

\n \n \n Example\n This example enables the specified virtual private gateway to propagate\n\t\t\t\t\troutes automatically to the routing table with the ID rtb-c98a35a0.\n https://ec2.amazonaws.com/?Action=EnableVgwRoutePropagation\n&RouteTableID=rtb-c98a35a0\n&GatewayId= vgw-d8e09e8a\n&AUTHPARAMS\n <EnableVgwRoutePropagation xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>4f35a1b2-c2c3-4093-b51f-abb9d7311990</requestId>\n <return>true</return>\n</EnableVgwRoutePropagation>\n \n " - }, - "EnableVolumeIO":{ - "name":"EnableVolumeIO", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableVolumeIORequest"}, - "documentation":"

Enables I/O operations for a volume that had I/O operations disabled because the data on the\n volume was potentially inconsistent.

\n \n \n Example\n This example enables the I/O operations of the volume\n vol-8888888.\n https://ec2.amazonaws.com/?Action=EnableVolumeIO\n&VolumeId= vol-8888888\n&AUTHPARAMS\n <EnableVolumeIOResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</EnableVolumeIOResponse>\n \n " - }, - "GetConsoleOutput":{ - "name":"GetConsoleOutput", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetConsoleOutputRequest"}, - "output":{"shape":"GetConsoleOutputResult"}, - "documentation":"

Gets the console output for the specified instance.

\n

Instances do not have a physical monitor through which you can view their\n console output. They also lack physical controls that allow you to power up, reboot,\n or shut them down. To allow these actions, we provide them through the Amazon EC2\n API and command line interface.

\n\t\t\t

Instance console output is buffered and posted shortly after instance boot,\n\t\t\t\treboot, and termination. Amazon EC2 preserves the most recent 64 KB output which\n\t\t\t\tis available for at least one hour after the most recent post.

\n\t\t\t

For Linux/Unix instances, the instance console output displays the\n\t\t\t\texact console output that would normally be displayed on a physical monitor attached\n\t\t\t\tto a machine. This output is buffered because the instance produces it and then\n\t\t\t\tposts it to a store where the instance's owner can retrieve it.

\n\t\t\t

For Windows instances, the instance console output displays the last\n\t\t\t\tthree system event log errors.

\n \n \n Example\n This example retrieves the console output for the specified instance.\n https://ec2.amazonaws.com/?Action=GetConsoleOutput\n&InstanceId=i-10a64379\n&AUTHPARAMS\n <GetConsoleOutputResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instanceId>i-28a64341</instanceId>\n <timestamp>2010-10-14T01:12:41.000Z</timestamp>\n <output>TGludXggdmVyc2lvbiAyLjYuMTYteGVuVSAoYnVpbGRlckBwYXRjaGJhdC5hbWF6b25zYSkgKGdj\nYyB2ZXJzaW9uIDQuMC4xIDIwMDUwNzI3IChSZWQgSGF0IDQuMC4xLTUpKSAjMSBTTVAgVGh1IE9j\ndCAyNiAwODo0MToyNiBTQVNUIDIwMDYKQklPUy1wcm92aWRlZCBwaHlzaWNhbCBSQU0gbWFwOgpY\nZW46IDAwMDAwMDAwMDAwMDAwMDAgLSAwMDAwMDAwMDZhNDAwMDAwICh1c2FibGUpCjk4ME1CIEhJ\nR0hNRU0gYXZhaWxhYmxlLgo3MjdNQiBMT1dNRU0gYXZhaWxhYmxlLgpOWCAoRXhlY3V0ZSBEaXNh\nYmxlKSBwcm90ZWN0aW9uOiBhY3RpdmUKSVJRIGxvY2t1cCBkZXRlY3Rpb24gZGlzYWJsZWQKQnVp\nbHQgMSB6b25lbGlzdHMKS2VybmVsIGNvbW1hbmQgbGluZTogcm9vdD0vZGV2L3NkYTEgcm8gNApF\nbmFibGluZyBmYXN0IEZQVSBzYXZlIGFuZCByZXN0b3JlLi4uIGRvbmUuCg==</output>\n</GetConsoleOutputResponse>\n \n " - }, - "GetPasswordData":{ - "name":"GetPasswordData", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetPasswordDataRequest"}, - "output":{"shape":"GetPasswordDataResult"}, - "documentation":"

Retrieves the encrypted administrator password for an instance running\n\t\t\t\tWindows.

\n\t\t\t

The Windows password is only generated the first time an AMI is launched.\n\t\t\t\tIt is not generated for rebundled AMIs or after the password is changed on an\n\t\t\t\tinstance.

\n\t\t\t

The password is encrypted using the key pair that you specified when you launched the instance.\n\t\t\t\tYou must provide the corresponding key pair file.

\n\t\t\t

Password generation and encryption takes a few moments. We recommend that you wait up to\n\t\t\t\t15 minutes after launching an instance before trying to retrieve the generated\n\t\t\t\tpassword.

\n \n \n Example\n This example returns the encrypted version of the administrator password for\n\t\t\t\t\tthe specified instance.\n https://ec2.amazonaws.com/?Action=GetPasswordData\n&InstanceId=i-10a64379\n&AUTHPARAMS\n <GetPasswordDataResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instanceId>i-2574e22a</instanceId>\n <timestamp>2009-10-24 15:00:00</timestamp>\n <passwordData>TGludXggdmVyc2lvbiAyLjYuMTYteGVuVSAoYnVpbGRlckBwYXRjaGJhdC5hbWF6b25zYSkgKGdj</passwordData>\n</GetPasswordDataResponse>\n \n " - }, - "ImportInstance":{ - "name":"ImportInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportInstanceRequest"}, - "output":{"shape":"ImportInstanceResult"}, - "documentation":"

Creates an import instance task using metadata from the specified disk image. After\n importing the image, you then upload it using the ec2-import-volume command in the EC2 command line\n tools. For more information, see Using the Command Line\n Tools to Import Your Virtual Machine to Amazon EC2 in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n \n \n Example\n This example creates an import instance task that migrates a Windows Server\n 2008 SP2 (32-bit) VM into the AWS us-east-1 region. \n https://ec2.amazonaws.com/?Action=ImportInstance\n &LaunchSpecification.Architecture=x86_64\n &LaunchSpecification.InstanceType=m1.xlarge\n &DiskImage.1.Image.Format=VMDK\n &DiskImage.1.Image.Bytes=1179593728\n &DiskImage.1.Image.ImportManifestUrl=https://s3.amazonaws.com/myawsbucket/​a3a5e1b6-590d-43cc-97c1-15c7325d3f41/​Win_2008_Server_Data_Center_SP2_32-bit.​vmdkmanifest.xml?AWSAccessKeyId=​AKIAIOSFODNN7EXAMPLE&​Expires=1294855591&​Signature=5snej01TlTtL0uR7KExtEXAMPLE%3D\n &DiskImage.1.Volume.Size=12\t\n &Platform=Windows\n &AUTHPARAMS\n \n \n import-i-ffvko9js\n 2010-12-22T12:01Z\n \n \n \n 0\n us-east-1a\n \n VMDK\n 1179593728\n \n https://s3.amazonaws.com/myawsbucket/​a3a5e1b6-590d-43cc-97c1-15c7325d3f41/​Win_2008_Server_Data_Center_SP2_32-bit.​vmdkmanifest.xml?AWSAccessKeyId=​AKIAIOSFODNN7EXAMPLE&​Expires=1294855591&​Signature=5snej01TlTtL0uR7KExtEXAMPLE%3D\n \n \n \n \n 12\n vol-1a2b3c4d\n \n active\n \n \n \n i-12655a7f\n \n \n \n\n \n " - }, - "ImportKeyPair":{ - "name":"ImportKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportKeyPairRequest"}, - "output":{"shape":"ImportKeyPairResult"}, - "documentation":"

Imports the public key from an RSA key pair that you created with a third-party tool. \n Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you \n (AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key. \n The private key is never transferred between you and AWS.

\n

For more information about key pairs, see Key Pairs \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example imports the public key named my-key-pair.\n https://ec2.amazonaws.com/?Action=ImportKeyPair\n&KeyName=my-key-pair\n&PublicKeyMaterial=MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE\n&AUTHPARAMS\n <ImportKeyPairResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n\t<keyName>my-key-pair</keyName>\n\t<keyFingerprint>1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f</keyFingerprint>\n</ImportKeyPairResponse>\n \n " - }, - "ImportVolume":{ - "name":"ImportVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportVolumeRequest"}, - "output":{"shape":"ImportVolumeResult"}, - "documentation":"

Creates an import volume task using metadata from the specified disk image.\n After importing the image, you then upload it using the\n ec2-import-volume command in the Amazon EC2 command-line interface (CLI) tools. \n For more information, see Using the Command Line\n Tools to Import Your Virtual Machine to Amazon EC2 in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example creates an import volume task that migrates a Windows Server 2008\n SP2 (32-bit) volume into the AWS us-east-1 region. \n https://ec2.amazonaws.com/?Action=ImportVolume\n &AvailabilityZone=us-east-1c\n &Image.Format=VMDK\n &Image.Bytes=128696320\n &Image.ImportManifestUrl=https://s3.amazonaws.com/myawsbucket/​a3a5e1b6-590d-43cc-97c1-15c7325d3f41/​Win_2008_Server_Data_Center_SP2_32-bit.​vmdkmanifest.xml?AWSAccessKeyId=​AKIAIOSFODNN7EXAMPLE&​Expires=1294855591&​Signature=5snej01TlTtL0uR7KExtEXAMPLE%3D\n &VolumeSize=8\n &AUTHPARAMS>\n \n \n import-i-fh95npoc\n 2010-12-22T12:01Z\n \n 0\n us-east-1c\n \n \n VDMK\n 128696320\n \n https://s3.amazonaws.com/myawsbucket/​a3a5e1b6-590d-43cc-97c1-15c7325d3f41/​Win_2008_Server_Data_Center_SP2_32-bit.​vmdkmanifest.xml?AWSAccessKeyId=​AKIAIOSFODNN7EXAMPLE&​Expires=1294855591&​Signature=5snej01TlTtL0uR7KExtEXAMPLE%3D\n \n ccb1b0536a4a70e86016b85229b5c6b10b14a4eb\n \n \n 8\n vol-34d8a2ff\n \n \n active\n \n \n\n \n " - }, - "ModifyImageAttribute":{ - "name":"ModifyImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyImageAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time.

\n

AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace product code cannot be made public.

\n \n \n Example\n \n \n \n \n " - }, - "ModifyInstanceAttribute":{ - "name":"ModifyInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyInstanceAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified instance. You can specify only one attribute at a time.

\n\t\t\t

To modify some attributes, the instance must be stopped. For more information, see\n\t\t\t\tModifying Attributes of a Stopped Instance\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example 1\n This example changes the instance type of the specified instance. The instance must be in the\n\t\t\t\t\tstopped state.\n https://ec2.amazonaws.com/?Action=ModifyInstanceAttribute\n&InstanceId=i-10a64379\n&InstanceType.Value=m1.small\n&AUTHPARAMS\n <ModifyInstanceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</ModifyInstanceAttributeResponse>\n \n \n Example 2\n This example changes the InstanceInitiatedShutdownBehavior attribute of the specified instance.\n https://ec2.amazonaws.com/?Action=ModifyInstanceAttribute\n&InstanceId=i-10a64379\n&InstanceInitiatedShutdownBehavior.Value=terminate\n&AUTHPARAMS\n <ModifyInstanceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</ModifyInstanceAttributeResponse>\n \n \n Example 3\n This example changes the DisableApiTermination attribute of the specified instance.\n https://ec2.amazonaws.com/?Action=ModifyInstanceAttribute\n&InstanceId=i-10a64379\n&DisableApiTermination.Value=true\n&AUTHPARAMS\n <ModifyInstanceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</ModifyInstanceAttributeResponse>\n \n " - }, - "ModifyNetworkInterfaceAttribute":{ - "name":"ModifyNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyNetworkInterfaceAttributeRequest"}, - "documentation":"

Modifies the specified network interface attribute. You can specify only one attribute at a time.

\n \n \n Example\n This example sets source/destination checking to false for the\n\t\t\t\t\tspecified network interface.\n https://ec2.amazonaws.com/?Action=ModifyNetworkInterfaceAttribute\n&NetworkInterfaceId=eni-ffda3197\n&SourceDestCheck.Value=false\n&AUTHPARAMS\n <ModifyNetworkInterfaceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>657a4623-5620-4232-b03b-427e852d71cf</requestId>\n <return>true</return>\n</ModifyNetworkInterfaceAttributeResponse>\n \n " - }, - "ModifyReservedInstances":{ - "name":"ModifyReservedInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyReservedInstancesRequest"}, - "output":{"shape":"ModifyReservedInstancesResult"}, - "documentation":"

Modifies the Availability Zone, instance count, instance type, or network platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved Instances to be modified must be identical, except for Availability Zone, network platform, and instance type.

\n \n \n Example\n https://ec2.amazonaws.com/?Action=ModifyReservedInstances\n&ClientToken=myClientToken\n&ReservedInstancesConfigurationSetItemType.0.AvailabilityZone=us-east-1a\n&ReservedInstancesConfigurationSetItemType.0.InstanceCount=1\n&ReservedInstancesConfigurationSetItemType.0.Platform=EC2-VPC\n&ReservedInstancesConfigurationSetItemType.0.InstanceType=m1.small\n&ReservedInstancesId.0=d16f7a91-4d0f-4f19-9d7f-a74d26b1ccfa\n&AUTHPARAMS\n bef729b6-0731-4489-8881-2258746ae163\nrimod-3aae219d-3d63-47a9-a7e9-e764example\n\n \n " - }, - "ModifySnapshotAttribute":{ - "name":"ModifySnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifySnapshotAttributeRequest"}, - "documentation":"

Adds or removes permission settings for the specified snapshot.

\n

For more information on modifying snapshot permissions, see Sharing Snapshots in the\n Amazon Elastic Compute Cloud User Guide.

\n \n

Snapshots with AWS Marketplace product codes cannot be made public.

\n
\n \n \n Example\n This example makes the snap-1a2b3c4d snapshot public, and gives\n the account with ID 111122223333 permission to create volumes from\n the snapshot.\n https://ec2.amazonaws.com/?Action=ModifySnapshotAttribute\n&snapshotId=snap-1a2b3c4d\n&CreateVolumePermission.Add.1.UserId=111122223333\n&CreateVolumePermission.Add.1.Group=all\n&AUTHPARAMS\n <ModifySnapshotAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</ModifySnapshotAttributeResponse>\n \n \n Example\n This example makes the snap-1a2b3c4d snapshot public, and removes\n the account with ID 111122223333 from the list of users with\n permission to create volumes from the snapshot.\n https://ec2.amazonaws.com/?Action=ModifySnapshotAttribute\n&snapshotId=snap-1a2b3c4d\n&CreateVolumePermission.Remove.1.UserId=111122223333\n&CreateVolumePermission.Add.1.Group=all\n&AUTHPARAMS\n <ModifySnapshotAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</ModifySnapshotAttributeResponse>\n \n " - }, - "ModifyVolumeAttribute":{ - "name":"ModifyVolumeAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyVolumeAttributeRequest"}, - "documentation":"

Modifies a volume attribute.

\n

By default, all I/O operations for the volume are suspended when the data on the volume is\n determined to be potentially inconsistent, to prevent undetectable, latent data corruption.\n The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume.

\n

You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes\n or for volumes that are stateless or disposable.

\n \n \n Example\n This example modifies the attribute of the volume vol-12345678.\n https://ec2.amazonaws.com/?Action=ModifyVolumeAttribute\n&VolumeId=vol-12345678\n&AutoEnableIO.Value=true\n&AUTHPARAMS\n <ModifyVolumeAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>5jkdf074-37ed-4004-8671-a78ee82bf1cbEXAMPLE</requestId> \n <return>true</return>\n</ModifyVolumeAttributeResponse>\n \n " - }, - "ModifyVpcAttribute":{ - "name":"ModifyVpcAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyVpcAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified VPC.

\n \n \n Example\n This example disables support for DNS hostnames in the specified VPC.\n https://ec2.amazonaws.com/?Action=ModifyVpcAttribute \n&VpcId=vpc-1a2b3c4d \n&EnableDnsHostnames.Value=false \n&AUTHPARAMS\n \n " - }, - "MonitorInstances":{ - "name":"MonitorInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"MonitorInstancesRequest"}, - "output":{"shape":"MonitorInstancesResult"}, - "documentation":"

Enables monitoring for a running instance. For more information about monitoring instances,\n\t\t\tsee Monitoring Your Instances and Volumes\n\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example enables monitoring for two instances.\n https://ec2.amazonaws.com/?Action=MonitorInstances\n&InstanceId.1=i-43a4412a\n&InstanceId.2=i-23a3397d\n&AUTHPARAMS\n <MonitorInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instancesSet>\n <item>\n <instanceId>i-43a4412a</instanceId>\n <monitoring>\n <state>pending</state>\n </monitoring>\n </item>\n <item>\n <instanceId>i-23a3397d</instanceId>\n <monitoring>\n <state>pending</state>\n </monitoring>\n </item>\n </instancesSet>\n</MonitorInstancesResponse>\n \n " - }, - "PurchaseReservedInstancesOffering":{ - "name":"PurchaseReservedInstancesOffering", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PurchaseReservedInstancesOfferingRequest"}, - "output":{"shape":"PurchaseReservedInstancesOfferingResult"}, - "documentation":"

Purchases a Reserved Instance for use with your account. With Amazon EC2 Reserved\n\t\t\t\tInstances, you obtain a capacity reservation for a certain instance configuration\n\t\t\t\tover a specified period of time. You pay a lower usage rate than with On-Demand\n\t\t\t\tinstances for the time that you actually use the capacity reservation.

\n

For more information, see Reserved Instance Marketplace\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example 1\n This example uses a limit price to limit the total purchase order of \n Reserved Instances from Reserved Instance Marketplace.\n https://ec2.amazonaws.com/?Action=PurchaseReservedInstancesOffering\n&ReservedInstancesOfferingId=4b2293b4-5813-4cc8-9ce3-1957fEXAMPLE\n&LimitPrice.Amount=200\n&InstanceCount=2\n&AUTHPARAMS\n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n e5a2ff3b-7d14-494f-90af-0b5d0EXAMPLE \n\n \n \n Example 2\n This example illustrates a purchase of a Reserved Instances offering.\n https://ec2.amazonaws.com/?Action=PurchaseReservedInstancesOffering\n&ReservedInstancesOfferingId=4b2293b4-5813-4cc8-9ce3-1957fEXAMPLE\n&InstanceCount=2\n&AUTHPARAMS\n <PurchaseReservedInstancesOfferingResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <reservedInstancesId>e5a2ff3b-7d14-494f-90af-0b5d0EXAMPLE</reservedInstancesId> \n</PurchaseReservedInstancesOfferingResponse>\n \n " - }, - "RebootInstances":{ - "name":"RebootInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RebootInstancesRequest"}, - "documentation":"

Requests a reboot of one or more instances. This operation is asynchronous; it\n\t\t\t\tonly queues a request to reboot the specified instances. The operation\n\t\t\t\tsucceeds if the instances are valid and belong to you. Requests to reboot terminated\n\t\t\t\tinstances are ignored.

\n\t\t\t

If a Linux/Unix instance does not cleanly shut down within four minutes,\n\t\t\t\tAmazon EC2 performs a hard reboot.

\n

For more information about troubleshooting, see Getting Console Output and Rebooting Instances in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example reboots two instances.\n https://ec2.amazonaws.com/?Action=RebootInstances\n&InstanceId.1=i-1a2b3c4d\n&InstanceId.2=i-4d3acf62\n&AUTHPARAMS\n <RebootInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</RebootInstancesResponse>\n \n " - }, - "RegisterImage":{ - "name":"RegisterImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterImageRequest"}, - "output":{"shape":"RegisterImageResult"}, - "documentation":"

Registers an AMI. When you're creating an AMI, this is the final step\n\t\t\t\tyou must complete before you can launch an instance from the AMI. For more\n\t\t\t\tinformation about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide.

\n

For Amazon EBS-backed instances, CreateImage creates and registers the AMI in a single request, so you don't have to register the AMI yourself.

\n

You can also use RegisterImage to create an Amazon EBS-backed AMI\n\t\t\t\tfrom a snapshot of a root device volume. For more information, see\n\t\t\t\tLaunching an\n\t\t\t\t\tInstance from a Snapshot in the\n\t\t\t\tAmazon Elastic Compute Cloud User Guide.

\n

If needed, you can deregister an AMI at any time. Any modifications you make to an AMI\n\t\t\t\tbacked by an instance store volume invalidates its registration. If you make changes to an image,\n\t\t\t\tderegister the previous image and register the new image.

\n

You can't register an image where a secondary (non-root) snapshot has AWS Marketplace product codes.

\n \n \n Example 1\n This example registers the AMI specified in the\n\t\t\t\t\tmy-new-image.manifest.xml manifest file, located in the bucket\n\t\t\t\t\tcalled myawsbucket.\n https://ec2.amazonaws.com/?Action=RegisterImage\n&ImageLocation=myawsbucket/my-new-image.manifest.xml\n&AUTHPARAMS\n <RegisterImageResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <imageId>ami-1a2b3c4d</imageId>\n</RegisterImageResponse>\n \n \n Example 2\n This example registers an Amazon EBS snapshot to create an AMI backed by\n\t\t\t\t\tAmazon EBS.\n https://ec2.amazonaws.com/?Action=RegisterImage\n&RootDeviceName=/dev/sda1 \n&BlockDeviceMapping.1.DeviceName=/dev/sda1 \n&BlockDeviceMapping.1.Ebs.SnapshotId=snap-1a2b3c4d \n&Name=MyImage\n&AUTHPARAMS\n <RegisterImageResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <imageId>ami-1a2b3c4d</imageId>\n</RegisterImageResponse>\n \n \n Example 3\n This example registers the AMI with an Amazon EBS snapshot as the root device,\n\t\t\t\t\ta separate snapshot as a secondary device, and an empty 100 GiB Amazon EBS\n\t\t\t\t\tvolume as a storage device.\n https://ec2.amazonaws.com/?Action=RegisterImage\n&RootDeviceName=/dev/sda1\n&BlockDeviceMapping.1.DeviceName=/dev/sda1\n&BlockDeviceMapping.1.Ebs.SnapshotId=snap-1a2b3c4d\n&BlockDeviceMapping.2.DeviceName=/dev/sdb\n&BlockDeviceMapping.2.Ebs.SnapshotId=snap-2a2b3c4d\n&BlockDeviceMapping.3.DeviceName=/dev/sdc\n&BlockDeviceMapping.3.Ebs.VolumeSize=100\n&Name=MyImage\n&AUTHPARAMS\n <RegisterImageResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <imageId>ami-1a2b3c4d</imageId>\n</RegisterImageResponse>\n \n " - }, - "RejectVpcPeeringConnection":{ - "name":"RejectVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RejectVpcPeeringConnectionRequest"}, - "output":{"shape":"RejectVpcPeeringConnectionResult"}, - "documentation":"

Rejects a VPC peering connection request. The VPC peering connection must be in the\n pending-acceptance state. Use the DescribeVpcPeeringConnections request to\n view your outstanding VPC peering connection requests.

\n \n \n Example\n This example rejects the specified VPC peering connection\n request.\n https://ec2.amazonaws.com/?Action=RejectVpcPeeringConnection\n&vpcPeeringConnectionId=pcx-1a2b3c4d\n&AUTHPARAMS \n \n <RejectVpcPeeringConnectionResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId>\n <return>true</return>\n</RejectVpcPeeringConnectionResponse>\n \n \n " - }, - "ReleaseAddress":{ - "name":"ReleaseAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReleaseAddressRequest"}, - "documentation":"

Releases the specified Elastic IP address.

\n

After releasing an Elastic IP address, it is released to the IP address\n\t\t\t\tpool and might be unavailable to you. Be sure to update your DNS records and any\n\t\t\t\tservers or devices that communicate with the address. If you attempt to release\n\t\t\t\tan Elastic IP address that you already released, you'll get an\n\t\t\t\tAuthFailure error if the address is already allocated to\n\t\t\t\tanother AWS account.

\n

[EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it\n\t\t\t\tfrom any instance that it's associated with. To disassociate an Elastic IP address\n\t\t\t\twithout releasing it, use DisassociateAddress.

\n

[Nondefault VPC] You must use the DisassociateAddress to\n\t\t\t\tdisassociate the Elastic IP address before you try to release it. Otherwise, \n\t\t\t\tAmazon EC2 returns an error (InvalidIPAddress.InUse).

\n \n \n Example for EC2-Classic\n This example releases the specified Elastic IP address for EC2-Classic.\n https://ec2.amazonaws.com/?Action=ReleaseAddress\n&PublicIp=192.0.2.1\n&AUTHPARAMS\n \n \n Example for EC2-VPC\n This example releases the specified Elastic IP address for EC2-VPC.\n https://ec2.amazonaws.com/?Action=ReleaseAddress\n&AllocationId=eipalloc-5723d13e\n&AUTHPARAMS\n \n " - }, - "ReplaceNetworkAclAssociation":{ - "name":"ReplaceNetworkAclAssociation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceNetworkAclAssociationRequest"}, - "output":{"shape":"ReplaceNetworkAclAssociationResult"}, - "documentation":"

Changes which network ACL a subnet is associated with. By default when you create\n\t\t\t\ta subnet, it's automatically associated with the default network ACL. For more\n\t\t\t\tinformation about network ACLs, see Network\n\t\t\t\tACLs in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example starts with a network ACL associated with a subnet, and a\n\t\t\t\t\tcorresponding association ID aclassoc-e5b95c8c. You want to associate a\n\t\t\t\t\tdifferent network ACL (acl-5fb85d36) with the subnet. The result is a new\n\t\t\t\t\tassociation ID representing the new association.\n https://ec2.amazonaws.com/?Action=ReplaceNetworkAclAssociation\n&AssociationId=aclassoc-e5b95c8c\n&NetworkAclId=acl-5fb85d36\n&AUTHPARAMS\n <ReplaceNetworkAclAssociationResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <newAssociationId>aclassoc-17b85d7e</newAssociationId>\n</ReplaceNetworkAclAssociationResponse>\n \n " - }, - "ReplaceNetworkAclEntry":{ - "name":"ReplaceNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceNetworkAclEntryRequest"}, - "documentation":"

Replaces an entry (rule) in a network ACL. For more information about network ACLs,\n\t\t\t\tsee Network ACLs in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example replaces the egress entry numbered 110 in the network ACL with ID\n\t\t\t\t\tacl-2cb85d45. The new rule denies egress traffic destined for anywhere\n\t\t\t\t\t(0.0.0.0/0) on TCP port 139.\n https://ec2.amazonaws.com/?Action=ReplaceNetworkAclEntry\n&NetworkAclId=acl-2cb85d45\n&RuleNumber=110\n&Protocol=tcp\n&RuleAction=deny\n&Egress=true\n&CidrBlock=0.0.0.0/0\n&PortRange.From=139\n&PortRange.To=139\n&AUTHPARAMS\n <ReplaceNetworkAclEntryResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</ReplaceNetworkAclEntryResponse>\n \n " - }, - "ReplaceRoute":{ - "name":"ReplaceRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceRouteRequest"}, - "documentation":"

Replaces an existing route within a route table in a VPC. You must provide only one of the following: \n\t\t Internet gateway, NAT instance, VPC peering connection, or network interface.

\n\t\t

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example replaces a route in the specified route table. The new\n\t\t\t\t\troute matches the CIDR 10.0.0.0/8 and sends the traffic to the virtual private gateway with\n\t\t\t\t\tthe ID vgw-1d00376e.\n https://ec2.amazonaws.com/?Action=ReplaceRoute\n&RouteTableId=rtb-e4ad488d\n&DestinationCidrBlock=10.0.0.0/8\n&GatewayId=vgw-1d00376e\n&AUTHPARAMS\n <ReplaceRouteResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</ReplaceRouteResponse>\n \n " - }, - "ReplaceRouteTableAssociation":{ - "name":"ReplaceRouteTableAssociation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceRouteTableAssociationRequest"}, - "output":{"shape":"ReplaceRouteTableAssociationResult"}, - "documentation":"

Changes the route table associated with a given subnet in a VPC. After the\n\t\t\t\toperation completes, the subnet uses the routes in the new route table it's associated with.\n\t\t\t\tFor more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

\n

You can also use ReplaceRouteTableAssociation to change which table is the main route table in the\n\t\t\t\tVPC. You just specify the main route table's association ID and the route table to be the new main route table.

\n \n \n Example\n This example starts with a route table associated with a subnet, and a\n\t\t\t\t\tcorresponding association ID rtbassoc-f8ad4891. You want to associate a\n\t\t\t\t\tdifferent route table (table rtb-f9ad4890) to the subnet. The result is a new\n\t\t\t\t\tassociation ID representing the new association.\n https://ec2.amazonaws.com/?Action=ReplaceRouteTableAssociation\n&AssociationId=rtbassoc-f8ad4891\n&RouteTableId=rtb-f9ad4890\n&AUTHPARAMS\n \n 59dbff89-35bd-4eac-99ed-be587EXAMPLE \n rtbassoc-faad4893\n\n \n " - }, - "ReportInstanceStatus":{ - "name":"ReportInstanceStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReportInstanceStatusRequest"}, - "documentation":"

Submits feedback about the status of an instance. The instance\n\t\t\t\tmust be in the running state. If your experience\n\t\t\t\twith the instance differs from the instance status returned by\n\t\t\t\tDescribeInstanceStatus, use ReportInstanceStatus\n\t\t\t\tto report your experience with the instance. Amazon EC2 collects\n\t\t\t\tthis information to improve the accuracy of status checks.

\n \n \n Example 1\n This example reports instance health state for two instances.\n https://ec2.amazonaws.com/?Action=ReportInstanceStatus\n&Status=impaired\n&InstanceId.0=i-9440effb\n&InstanceId.1=i-0cf27c63\n&AUTHPARAMS\n \n \n Example 2\n This example reports instance health state for two instances with reason codes.\n https://ec2.amazonaws.com/?Action=ReportInstanceStatus\n&Description=Description+of+my+issue.\n&Status=impaired\n&InstanceId.0=i-9440effb\n&InstanceId.1=i-0cf27c63\n&ReasonCode.0=instance-performance-network\n&ReasonCode.1=instance-performance-disk\n&AUTHPARAMS\n \n " - }, - "RequestSpotInstances":{ - "name":"RequestSpotInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RequestSpotInstancesRequest"}, - "output":{"shape":"RequestSpotInstancesResult"}, - "documentation":"

Creates a Spot Instance request. Spot Instances are instances that Amazon EC2\n\t\t\t\tstarts on your behalf when the maximum price that you specify exceeds the current\n\t\t\t\tSpot Price. Amazon EC2 periodically sets the Spot Price based on available Spot\n\t\t\t\tInstance capacity and current Spot Instance requests. For more information about\n\t\t\t\tSpot Instances, see Spot\n\t\t\t\tInstances in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example creates a Spot Instance request for two m1.small\n\t\t\t\t\tinstances and associates an IAM instance profile called s3access\n\t\t\t\t\twith them.\n https://ec2.amazonaws.com/?Action=RequestSpotInstances\n&SpotPrice=0.50\n&InstanceCount=2\n&Type=one-time\n&AvailabilityZoneGroup=MyAzGroup\n&LaunchSpecification.ImageId=ami-1a2b3c4d\n&LaunchSpecification.KeyName=my-key-pair\n&LaunchSpecification.SecurityGroup.1=websrv\n&LaunchSpecification.InstanceType=m1.small\n&LaunchSpecification.IamInstanceProfile.Name=s3access\n&AUTHPARAMS\n <RequestSpotInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n \n \n sir-1a2b3c4d\n 0.5\n one-time\n open\n \n pending-evaluation\n YYYY-MM-DDTHH:MM:SS.000Z\n Your Spot request has been submitted for review, and is pending evaluation.\n \n MyAzGroup\n \n ami-1a2b3c4d\n my-key-pair\n \n \n sg-1a2b3c4d\n websrv\n \n \n m1.small\n \n \n false\n \n false\n \n YYYY-MM-DDTHH:MM:SS.000Z\n Linux/UNIX\n \n \n\n \n " - }, - "ResetImageAttribute":{ - "name":"ResetImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetImageAttributeRequest"}, - "documentation":"

Resets an attribute of an AMI to its default value.

\n \n \n Example\n This example resets the launchPermission attribute for the\n\t\t\t\t\tspecified AMI.\n https://ec2.amazonaws.com/?Action=ResetImageAttribute\n&ImageId=ami-61a54008\n&Attribute=launchPermission\n&AUTHPARAMS\n <ResetImageAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</ResetImageAttributeResponse>\n \n " - }, - "ResetInstanceAttribute":{ - "name":"ResetInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetInstanceAttributeRequest"}, - "documentation":"

Resets an attribute of an instance to its default value. To reset the kernel or\n\t\t\t\tRAM disk, the instance must be in a stopped state. To reset the\n\t\t\t\tSourceDestCheck, the instance can be either running or stopped.

\n\t\t\t

The SourceDestCheck attribute controls whether\n\t\t\t\tsource/destination checking is enabled. The default value is\n\t\t\t\ttrue, which means checking is enabled. This value must be\n\t\t\t\tfalse for a NAT instance to perform NAT. For more information, see\n\t\t\t\tNAT Instances in the\n\t\t\t\tAmazon Virtual Private Cloud User Guide.

\n \n \n Example\n This example resets the sourceDestCheck attribute.\n https://ec2.amazonaws.com/?Action=ResetInstanceAttribute\n&InstanceId=i-1a2b3c4d\n&Attribute=sourceDestCheck\n&AUTHPARAMS\n <ResetInstanceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <return>true</return>\n</ResetInstanceAttributeResponse>\n \n " - }, - "ResetNetworkInterfaceAttribute":{ - "name":"ResetNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetNetworkInterfaceAttributeRequest"}, - "documentation":"

Resets a network interface attribute. You can specify only one attribute at a time.

\n \n \n Example\n This example resets the sourceDestCheck attribute for the \n\t\t\t\t specified network interface.\n https://ec2.amazonaws.com/?Action=ResetNetworkInterfaceAttribute\n&NetworkInterfaceId=eni-ffda3197\n&Attribute=sourceDestCheck\n&AUTHPARAMS\n <ResetNetworkInterfaceAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>5187642e-3f16-44a3-b05f-24c3848b5162</requestId>\n <return>true</return>\n</ResetNetworkInterfaceAttributeResponse>\n \n " - }, - "ResetSnapshotAttribute":{ - "name":"ResetSnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetSnapshotAttributeRequest"}, - "documentation":"

Resets permission settings for the specified snapshot.

\n

For more information on modifying snapshot permissions, see Sharing Snapshots in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example resets the permissions for snap-1a2b3c4d, making it a\n private snapshot that can only be used by the account that created it.\n https://ec2.amazonaws.com/?Action=ResetSnapshotAttribute\n&SnapshotId=snap-1a2b3c4d\n&Attribute=createVolumePermission\n&AUTHPARAMS\n <ResetSnapshotAttributeResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</ResetSnapshotAttributeResponse>\n \n " - }, - "RevokeSecurityGroupEgress":{ - "name":"RevokeSecurityGroupEgress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RevokeSecurityGroupEgressRequest"}, - "documentation":"

Removes one or more egress rules from a security group for EC2-VPC. The values\n\t\t\t\tthat you specify in the revoke request (for example, ports) must match the existing\n\t\t\t\trule's values for the rule to be revoked.

\n

Each rule consists of the protocol and the CIDR range or source security\n\t\t\t\tgroup. For the TCP and UDP protocols, you must also specify the destination port or\n\t\t\t\trange of ports. For the ICMP protocol, you must also specify the ICMP type and code.

\n

Rule changes are propagated to instances within the security group as quickly as\n\t\t\t\tpossible. However, a small delay might occur.

\n \n \n Example 1\n This example revokes the access that the specified security group\n\t\t\t\t\thas to the 205.192.0.0/16 and 205.159.0.0/16\n\t\t\t\t\taddress ranges on TCP port 80.\n https://ec2.amazonaws.com/?Action=RevokeSecurityGroupEgress\n&GroupId=sg-1a2b3c4d\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=80\n&IpPermissions.1.ToPort=80\n&IpPermissions.1.IpRanges.1.CidrIp=205.192.0.0/16\n&IpPermissions.1.IpRanges.2.CidrIp=205.159.0.0/16\n&AUTHPARAMS\n \n \n Example 2\n This example revokes the access that the specified security group \n\t\t\t\t\thas to the security group with the ID sg-9a8d7f5c on TCP\tport 1433.\n https://ec2.amazonaws.com/?Action=RevokeSecurityGroupEgress\n&GroupId=sg-1a2b3c4d\n&IpPermissions.1.IpProtocol=tcp\n&IpPermissions.1.FromPort=1433\n&IpPermissions.1.ToPort=1433\n&IpPermissions.1.Groups.1.GroupId=sg-9a8d7f5c\n&AUTHPARAMS\n \n " - }, - "RevokeSecurityGroupIngress":{ - "name":"RevokeSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RevokeSecurityGroupIngressRequest"}, - "documentation":"

Removes one or more ingress rules from a security group. The values\n\t\t\t\tthat you specify in the revoke request (for example, ports) must match the existing\n\t\t\t\trule's values for the rule to be removed.

\n

Each rule consists of the protocol and the CIDR range or source security\n\t\t\t\tgroup. For the TCP and UDP protocols, you must also specify the destination port or\n\t\t\t\trange of ports. For the ICMP protocol, you must also specify the ICMP type and code.

\n

Rule changes are propagated to instances within the security group as quickly as\n\t\t\t\tpossible. However, a small delay might occur.

\n \n \n Example\n This example revokes TCP port 80 access from the 205.192.0.0/16 address range\n\t\t\t\t\tfor the security group named websrv. If the security group is for\n\t\t\t\t\ta VPC, specify the ID of the security group instead of the name.\n https://ec2.amazonaws.com/?Action=RevokeSecurityGroupIngress\n&GroupName=websrv\n&IpProtocol=tcp\n&FromPort=80\n&ToPort=80\n&CidrIp=205.192.0.0/16\n&AUTHPARAMS\n <RevokeSecurityGroupIngressResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</RevokeSecurityGroupIngressResponse>\n \n " - }, - "RunInstances":{ - "name":"RunInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RunInstancesRequest"}, - "output":{ - "shape":"Reservation", - "documentation":"

One or more reservations.

", - "locationName":"reservation", - "queryName":"Reservation" - }, - "documentation":"

Launches the specified number of instances using an AMI for which you have permissions.

\n

When you launch an instance, it enters the pending state.\n After the instance is ready for you, it enters the running state.\n To check the state of your instance, call DescribeInstances.

\n\n

If you don't specify a security group when launching an instance, Amazon EC2 uses\n the default security group. For more information, see Security Groups\n in the Amazon Elastic Compute Cloud User Guide.

\n\n

Linux instances have access to the public key of the key pair at boot.\n You can use this key to provide secure access to the instance.\n Amazon EC2 public images use this feature to provide secure access without passwords.\n For more information, see Key Pairs\n in the Amazon Elastic Compute Cloud User Guide.

\n\n

You can provide optional user data when launching an instance. For more\n information, see Instance\n Metadata in the Amazon Elastic Compute Cloud User Guide.

\n\n\t\t

If any of the AMIs have a product code attached for which the user has not\n\t\t\tsubscribed, RunInstances fails.

\n \n

For more information about troubleshooting, see What To Do If An\n Instance Immediately Terminates, and Troubleshooting Connecting to Your Instance in the\n Amazon Elastic Compute Cloud User Guide.

\n\n \n \n This example launches three instances using the AMI with the ID ami-60a54009.\n https://ec2.amazonaws.com/?Action=RunInstances\n&ImageId=ami-60a54009\n&MaxCount=3\n&MinCount=1\n&KeyName=my-key-pair\n&Placement.AvailabilityZone=us-east-1d\n&AUTHPARAMS\n \n \n This example launches an m1.small instance into a subnet.\n Because no network interface is specified, the default network interface is used.\n https://ec2.amazonaws.com/?Action=RunInstances\n&ImageId=ami-31814f58\n&InstanceType=m1.small\n&MaxCount=1\n&MinCount=1\n&KeyName=my-key-pair\n&SubnetId=subnet-b2a249da\n&AUTHPARAMS\n \n \n This example launches an m1.large instance into a subnet.\n The network interface specifies a primary private IP address of 10.0.2.106\n and two secondary private IP addresses (10.0.2.107 and 10.0.2.108).\n https://ec2.amazonaws.com/?Action=RunInstances\n&ImageId=ami-beb0caec\n&InstanceType=m1.large\n&MaxCount=1\n&MinCount=1\n&KeyName=my-key-pair\n&NetworkInterface.0.DeviceIndex=0\n&NetworkInterface.0.PrivateIpAddresses.0.Primary=true\n&NetworkInterface.0.PrivateIpAddresses.0.PrivateIpAddress=10.0.2.106\n&NetworkInterface.0.PrivateIpAddresses.1.Primary=false\n&NetworkInterface.0.PrivateIpAddresses.1.PrivateIpAddress=10.0.2.107\n&NetworkInterface.0.PrivateIpAddresses.2.Primary=false\n&NetworkInterface.0.PrivateIpAddresses.2.PrivateIpAddress=10.0.2.108\n&NetworkInterface.0.SubnetId=subnet-a61dafcf\n&AUTHPARAMS\n \n \n This example launches a Dedicated Instance into the specified subnet.\n https://ec2.amazonaws.com/?Action=RunInstances\n&ImageId=ami-2a1fec43\n&MaxCount=1\n&MinCount=1\n&KeyName=my-key-pair\n&SubnetId=subnet-dea63cb7\n&Placement.Tenancy=dedicated\n&AUTHPARAMS\n \n \n This request launches an instance into a nondefault subnet, and requests a public IP\n address for a new network interface with the device index of 0.\n https://ec2.amazonaws.com/?Action=RunInstances\n&ImageId=ami-1a2b3c4d\n&MaxCount=1\n&MinCount=1\n&NetworkInterface.0.DeviceIndex=0\n&NetworkInterface.0.AssociatePublicIpAddress=true\n&NetworkInterface.0.SubnetId=subnet-1a2b3c4d\n&AUTHPARAMS\n \n \n This request launches an m1.large instance with a block device\n mapping. There are two instance store volumes mapped to /dev/sdc and\n /dev/sdd, and a 100 GB Amazon EBS volume mapped to\n /dev/sdf.\n https://ec2.amazonaws.com/?Action=RunInstances\n&ImageId=ami-1a2b3c4d\n&InstanceType=m1.large\n&BlockDeviceMapping.1.DeviceName=%2Fdev%2Fsdc\n&BlockDeviceMapping.1.VirtualName=ephemeral0\n&BlockDeviceMapping.2.DeviceName=%2Fdev%2Fsdd\n&BlockDeviceMapping.2.VirtualName=ephemeral1\n&BlockDeviceMapping.3.DeviceName=%2Fdev%2Fsdf\n&BlockDeviceMapping.3.Ebs.DeleteOnTermination=false\n&BlockDeviceMapping.3.Ebs.VolumeSize=100\n&EbsOptimized=false\n&MinCount=1\n&MaxCount=1\n&DisableApiTermination=false\n&Monitoring.Enabled=false\n&AUTHPARAMS\n \n " - }, - "StartInstances":{ - "name":"StartInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StartInstancesRequest"}, - "output":{"shape":"StartInstancesResult"}, - "documentation":"

Starts an Amazon EBS-backed AMI that you've previously stopped.

\n\t\t\t

Instances that use Amazon EBS volumes as their root devices can be quickly stopped\n\t\t\t\tand started. When an instance is stopped, the compute resources are released and you\n\t\t\t\tare not billed for hourly instance usage. However, your root partition Amazon EBS\n\t\t\t\tvolume remains, continues to persist your data, and you are charged for Amazon EBS\n\t\t\t\tvolume usage. You can restart your instance at any time. Each time you transition an\n\t\t\t\tinstance from stopped to started, Amazon EC2 charges a full instance hour, even if\n\t\t\t\ttransitions happen multiple times within a single hour.

\n\t\t\t

Before stopping an instance, make sure it is in a state from which it can\n\t\t\t\tbe restarted. Stopping an instance does not preserve data stored in RAM.

\n\t\t\t

Performing this operation on an instance that uses an instance store as its\n\t\t\t\troot device returns an error.

\n\t\t\t

For more information, see Stopping Instances\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example starts the specified instance.\n https://ec2.amazonaws.com/?Action=StartInstances\n&InstanceId.1=i-10a64379\n&AUTHPARAMS\n <StartInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instancesSet>\n <item>\n <instanceId>i-10a64379</instanceId>\n <currentState>\n <code>0</code>\n <name>pending</name>\n </currentState>\n <previousState>\n <code>80</code>\n <name>stopped</name>\n </previousState>\n </item>\n </instancesSet>\n</StartInstancesResponse>\n \n " - }, - "StopInstances":{ - "name":"StopInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StopInstancesRequest"}, - "output":{"shape":"StopInstancesResult"}, - "documentation":"

Stops an Amazon EBS-backed instance. Each time you transition an instance from\n\t\t\t\tstopped to started, Amazon EC2 charges a full instance hour, even if transitions happen\n\t\t\t\tmultiple times within a single hour.

\n\t\t\t

You can't start or stop Spot Instances.

\n\t\t\t

Instances that use Amazon EBS volumes as their root devices can be quickly stopped\n\t\t\t\tand started. When an instance is stopped, the compute resources are released and you\n\t\t\t\tare not billed for hourly instance usage. However, your root partition Amazon EBS\n\t\t\t\tvolume remains, continues to persist your data, and you are charged for Amazon EBS\n\t\t\t\tvolume usage. You can restart your instance at any time.

\n\t\t\t

Before stopping an instance, make sure it is in a state from which it can\n\t\t\t\tbe restarted. Stopping an instance does not preserve data stored in RAM.

\n\t\t\t

Performing this operation on an instance that uses an instance store as its\n\t\t\t\troot device returns an error.

\n

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances.\n What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance,\n the root device and any other devices attached to the instance persist. When you terminate an instance, the root\n device and any other devices attached during the instance launch are automatically deleted. For more information\n about the differences between stopping and terminating instances, see\n Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

\n

For more information about troubleshooting, see Troubleshooting\n Stopping Your Instance in the\n Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example stops the specified instance.\n https://ec2.amazonaws.com/?Action=StopInstances\n&InstanceId.1=i-10a64379\n&AUTHPARAMS\n <StopInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instancesSet>\n <item>\n <instanceId>i-10a64379</instanceId>\n <currentState>\n <code>64</code>\n <name>stopping</name>\n </currentState>\n <previousState>\n <code>16</code>\n <name>running</name>\n </previousState>\n </instancesSet>\n</StopInstancesResponse>\n \n " - }, - "TerminateInstances":{ - "name":"TerminateInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"TerminateInstancesRequest"}, - "output":{"shape":"TerminateInstancesResult"}, - "documentation":"

Shuts down one or more instances. This operation is idempotent; if you terminate\n\t\t\t\tan instance more than once, each call succeeds.

\n\t\t\t

Terminated instances remain visible after termination (for approximately one\n\t\t\t\thour).

\n\t\t\t

By default, Amazon EC2 deletes all Amazon EBS volumes that were attached\n\t\t\t\twhen the instance launched. Volumes attached after instance launch\n\t\t\t\tcontinue running.

\n

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances.\n What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance,\n the root device and any other devices attached to the instance persist. When you terminate an instance, the root\n device and any other devices attached during the instance launch are automatically deleted. For more information\n about the differences between stopping and terminating instances, see\n Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

\n

For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example terminates the specified instance.\n https://ec2.amazonaws.com/?Action=TerminateInstances\n&InstanceId.1=i-3ea74257\n&AUTHPARAMS\n <TerminateInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instancesSet>\n <item>\n <instanceId>i-3ea74257</instanceId>\n <currentState>\n <code>32</code>\n <name>shutting-down</name>\n </currentState>\n <previousState>\n <code>16</code>\n <name>running</name>\n </previousState>\n </item>\n </instancesSet>\n</TerminateInstancesResponse>\n \n " - }, - "UnassignPrivateIpAddresses":{ - "name":"UnassignPrivateIpAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnassignPrivateIpAddressesRequest"}, - "documentation":"

Unassigns one or more secondary private IP addresses from a network interface.

\n \n \n Example\n The following example unassigns two secondary private IP addresses from the\n\t\t\t\t\tspecified network interface.\n https://ec2.amazonaws.com/?Action=UnassignPrivateIpAddresses\n&NetworkInterfaceId=eni-197d9972\n&PrivateIpAddress.0=10.0.2.60 \n&PrivateIpAddress.1=10.0.2.65 \n&AUTHPARAMS\n <UnassignPrivateIpAddresses xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> \n <return>true</return>\n</UnassignPrivateIpAddresses>\n \n " - }, - "UnmonitorInstances":{ - "name":"UnmonitorInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnmonitorInstancesRequest"}, - "output":{"shape":"UnmonitorInstancesResult"}, - "documentation":"

Disables monitoring for a running instance. For more information about monitoring\n\t\t\t\tinstances, see Monitoring Your\n\t\t\t\tInstances and Volumes in the Amazon Elastic Compute Cloud User Guide.

\n \n \n Example\n This example disables monitoring for the specified instances.\n https://ec2.amazonaws.com/?Action=UnmonitorInstances\n&InstanceId.1=i-43a4412a\n&InstanceId.2=i-23a3397d\n&AUTHPARAMS\n <UnmonitorInstancesResponse xmlns=\"http://ec2.amazonaws.com/doc/2013-10-01/\">\n <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>\n <instancesSet>\n <item>\n <instanceId>i-43a4412a</instanceId>\n <monitoring>\n <state>disabled</state>\n </monitoring>\n </item>\n <item>\n <instanceId>i-23a3397d</instanceId>\n <monitoring>\n <state>disabled</state>\n </monitoring>\n </item>\n </instancesSet>\n</UnmonitorInstancesResponse>\n \n " - } - }, - "shapes":{ - "AcceptVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "queryName":"VpcPeeringConnectionId", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "AcceptVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnection":{ - "shape":"VpcPeeringConnection", - "documentation":"

Information about the VPC peering connection.

", - "queryName":"VpcPeeringConnection", - "locationName":"vpcPeeringConnection" - } - } - }, - "AccountAttribute":{ - "type":"structure", - "members":{ - "AttributeName":{ - "shape":"String", - "documentation":"

The name of the account attribute.

", - "queryName":"AttributeName", - "locationName":"attributeName" - }, - "AttributeValues":{ - "shape":"AccountAttributeValueList", - "documentation":"

One or more values for the account attribute.

", - "locationName":"attributeValueSet", - "queryName":"AttributeValueSet" - } - }, - "documentation":"

Describes an account attribute.

" - }, - "AccountAttributeList":{ - "type":"list", - "member":{ - "shape":"AccountAttribute", - "locationName":"item" - }, - "queryFlattened":true - }, - "AccountAttributeName":{ - "type":"string", - "enum":[ - "supported-platforms", - "default-vpc" - ] - }, - "AccountAttributeNameStringList":{ - "type":"list", - "member":{ - "shape":"AccountAttributeName", - "locationName":"attributeName" - }, - "queryFlattened":true - }, - "AccountAttributeValue":{ - "type":"structure", - "members":{ - "AttributeValue":{ - "shape":"String", - "documentation":"

The value.

", - "queryName":"AttributeValue", - "locationName":"attributeValue" - } - }, - "documentation":"

Describes a value of an account attribute.

" - }, - "AccountAttributeValueList":{ - "type":"list", - "member":{ - "shape":"AccountAttributeValue", - "locationName":"item" - }, - "queryFlattened":true - }, - "Address":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance the address is associated with (if any).

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

", - "locationName":"publicIp", - "queryName":"PublicIp" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

The ID representing the allocation of the address for use with EC2-VPC.

", - "queryName":"AllocationId", - "locationName":"allocationId" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The ID representing the association of the address with an instance in a VPC.

", - "queryName":"AssociationId", - "locationName":"associationId" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Indicates whether this Elastic IP address is for use with instances\n\t\t\t\tin EC2-Classic (standard) or instances in a VPC (vpc).

", - "queryName":"Domain", - "locationName":"domain" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "NetworkInterfaceOwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that owns the network interface.

", - "queryName":"NetworkInterfaceOwnerId", - "locationName":"networkInterfaceOwnerId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address associated with the Elastic IP address.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - } - }, - "documentation":"

Describes an Elastic IP address.

" - }, - "AddressList":{ - "type":"list", - "member":{ - "shape":"Address", - "locationName":"item" - }, - "queryFlattened":true - }, - "AllocateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Set to vpc to allocate the address for use with instances in a VPC.

\n

Default: The address is for use with instances in EC2-Classic.

", - "queryName":"Domain" - } - } - }, - "AllocateAddressResult":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

", - "locationName":"publicIp", - "queryName":"PublicIp" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Indicates whether this Elastic IP address is for use with instances\n\t\t\t\tin EC2-Classic (standard) or instances in a VPC (vpc).

", - "queryName":"Domain", - "locationName":"domain" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID that AWS assigns to represent the allocation of\n\t\t\t\tthe Elastic IP address for use with instances in a VPC.

", - "queryName":"AllocationId", - "locationName":"allocationId" - } - } - }, - "AllocationIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"AllocationId" - }, - "queryFlattened":true - }, - "ArchitectureValues":{ - "type":"string", - "enum":[ - "i386", - "x86_64" - ] - }, - "AssignPrivateIpAddressesRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressStringList", - "documentation":"

One or more IP addresses to be assigned as a secondary private IP address to\n\t\t\t\tthe network interface.

\n\t\t

If you don't specify an IP address, Amazon EC2 automatically\n\t\t\t\tselects an IP address within the subnet range.

", - "locationName":"privateIpAddress", - "queryName":"PrivateIpAddress" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary IP addresses to assign to the network interface.

", - "queryName":"SecondaryPrivateIpAddressCount", - "locationName":"secondaryPrivateIpAddressCount" - }, - "AllowReassignment":{ - "shape":"Boolean", - "documentation":"

Indicates whether to allow an IP address that is already assigned\n\t\t\t\tto another network interface or instance to be reassigned to the\n\t\t\t\tspecified network interface.

", - "queryName":"AllowReassignment", - "locationName":"allowReassignment" - } - } - }, - "AssociateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance. The operation fails if\n\t\t\t\tyou specify an instance ID unless exactly one network interface is\n\t\t\t\tattached.

", - "queryName":"InstanceId" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

", - "queryName":"PublicIp" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The allocation ID. This is required for EC2-VPC.

", - "queryName":"AllocationId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the network interface. If the instance has more than one \n network interface, you must specify a network interface ID.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] The primary or secondary private IP address to associate\n\t\t\t\twith the Elastic IP address. If no private IP address is specified, the\n\t\t\t\tElastic IP address is associated with the primary private IP\n\t\t\t\taddress.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "AllowReassociation":{ - "shape":"Boolean", - "documentation":"

[EC2-VPC] Allows an Elastic IP address that is already associated\n\t\t\t\twith an instance or network interface to be re-associated with the\n\t\t\t\tspecified instance or network interface. Otherwise, the operation\n\t\t\t\tfails.

\n

Default: false

", - "queryName":"AllowReassociation", - "locationName":"allowReassociation" - } - } - }, - "AssociateAddressResult":{ - "type":"structure", - "members":{ - "AssociationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID that represents the association of the Elastic IP\n\t\t\t\taddress with an instance.

", - "queryName":"AssociationId", - "locationName":"associationId" - } - } - }, - "AssociateDhcpOptionsRequest":{ - "type":"structure", - "required":[ - "DhcpOptionsId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the DHCP options set, or default to associate \n no DHCP options with the VPC.

", - "queryName":"DhcpOptionsId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId" - } - } - }, - "AssociateRouteTableRequest":{ - "type":"structure", - "required":[ - "SubnetId", - "RouteTableId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - } - } - }, - "AssociateRouteTableResult":{ - "type":"structure", - "members":{ - "AssociationId":{ - "shape":"String", - "documentation":"

The route table association ID (needed to disassociate the route table).

", - "queryName":"AssociationId", - "locationName":"associationId" - } - } - }, - "AttachInternetGatewayRequest":{ - "type":"structure", - "required":[ - "InternetGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "queryName":"InternetGatewayId", - "locationName":"internetGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - } - } - }, - "AttachNetworkInterfaceRequest":{ - "type":"structure", - "required":[ - "NetworkInterfaceId", - "InstanceId", - "DeviceIndex" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device for the network interface attachment.

", - "queryName":"DeviceIndex", - "locationName":"deviceIndex" - } - } - }, - "AttachNetworkInterfaceResult":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "queryName":"AttachmentId", - "locationName":"attachmentId" - } - } - }, - "AttachVolumeRequest":{ - "type":"structure", - "required":[ - "VolumeId", - "InstanceId", - "Device" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume. The volume and instance must be within the same Availability\n Zone.

", - "queryName":"VolumeId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name to expose to the instance (for example, /dev/sdh or\n xvdh).

", - "queryName":"Device" - } - } - }, - "AttachVolumeResult":{ - "type":"structure", - "members":{ - "Attachment":{ - "shape":"VolumeAttachment", - "locationName":"attachment", - "queryName":"Attachment" - } - } - }, - "AttachVpnGatewayRequest":{ - "type":"structure", - "required":[ - "VpnGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "queryName":"VpnGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId" - } - } - }, - "AttachVpnGatewayResult":{ - "type":"structure", - "members":{ - "VpcAttachment":{ - "shape":"VpcAttachment", - "documentation":"

Information about the attachment.

", - "locationName":"attachment", - "queryName":"Attachment" - } - } - }, - "AttachmentStatus":{ - "type":"string", - "enum":[ - "attaching", - "attached", - "detaching", - "detached" - ] - }, - "AttributeBooleanValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"Boolean", - "queryName":"Value", - "locationName":"value" - } - } - }, - "AttributeValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"String", - "queryName":"Value", - "locationName":"value" - } - } - }, - "AuthorizeSecurityGroupEgressRequest":{ - "type":"structure", - "required":["GroupId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId", - "locationName":"groupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupName", - "locationName":"sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupOwnerId", - "locationName":"sourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number \n (see Protocol Numbers). \n Use -1 to specify all.

", - "queryName":"IpProtocol", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, \n use -1 to specify all ICMP types.

", - "queryName":"FromPort", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, \n use -1 to specify all ICMP codes for the ICMP type.

", - "queryName":"ToPort", - "locationName":"toPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "queryName":"CidrIp", - "locationName":"cidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

", - "queryName":"IpPermissions", - "locationName":"ipPermissions" - } - } - }, - "AuthorizeSecurityGroupIngressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group.

", - "queryName":"GroupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number \n (see Protocol Numbers). \n Use -1 to specify all.

", - "queryName":"IpProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, \n use -1 to specify all ICMP types.

", - "queryName":"FromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, \n use -1 to specify all ICMP codes for the ICMP type.

", - "queryName":"ToPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "queryName":"CidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

", - "queryName":"IpPermissions" - } - } - }, - "AvailabilityZone":{ - "type":"structure", - "members":{ - "ZoneName":{ - "shape":"String", - "documentation":"

The name of the Availability Zone.

", - "queryName":"ZoneName", - "locationName":"zoneName" - }, - "State":{ - "shape":"AvailabilityZoneState", - "documentation":"

The state of the Availability Zone.

", - "locationName":"zoneState", - "queryName":"ZoneState" - }, - "RegionName":{ - "shape":"String", - "documentation":"

The name of the region.

", - "queryName":"RegionName", - "locationName":"regionName" - }, - "Messages":{ - "shape":"AvailabilityZoneMessageList", - "documentation":"

Any messages about the Availability Zone.

", - "locationName":"messageSet", - "queryName":"MessageSet" - } - }, - "documentation":"

Describes an Availability Zone.

" - }, - "AvailabilityZoneList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZone", - "locationName":"item" - }, - "queryFlattened":true - }, - "AvailabilityZoneMessage":{ - "type":"structure", - "members":{ - "Message":{ - "shape":"String", - "documentation":"

The message about the Availability Zone.

", - "queryName":"Message", - "locationName":"message" - } - }, - "documentation":"

Describes a message about an Availability Zone.

" - }, - "AvailabilityZoneMessageList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZoneMessage", - "locationName":"item" - }, - "queryFlattened":true - }, - "AvailabilityZoneState":{ - "type":"string", - "enum":["available"] - }, - "BlockDeviceMapping":{ - "type":"structure", - "members":{ - "VirtualName":{ - "shape":"String", - "documentation":"

The virtual device name.

", - "locationName":"virtualName", - "queryName":"VirtualName" - }, - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "locationName":"deviceName", - "queryName":"DeviceName" - }, - "Ebs":{ - "shape":"EbsBlockDevice", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "queryName":"Ebs", - "locationName":"ebs" - }, - "NoDevice":{ - "shape":"String", - "documentation":"

Suppresses the specified device included in the block device mapping of the AMI.

", - "queryName":"NoDevice", - "locationName":"noDevice" - } - }, - "documentation":"

Describes a block device mapping.

" - }, - "BlockDeviceMappingList":{ - "type":"list", - "member":{ - "shape":"BlockDeviceMapping", - "locationName":"item" - }, - "queryFlattened":true - }, - "BlockDeviceMappingRequestList":{ - "type":"list", - "member":{ - "shape":"BlockDeviceMapping", - "locationName":"BlockDeviceMapping" - }, - "queryFlattened":true - }, - "Boolean":{"type":"boolean"}, - "BundleIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"BundleId" - }, - "queryFlattened":true - }, - "BundleInstanceRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Storage" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance to bundle.

", - "queryName":"InstanceId" - }, - "Storage":{ - "shape":"Storage", - "documentation":"

The bucket in which to store the AMI. You can specify a bucket that\n\t\t\t\tyou already own or a new bucket that Amazon EC2 creates on your behalf.\n\t\t\t\tIf you specify a bucket that belongs to someone else, Amazon EC2 returns\n\t\t\t\tan error.

", - "queryName":"Storage" - } - } - }, - "BundleInstanceResult":{ - "type":"structure", - "members":{ - "BundleTask":{ - "shape":"BundleTask", - "documentation":"

Information about the bundle task.

", - "locationName":"bundleInstanceTask", - "queryName":"BundleInstanceTask" - } - } - }, - "BundleTask":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance associated with this bundle task.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "BundleId":{ - "shape":"String", - "documentation":"

The ID for this bundle task.

", - "locationName":"bundleId", - "queryName":"BundleId" - }, - "State":{ - "shape":"BundleTaskState", - "documentation":"

The state of the task.

", - "locationName":"state", - "queryName":"State" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time this task started.

", - "locationName":"startTime", - "queryName":"StartTime" - }, - "UpdateTime":{ - "shape":"DateTime", - "documentation":"

The time of the most recent update for the task.

", - "locationName":"updateTime", - "queryName":"UpdateTime" - }, - "Storage":{ - "shape":"Storage", - "documentation":"

The Amazon S3 storage locations.

", - "locationName":"storage", - "queryName":"Storage" - }, - "Progress":{ - "shape":"String", - "documentation":"

The level of task completion, as a percent (for example, 20%).

", - "locationName":"progress", - "queryName":"Progress" - }, - "BundleTaskError":{ - "shape":"BundleTaskError", - "documentation":"

If the task fails, a description of the error.

", - "locationName":"error", - "queryName":"Error" - } - }, - "documentation":"

Describes a bundle task.

" - }, - "BundleTaskError":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The error code.

", - "locationName":"code", - "queryName":"Code" - }, - "Message":{ - "shape":"String", - "documentation":"

The error message.

", - "locationName":"message", - "queryName":"Message" - } - }, - "documentation":"

Describes an error for BundleInstance.

" - }, - "BundleTaskList":{ - "type":"list", - "member":{ - "shape":"BundleTask", - "locationName":"item" - }, - "queryFlattened":true - }, - "BundleTaskState":{ - "type":"string", - "enum":[ - "pending", - "waiting-for-shutdown", - "bundling", - "storing", - "cancelling", - "complete", - "failed" - ] - }, - "CancelBundleTaskRequest":{ - "type":"structure", - "required":["BundleId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "BundleId":{ - "shape":"String", - "documentation":"

The ID of the bundle task.

", - "queryName":"BundleId" - } - } - }, - "CancelBundleTaskResult":{ - "type":"structure", - "members":{ - "BundleTask":{ - "shape":"BundleTask", - "documentation":"

The bundle task.

", - "locationName":"bundleInstanceTask", - "queryName":"BundleInstanceTask" - } - } - }, - "CancelConversionRequest":{ - "type":"structure", - "required":["ConversionTaskId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ConversionTaskId":{ - "shape":"String", - "documentation":"

The ID of the conversion task.

", - "queryName":"ConversionTaskId", - "locationName":"conversionTaskId" - }, - "ReasonMessage":{ - "shape":"String", - "queryName":"ReasonMessage", - "locationName":"reasonMessage" - } - } - }, - "CancelExportTaskRequest":{ - "type":"structure", - "required":["ExportTaskId"], - "members":{ - "ExportTaskId":{ - "shape":"String", - "documentation":"

The ID of the export task. This is the ID\n returned by CreateInstanceExportTask.

", - "queryName":"ExportTaskId", - "locationName":"exportTaskId" - } - } - }, - "CancelReservedInstancesListingRequest":{ - "type":"structure", - "required":["ReservedInstancesListingId"], - "members":{ - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance listing.

", - "queryName":"ReservedInstancesListingId", - "locationName":"reservedInstancesListingId" - } - } - }, - "CancelReservedInstancesListingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

The Reserved Instance listing.

", - "locationName":"reservedInstancesListingsSet", - "queryName":"ReservedInstancesListingsSet" - } - } - }, - "CancelSpotInstanceRequestState":{ - "type":"string", - "enum":[ - "active", - "open", - "closed", - "cancelled", - "completed" - ] - }, - "CancelSpotInstanceRequestsRequest":{ - "type":"structure", - "required":["SpotInstanceRequestIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SpotInstanceRequestIds":{ - "shape":"SpotInstanceRequestIdList", - "documentation":"

One or more Spot Instance request IDs.

", - "locationName":"SpotInstanceRequestId", - "queryName":"SpotInstanceRequestId" - } - } - }, - "CancelSpotInstanceRequestsResult":{ - "type":"structure", - "members":{ - "CancelledSpotInstanceRequests":{ - "shape":"CancelledSpotInstanceRequestList", - "documentation":"

One or more Spot Instance requests.

", - "locationName":"spotInstanceRequestSet", - "queryName":"SpotInstanceRequestSet" - } - } - }, - "CancelledSpotInstanceRequest":{ - "type":"structure", - "members":{ - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "queryName":"SpotInstanceRequestId", - "locationName":"spotInstanceRequestId" - }, - "State":{ - "shape":"CancelSpotInstanceRequestState", - "documentation":"

The state of the Spot Instance request.

", - "queryName":"State", - "locationName":"state" - } - }, - "documentation":"

Describes a request to cancel a Spot Instance.

" - }, - "CancelledSpotInstanceRequestList":{ - "type":"list", - "member":{ - "shape":"CancelledSpotInstanceRequest", - "locationName":"item" - }, - "queryFlattened":true - }, - "ConfirmProductInstanceRequest":{ - "type":"structure", - "required":[ - "ProductCode", - "InstanceId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ProductCode":{ - "shape":"String", - "documentation":"

The product code. This must be an Amazon DevPay product code that you own.

", - "queryName":"ProductCode" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId" - } - } - }, - "ConfirmProductInstanceResult":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the instance owner. This is only present if the product code\n\t\t\t\tis attached to the instance.

", - "locationName":"ownerId", - "queryName":"OwnerId" - } - } - }, - "ContainerFormat":{ - "type":"string", - "enum":["ova"] - }, - "ConversionIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - }, - "queryFlattened":true - }, - "ConversionTask":{ - "type":"structure", - "required":[ - "ConversionTaskId", - "State" - ], - "members":{ - "ConversionTaskId":{ - "shape":"String", - "documentation":"

The ID of the conversion task.

", - "queryName":"ConversionTaskId", - "locationName":"conversionTaskId" - }, - "ExpirationTime":{ - "shape":"String", - "documentation":"

The time when the task expires. If the upload isn't complete before the expiration time, we automatically cancel the task.

", - "queryName":"ExpirationTime", - "locationName":"expirationTime" - }, - "ImportInstance":{ - "shape":"ImportInstanceTaskDetails", - "documentation":"

If the task is for importing an instance, this contains information about the import instance task.

", - "queryName":"ImportInstance", - "locationName":"importInstance" - }, - "ImportVolume":{ - "shape":"ImportVolumeTaskDetails", - "documentation":"

If the task is for importing a volume, this contains information about the import volume task.

", - "queryName":"ImportVolume", - "locationName":"importVolume" - }, - "State":{ - "shape":"ConversionTaskState", - "documentation":"

The state of the conversion task.

", - "queryName":"State", - "locationName":"state" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status message related to the conversion task.

", - "queryName":"StatusMessage", - "locationName":"statusMessage" - }, - "Tags":{ - "shape":"TagList", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes a conversion task.

" - }, - "ConversionTaskState":{ - "type":"string", - "enum":[ - "active", - "cancelling", - "cancelled", - "completed" - ] - }, - "CopyImageRequest":{ - "type":"structure", - "required":[ - "SourceRegion", - "SourceImageId", - "Name" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The name of the region that contains the AMI to copy.

", - "queryName":"SourceRegion" - }, - "SourceImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI to copy.

", - "queryName":"SourceImageId" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the new AMI in the destination region.

", - "queryName":"Name" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new AMI in the destination region.

", - "queryName":"Description" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure\n\t\t\t\tidempotency of the request. For more information, see How to Ensure Idempotency in the \n\t\t\t Amazon Elastic Compute Cloud User Guide.

", - "queryName":"ClientToken" - } - } - }, - "CopyImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the new AMI.

", - "locationName":"imageId", - "queryName":"ImageId" - } - } - }, - "CopySnapshotRequest":{ - "type":"structure", - "required":[ - "SourceRegion", - "SourceSnapshotId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The ID of the region that contains the snapshot to be copied.

", - "queryName":"SourceRegion" - }, - "SourceSnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot to copy.

", - "queryName":"SourceSnapshotId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new Amazon EBS snapshot.

", - "queryName":"Description" - }, - "DestinationRegion":{ - "shape":"String", - "documentation":"

The destination region of the snapshot copy operation. This parameter is required in the\n PresignedUrl.

", - "locationName":"destinationRegion", - "queryName":"DestinationRegion" - }, - "PresignedUrl":{ - "shape":"String", - "documentation":"

The pre-signed URL that facilitates copying an encrypted snapshot. This parameter is only\n required when copying an encrypted snapshot with the Amazon EC2 Query API; it is available as an\n optional parameter in all other cases. The PresignedUrl should use the snapshot\n source endpoint, the CopySnapshot action, and include the\n SourceRegion, SourceSnapshotId, and DestinationRegion\n parameters. The PresignedUrl must be signed using AWS Signature Version 4.\n Because Amazon EBS snapshots are stored in Amazon S3, the signing algorithm for this parameter uses the\n same logic that is described in Authenticating Requests by Using Query Parameters (AWS Signature Version 4) in the\n Amazon Simple Storage Service API Reference. An invalid or improperly signed PresignedUrl will cause\n the copy operation to fail asynchronously, and the snapshot will move to an error\n state.

", - "locationName":"presignedUrl", - "queryName":"PresignedUrl" - } - } - }, - "CopySnapshotResult":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the new snapshot.

", - "locationName":"snapshotId", - "queryName":"SnapshotId" - } - } - }, - "CreateCustomerGatewayRequest":{ - "type":"structure", - "required":[ - "Type", - "PublicIp", - "BgpAsn" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection that this customer gateway supports.

", - "queryName":"Type" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Internet-routable IP address for the customer gateway's outside\n\t\t\t\tinterface. The address must be static.

", - "locationName":"IpAddress", - "queryName":"IpAddress" - }, - "BgpAsn":{ - "shape":"Integer", - "documentation":"

For devices that support BGP, the customer gateway's BGP ASN.

\n\t\t

Default: 65000

", - "queryName":"BgpAsn" - } - } - }, - "CreateCustomerGatewayResult":{ - "type":"structure", - "members":{ - "CustomerGateway":{ - "shape":"CustomerGateway", - "documentation":"

Information about the customer gateway.

", - "locationName":"customerGateway", - "queryName":"CustomerGateway" - } - } - }, - "CreateDhcpOptionsRequest":{ - "type":"structure", - "required":["DhcpConfigurations"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "DhcpConfigurations":{ - "shape":"DhcpConfigurationList", - "documentation":"

A DHCP configuration option.

", - "locationName":"dhcpConfiguration", - "queryName":"DhcpConfiguration" - } - } - }, - "CreateDhcpOptionsResult":{ - "type":"structure", - "members":{ - "DhcpOptions":{ - "shape":"DhcpOptions", - "documentation":"

A set of DHCP options.

", - "locationName":"dhcpOptions", - "queryName":"DhcpOptions" - } - } - }, - "CreateImageRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Name" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "Name":{ - "shape":"String", - "documentation":"

A name for the new image.

\n

Constraints: 3-128 alphanumeric characters, parenthesis (()), periods (.), slashes\n\t\t\t\t(/), dashes (-), or underscores(_)

", - "queryName":"Name", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new image.

", - "queryName":"Description", - "locationName":"description" - }, - "NoReboot":{ - "shape":"Boolean", - "documentation":"

By default, this parameter is set to false, which means\n\t\t\t\tAmazon EC2 attempts to shut down the instance cleanly before image\n\t\t\t\tcreation and then reboots the instance. When the parameter is set to\n\t\t\t\ttrue, Amazon EC2 doesn't shut down the instance before\n\t\t\t\tcreating the image. When this option is used, file system integrity on\n\t\t\t\tthe created image can't be guaranteed.

", - "queryName":"NoReboot", - "locationName":"noReboot" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

Information about one or more block device mappings.

", - "locationName":"blockDeviceMapping", - "queryName":"BlockDeviceMapping" - } - } - }, - "CreateImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the new AMI.

", - "queryName":"ImageId", - "locationName":"imageId" - } - } - }, - "CreateInstanceExportTaskRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "Description":{ - "shape":"String", - "documentation":"

A description for the conversion task or the resource being\n exported. The maximum length is 255 bytes.

", - "queryName":"Description", - "locationName":"description" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "TargetEnvironment":{ - "shape":"ExportEnvironment", - "documentation":"

The target virtualization environment.

", - "queryName":"TargetEnvironment", - "locationName":"targetEnvironment" - }, - "ExportToS3Task":{ - "shape":"ExportToS3TaskSpecification", - "locationName":"exportToS3", - "queryName":"ExportToS3" - } - } - }, - "CreateInstanceExportTaskResult":{ - "type":"structure", - "members":{ - "ExportTask":{ - "shape":"ExportTask", - "queryName":"ExportTask", - "locationName":"exportTask" - } - } - }, - "CreateInternetGatewayRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - } - } - }, - "CreateInternetGatewayResult":{ - "type":"structure", - "members":{ - "InternetGateway":{ - "shape":"InternetGateway", - "documentation":"

Information about the Internet gateway.

", - "queryName":"InternetGateway", - "locationName":"internetGateway" - } - } - }, - "CreateKeyPairRequest":{ - "type":"structure", - "required":["KeyName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

A unique name for the key pair.

", - "queryName":"KeyName" - } - } - }, - "CreateKeyPairResult":{ - "type":"structure", - "members":{ - "KeyPair":{ - "shape":"KeyPair", - "documentation":"

Information about the key pair.

", - "locationName":"keyPair", - "queryName":"KeyPair" - } - } - }, - "CreateNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the ACL.

", - "queryName":"NetworkAclId", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number for the entry (for example, 100). ACL\n\t\t\t\tentries are processed in ascending order by rule number.

\n

Constraints: Positive integer from 1 to 32766

", - "queryName":"RuleNumber", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The protocol. A value of -1 means all protocols.

", - "queryName":"Protocol", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "queryName":"RuleAction", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet).

", - "queryName":"Egress", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation.

", - "queryName":"CidrBlock", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code.

", - "locationName":"Icmp", - "queryName":"Icmp" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", - "queryName":"PortRange", - "locationName":"portRange" - } - } - }, - "CreateNetworkAclRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - } - } - }, - "CreateNetworkAclResult":{ - "type":"structure", - "members":{ - "NetworkAcl":{ - "shape":"NetworkAcl", - "documentation":"

Information about the network ACL.

", - "queryName":"NetworkAcl", - "locationName":"networkAcl" - } - } - }, - "CreateNetworkInterfaceRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet to associate with the network interface.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the network interface.

", - "queryName":"Description", - "locationName":"description" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The primary private IP address of the network interface. If you don't specify an IP\n\t\t\t\taddress, Amazon EC2 selects one for you from the subnet range.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

The IDs of one or more security groups.

", - "locationName":"SecurityGroupId", - "queryName":"SecurityGroupId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressSpecificationList", - "documentation":"

One or more private IP addresses.

", - "queryName":"PrivateIpAddresses", - "locationName":"privateIpAddresses" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary private IP addresses to assign to a network\n\t\t\t\tinterface. When you specify a number of secondary IP addresses, Amazon EC2\n\t\t\t\tselects these IP addresses within the subnet range.

\n

The number of IP addresses you can assign to a network interface\n\t\t\t\tvaries by instance type. For more information, see Private IP Addresses Per ENI Per Instance Type in the\n\t\t\t\tAmazon Elastic Compute Cloud User Guide.

", - "queryName":"SecondaryPrivateIpAddressCount", - "locationName":"secondaryPrivateIpAddressCount" - }, - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - } - } - }, - "CreateNetworkInterfaceResult":{ - "type":"structure", - "members":{ - "NetworkInterface":{ - "shape":"NetworkInterface", - "documentation":"

Information about the network interface.

", - "queryName":"NetworkInterface", - "locationName":"networkInterface" - } - } - }, - "CreatePlacementGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "Strategy" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

A name for the placement group.

\n

Constraints: Up to 255 ASCII characters

", - "queryName":"GroupName", - "locationName":"groupName" - }, - "Strategy":{ - "shape":"PlacementStrategy", - "documentation":"

The placement strategy.

", - "queryName":"Strategy", - "locationName":"strategy" - } - } - }, - "CreateReservedInstancesListingRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesId", - "InstanceCount", - "PriceSchedules", - "ClientToken" - ], - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the active Reserved Instance.

", - "queryName":"ReservedInstancesId", - "locationName":"reservedInstancesId" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of instances that are a part of a Reserved Instance account to be listed\n\t\t\t\tin the Reserved Instance Marketplace. This number should be less than or equal to the\n\t\t\t\tinstance count associated with the Reserved Instance ID specified in this call.

", - "queryName":"InstanceCount", - "locationName":"instanceCount" - }, - "PriceSchedules":{ - "shape":"PriceScheduleSpecificationList", - "documentation":"

A list specifying the price of the Reserved Instance for each month\n\t\t\t\tremaining in the Reserved Instance term.

", - "queryName":"PriceSchedules", - "locationName":"priceSchedules" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure idempotency of your\n\t\t\t\tlistings. This helps avoid duplicate listings. For more information, see \n\t\t\t\tEnsuring Idempotency \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

", - "queryName":"ClientToken", - "locationName":"clientToken" - } - } - }, - "CreateReservedInstancesListingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

Information about the Reserved Instances listing.

", - "locationName":"reservedInstancesListingsSet", - "queryName":"ReservedInstancesListingsSet" - } - } - }, - "CreateRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table for the route.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR address block used for the destination match. Routing\n\t\t\t\tdecisions are based on the most specific match.

", - "queryName":"DestinationCidrBlock", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of an Internet gateway attached to your VPC.

", - "queryName":"GatewayId", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC. The operation fails if\n\t\t\t\tyou specify an instance ID unless exactly one network interface is\n\t\t\t\tattached.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of a network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of a VPC peering connection.

", - "queryName":"VpcPeeringConnectionId", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "CreateRouteTableRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - } - } - }, - "CreateRouteTableResult":{ - "type":"structure", - "members":{ - "RouteTable":{ - "shape":"RouteTable", - "documentation":"

Information about the route table.

", - "queryName":"RouteTable", - "locationName":"routeTable" - } - } - }, - "CreateSecurityGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "Description" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

\n

Constraints: Up to 255 characters in length

\n

Constraints for EC2-Classic: ASCII characters

\n

Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*

", - "queryName":"GroupName" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the security group. This is informational only.

", - "locationName":"GroupDescription", - "queryName":"GroupDescription" - }, - "VpcId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the VPC.

", - "queryName":"VpcId" - } - } - }, - "CreateSecurityGroupResult":{ - "type":"structure", - "members":{ - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId", - "locationName":"groupId" - } - } - }, - "CreateSnapshotRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

", - "queryName":"VolumeId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the snapshot.

", - "queryName":"Description" - } - } - }, - "CreateSnapshotResult":{ - "type":"structure", - "members":{ - "Snapshot":{ - "shape":"Snapshot", - "locationName":"snapshot", - "queryName":"Snapshot" - } - } - }, - "CreateSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket in which to store the Spot Instance datafeed.

\n

Constraints: Must be a valid bucket associated with your AWS account.

", - "queryName":"Bucket", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

A prefix for the datafeed file names.

", - "queryName":"Prefix", - "locationName":"prefix" - } - } - }, - "CreateSpotDatafeedSubscriptionResult":{ - "type":"structure", - "members":{ - "SpotDatafeedSubscription":{ - "shape":"SpotDatafeedSubscription", - "documentation":"

The Spot Instance datafeed subscription.

", - "queryName":"SpotDatafeedSubscription", - "locationName":"spotDatafeedSubscription" - } - } - }, - "CreateSubnetRequest":{ - "type":"structure", - "required":[ - "VpcId", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range for the subnet, in CIDR notation. For example, 10.0.0.0/24.

", - "queryName":"CidrBlock" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the subnet.

\n\t\t

Default: Amazon EC2 selects one for you (recommended).

", - "queryName":"AvailabilityZone" - } - } - }, - "CreateSubnetResult":{ - "type":"structure", - "members":{ - "Subnet":{ - "shape":"Subnet", - "documentation":"

Information about the subnet.

", - "locationName":"subnet", - "queryName":"Subnet" - } - } - }, - "CreateTagsRequest":{ - "type":"structure", - "required":[ - "Resources", - "Tags" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Resources":{ - "shape":"ResourceIdList", - "documentation":"

The IDs of one or more resources to tag. For example, ami-1a2b3c4d.

", - "locationName":"ResourceId", - "queryName":"ResourceId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

One or more tags. The value parameter is required, but if you don't want the tag to have a value,\n specify the parameter with no value, and we set the value to an empty\n string.

", - "locationName":"Tag", - "queryName":"Tag" - } - } - }, - "CreateVolumePermission":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The specific AWS account ID that is to be added or removed from a volume's list of create\n volume permissions.

", - "locationName":"userId", - "queryName":"UserId" - }, - "Group":{ - "shape":"PermissionGroup", - "documentation":"

The specific group that is to be added or removed from a volume's list of create volume\n permissions.

", - "locationName":"group", - "queryName":"Group" - } - } - }, - "CreateVolumePermissionList":{ - "type":"list", - "member":{ - "shape":"CreateVolumePermission", - "locationName":"item" - }, - "queryFlattened":true - }, - "CreateVolumePermissionModifications":{ - "type":"structure", - "members":{ - "Add":{ - "shape":"CreateVolumePermissionList", - "documentation":"

Adds a specific AWS account ID or group to a volume's list of create volume permissions.

", - "queryName":"Add" - }, - "Remove":{ - "shape":"CreateVolumePermissionList", - "documentation":"

Removes a specific AWS account ID or group from a volume's list of create volume\n permissions.

", - "queryName":"Remove" - } - } - }, - "CreateVolumeRequest":{ - "type":"structure", - "required":["AvailabilityZone"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiBs.

\n

Constraints: If the volume type is io1, the minimum size of the volume is 10\n GiB.

\n

Default: If you're creating the volume from a snapshot and don't specify a volume size, the\n default is the snapshot size.

", - "queryName":"Size" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The snapshot from which to create the volume.

", - "queryName":"SnapshotId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which to create the volume. Use DescribeAvailabilityZones to\n list the Availability Zones that are currently available to you.

", - "queryName":"AvailabilityZone" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. This can be standard for standard EBS volumes or io1\n for Provisioned IOPS volumes.

\n

Default: standard

", - "queryName":"VolumeType" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

The number of I/O operations per second (IOPS) that the volume supports. This parameter is not\n used with standard volumes, but is required when the volume type is io1.

", - "queryName":"Iops" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Specifies whether the volume should be encrypted.

", - "locationName":"encrypted", - "queryName":"Encrypted" - } - } - }, - "CreateVolumeResult":{ - "type":"structure", - "members":{ - "Volume":{ - "shape":"Volume", - "locationName":"volume", - "queryName":"Volume" - } - } - }, - "CreateVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the requester VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - }, - "PeerVpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC with which you are creating the VPC peering connection.

", - "queryName":"PeerVpcId", - "locationName":"peerVpcId" - }, - "PeerOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the peer VPC.

\n

Default: Your AWS account ID

", - "queryName":"PeerOwnerId", - "locationName":"peerOwnerId" - } - } - }, - "CreateVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnection":{ - "shape":"VpcPeeringConnection", - "documentation":"

Information about the VPC peering connection.

", - "queryName":"VpcPeeringConnection", - "locationName":"vpcPeeringConnection" - } - } - }, - "CreateVpcRequest":{ - "type":"structure", - "required":["CidrBlock"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range for the VPC, in CIDR notation. For example, 10.0.0.0/16.

", - "queryName":"CidrBlock" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The supported tenancy options for instances launched into the VPC.\n\t\t\t\tA value of default means that instances can be launched\n\t\t\t\twith any tenancy; a value of dedicated means all instances\n\t\t\t\tlaunched into the VPC are launched as dedicated tenancy instances regardless of the tenancy\n\t\t\t\tassigned to the instance at launch. Dedicated tenancy instances\n\t\t\t\truns on single-tenant hardware.

\n

Default: default

", - "queryName":"InstanceTenancy", - "locationName":"instanceTenancy" - } - } - }, - "CreateVpcResult":{ - "type":"structure", - "members":{ - "Vpc":{ - "shape":"Vpc", - "documentation":"

Information about the VPC.

", - "locationName":"vpc", - "queryName":"Vpc" - } - } - }, - "CreateVpnConnectionRequest":{ - "type":"structure", - "required":[ - "Type", - "CustomerGatewayId", - "VpnGatewayId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Type":{ - "shape":"String", - "documentation":"

The type of VPN connection.

", - "queryName":"Type" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

", - "queryName":"CustomerGatewayId" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "queryName":"VpnGatewayId" - }, - "Options":{ - "shape":"VpnConnectionOptionsSpecification", - "documentation":"

Indicates whether the VPN connection requires static routes. If you\n\t\t\t\tare creating a VPN connection for a device that does not support BGP,\n\t\t\t\tyou must specify true.

\n

Default: false

", - "queryName":"Options", - "locationName":"options" - } - } - }, - "CreateVpnConnectionResult":{ - "type":"structure", - "members":{ - "VpnConnection":{ - "shape":"VpnConnection", - "documentation":"

Information about the VPN connection.

", - "locationName":"vpnConnection", - "queryName":"VpnConnection" - } - } - }, - "CreateVpnConnectionRouteRequest":{ - "type":"structure", - "required":[ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

", - "queryName":"VpnConnectionId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer network.

", - "queryName":"DestinationCidrBlock" - } - } - }, - "CreateVpnGatewayRequest":{ - "type":"structure", - "required":["Type"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection this virtual private gateway supports.

", - "queryName":"Type" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the virtual private gateway.

", - "queryName":"AvailabilityZone" - } - } - }, - "CreateVpnGatewayResult":{ - "type":"structure", - "members":{ - "VpnGateway":{ - "shape":"VpnGateway", - "documentation":"

Information about the virtual private gateway.

", - "locationName":"vpnGateway", - "queryName":"VpnGateway" - } - } - }, - "CurrencyCodeValues":{ - "type":"string", - "enum":["USD"] - }, - "CustomerGateway":{ - "type":"structure", - "members":{ - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

", - "locationName":"customerGatewayId", - "queryName":"CustomerGatewayId" - }, - "State":{ - "shape":"String", - "documentation":"

The current state of the customer gateway.

", - "locationName":"state", - "queryName":"State" - }, - "Type":{ - "shape":"String", - "documentation":"

The type of VPN connection the customer gateway supports.

", - "locationName":"type", - "queryName":"Type" - }, - "IpAddress":{ - "shape":"String", - "documentation":"

The Internet-routable IP address of the customer gateway's outside interface.

", - "locationName":"ipAddress", - "queryName":"IpAddress" - }, - "BgpAsn":{ - "shape":"String", - "documentation":"

The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

", - "locationName":"bgpAsn", - "queryName":"BgpAsn" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the customer gateway.

", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes a customer gateway.

" - }, - "CustomerGatewayIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"CustomerGatewayId" - }, - "queryFlattened":true - }, - "CustomerGatewayList":{ - "type":"list", - "member":{ - "shape":"CustomerGateway", - "locationName":"item" - }, - "queryFlattened":true - }, - "DatafeedSubscriptionState":{ - "type":"string", - "enum":[ - "Active", - "Inactive" - ] - }, - "DateTime":{"type":"timestamp"}, - "DeleteCustomerGatewayRequest":{ - "type":"structure", - "required":["CustomerGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

", - "queryName":"CustomerGatewayId" - } - } - }, - "DeleteDhcpOptionsRequest":{ - "type":"structure", - "required":["DhcpOptionsId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the DHCP options set.

", - "queryName":"DhcpOptionsId" - } - } - }, - "DeleteInternetGatewayRequest":{ - "type":"structure", - "required":["InternetGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "queryName":"InternetGatewayId", - "locationName":"internetGatewayId" - } - } - }, - "DeleteKeyPairRequest":{ - "type":"structure", - "required":["KeyName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "queryName":"KeyName" - } - } - }, - "DeleteNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Egress" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "queryName":"NetworkAclId", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number of the entry to delete.

", - "queryName":"RuleNumber", - "locationName":"ruleNumber" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether the rule is an egress rule.

", - "queryName":"Egress", - "locationName":"egress" - } - } - }, - "DeleteNetworkAclRequest":{ - "type":"structure", - "required":["NetworkAclId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "queryName":"NetworkAclId", - "locationName":"networkAclId" - } - } - }, - "DeleteNetworkInterfaceRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - } - } - }, - "DeletePlacementGroupRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group.

", - "queryName":"GroupName", - "locationName":"groupName" - } - } - }, - "DeleteRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR range for the route. The value you specify must\n\t\t\t\tmatch the CIDR for the route exactly.

", - "queryName":"DestinationCidrBlock", - "locationName":"destinationCidrBlock" - } - } - }, - "DeleteRouteTableRequest":{ - "type":"structure", - "required":["RouteTableId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - } - } - }, - "DeleteSecurityGroupRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group.

", - "queryName":"GroupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId" - } - } - }, - "DeleteSnapshotRequest":{ - "type":"structure", - "required":["SnapshotId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

", - "queryName":"SnapshotId" - } - } - }, - "DeleteSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - } - } - }, - "DeleteSubnetRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "queryName":"SubnetId" - } - } - }, - "DeleteTagsRequest":{ - "type":"structure", - "required":["Resources"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Resources":{ - "shape":"ResourceIdList", - "documentation":"

The ID of the resource. For example, ami-1a2b3c4d. You can specify more than one resource ID.

", - "locationName":"resourceId", - "queryName":"ResourceId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

One or more tags to delete. If you omit the value parameter, we delete the tag regardless\n of its value. If you specify this parameter with an empty string as the\n value, we delete the key only if its value is an empty string.

", - "locationName":"tag", - "queryName":"Tag" - } - } - }, - "DeleteVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "queryName":"VolumeId" - } - } - }, - "DeleteVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "queryName":"VpcPeeringConnectionId", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "DeleteVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "queryName":"Return", - "locationName":"return" - } - } - }, - "DeleteVpcRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId" - } - } - }, - "DeleteVpnConnectionRequest":{ - "type":"structure", - "required":["VpnConnectionId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

", - "queryName":"VpnConnectionId" - } - } - }, - "DeleteVpnConnectionRouteRequest":{ - "type":"structure", - "required":[ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

", - "queryName":"VpnConnectionId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer network.

", - "queryName":"DestinationCidrBlock" - } - } - }, - "DeleteVpnGatewayRequest":{ - "type":"structure", - "required":["VpnGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "queryName":"VpnGatewayId" - } - } - }, - "DeregisterImageRequest":{ - "type":"structure", - "required":["ImageId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "queryName":"ImageId" - } - } - }, - "DescribeAccountAttributesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "AttributeNames":{ - "shape":"AccountAttributeNameStringList", - "documentation":"

One or more account attribute names.

", - "locationName":"attributeName", - "queryName":"AttributeName" - } - } - }, - "DescribeAccountAttributesResult":{ - "type":"structure", - "members":{ - "AccountAttributes":{ - "shape":"AccountAttributeList", - "documentation":"

Information about one or more account attributes.

", - "locationName":"accountAttributeSet", - "queryName":"AccountAttributeSet" - } - } - }, - "DescribeAddressesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "PublicIps":{ - "shape":"PublicIpStringList", - "documentation":"

[EC2-Classic] One or more Elastic IP addresses.

\n

Default: Describes all your Elastic IP addresses.

", - "locationName":"PublicIp", - "queryName":"PublicIp" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    allocation-id - [EC2-VPC] The allocation ID for the address.

    \n
  • \n
  • \n

    association-id - [EC2-VPC] The association ID for the address.

    \n
  • \n
  • \n

    domain - Indicates whether the address is for use in EC2-Classic (standard) \n or in a VPC (vpc).

    \n
  • \n
  • \n

    instance-id - The ID of the instance the address is associated with, if any.

    \n
  • \n
  • \n

    network-interface-id - [EC2-VPC] The ID of the network interface that the address is associated with, if any.

    \n
  • \n
  • \n

    network-interface-owner-id - The AWS account ID of the owner.

    \n
  • \n
  • \n

    private-ip-address - [EC2-VPC] The private IP address associated with the Elastic IP address.

    \n
  • \n
  • \n

    public-ip - The Elastic IP address.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "AllocationIds":{ - "shape":"AllocationIdList", - "documentation":"

[EC2-VPC] One or more allocation IDs.

\n

Default: Describes all your Elastic IP addresses.

", - "locationName":"AllocationId", - "queryName":"AllocationId" - } - } - }, - "DescribeAddressesResult":{ - "type":"structure", - "members":{ - "Addresses":{ - "shape":"AddressList", - "documentation":"

Information about one or more Elastic IP addresses.

", - "locationName":"addressesSet", - "queryName":"AddressesSet" - } - } - }, - "DescribeAvailabilityZonesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ZoneNames":{ - "shape":"ZoneNameStringList", - "documentation":"

The names of one or more Availability Zones.

", - "locationName":"ZoneName", - "queryName":"ZoneName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    message - Information about the Availability Zone.

    \n
  • \n
  • \n

    region-name - The name of the region for the Availability Zone (for example, us-east-1).

    \n
  • \n
  • \n

    state - The state of the Availability Zone\n (available | impaired | unavailable).

    \n
  • \n
  • \n

    zone-name - The name of the Availability Zone (for example, us-east-1a).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeAvailabilityZonesResult":{ - "type":"structure", - "members":{ - "AvailabilityZones":{ - "shape":"AvailabilityZoneList", - "documentation":"

Information about one or more Availability Zones.

", - "locationName":"availabilityZoneInfo", - "queryName":"AvailabilityZoneInfo" - } - } - }, - "DescribeBundleTasksRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "BundleIds":{ - "shape":"BundleIdStringList", - "documentation":"

One or more bundle task IDs.

\n

Default: Describes all your bundle tasks.

", - "locationName":"BundleId", - "queryName":"BundleId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    bundle-id - The ID of the bundle task.

    \n
  • \n
  • \n

    error-code - If the task failed, the error code returned.

    \n
  • \n
  • \n

    error-message - If the task failed, the error message returned.

    \n
  • \n
  • \n

    instance-id - The ID of the instance.

    \n
  • \n
  • \n

    progress - The level of task completion, as a percentage (for example, 20%).

    \n
  • \n
  • \n

    s3-bucket - The Amazon S3 bucket to store the AMI.

    \n
  • \n
  • \n

    s3-prefix - The beginning of the AMI name.

    \n
  • \n
  • \n

    start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z).

    \n
  • \n
  • \n

    state - The state of the task (pending | waiting-for-shutdown | bundling |\n storing | cancelling | complete | failed).

    \n
  • \n
  • \n

    update-time - The time of the most recent update for the task.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeBundleTasksResult":{ - "type":"structure", - "members":{ - "BundleTasks":{ - "shape":"BundleTaskList", - "documentation":"

Information about one or more bundle tasks.

", - "locationName":"bundleInstanceTasksSet", - "queryName":"BundleInstanceTasksSet" - } - } - }, - "DescribeConversionTaskList":{ - "type":"list", - "member":{ - "shape":"ConversionTask", - "locationName":"item" - }, - "queryFlattened":true - }, - "DescribeConversionTasksRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Filters":{ - "shape":"FilterList", - "locationName":"filter", - "queryName":"Filter" - }, - "ConversionTaskIds":{ - "shape":"ConversionIdStringList", - "documentation":"

One or more conversion task IDs.

", - "locationName":"conversionTaskId", - "queryName":"ConversionTaskId" - } - } - }, - "DescribeConversionTasksResult":{ - "type":"structure", - "members":{ - "ConversionTasks":{ - "shape":"DescribeConversionTaskList", - "queryName":"ConversionTasks", - "locationName":"conversionTasks" - } - } - }, - "DescribeCustomerGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "CustomerGatewayIds":{ - "shape":"CustomerGatewayIdStringList", - "documentation":"

One or more customer gateway IDs.

\n\t\t

Default: Describes all your customer gateways.

", - "locationName":"CustomerGatewayId", - "queryName":"CustomerGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

    \n\t\t
  • \n\t\t
  • \n\t\t

    customer-gateway-id - The ID of the customer gateway.

    \n\t\t
  • \n\t\t
  • \n\t\t

    ip-address - The IP address of the customer gateway's Internet-routable external interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    state - The state of the customer gateway (pending | available | deleting | deleted).

    \n\t\t
  • \n\t\t
  • \n\t\t

    type - The type of customer gateway. Currently, the only supported type is ipsec.1.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeCustomerGatewaysResult":{ - "type":"structure", - "members":{ - "CustomerGateways":{ - "shape":"CustomerGatewayList", - "documentation":"

Information about one or more customer gateways.

", - "locationName":"customerGatewaySet", - "queryName":"CustomerGatewaySet" - } - } - }, - "DescribeDhcpOptionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "DhcpOptionsIds":{ - "shape":"DhcpOptionsIdStringList", - "documentation":"

The IDs of one or more DHCP options sets.

\n\t\t

Default: Describes all your DHCP options sets.

", - "locationName":"DhcpOptionsId", - "queryName":"DhcpOptionsId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    dhcp-options-id - The ID of a set of DHCP options.

    \n\t\t
  • \n\t\t
  • \n\t\t

    key - The key for one of the options (for example, domain-name).

    \n\t\t
  • \n\t\t
  • \n\t\t

    value - The value for one of the options.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeDhcpOptionsResult":{ - "type":"structure", - "members":{ - "DhcpOptions":{ - "shape":"DhcpOptionsList", - "documentation":"

Information about one or more DHCP options sets.

", - "locationName":"dhcpOptionsSet", - "queryName":"DhcpOptionsSet" - } - } - }, - "DescribeExportTasksRequest":{ - "type":"structure", - "members":{ - "ExportTaskIds":{ - "shape":"ExportTaskIdStringList", - "documentation":"

One or more export task IDs.

", - "locationName":"exportTaskId", - "queryName":"ExportTaskId" - } - } - }, - "DescribeExportTasksResult":{ - "type":"structure", - "members":{ - "ExportTasks":{ - "shape":"ExportTaskList", - "locationName":"exportTaskSet", - "queryName":"ExportTaskSet" - } - } - }, - "DescribeImageAttributeRequest":{ - "type":"structure", - "required":[ - "ImageId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "queryName":"ImageId" - }, - "Attribute":{ - "shape":"ImageAttributeName", - "documentation":"

The AMI attribute.

", - "queryName":"Attribute" - } - } - }, - "DescribeImageAttributeResult":{ - "type":"structure", - "members":{ - "ImageAttribute":{ - "shape":"ImageAttribute", - "documentation":"

Information about the image attribute.

", - "locationName":"imageAttribute", - "queryName":"ImageAttribute" - } - } - }, - "DescribeImagesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ImageIds":{ - "shape":"ImageIdStringList", - "documentation":"

One or more image IDs.

\n

Default: Describes all images available to you.

", - "locationName":"ImageId", - "queryName":"ImageId" - }, - "Owners":{ - "shape":"OwnerStringList", - "documentation":"

Filters the images by the owner. \n\t\t\t\tSpecify an AWS account ID, amazon (owner is Amazon), \n\t\t\t\taws-marketplace (owner is AWS Marketplace), \n\t\t\t\tself (owner is the sender of the request), or\n\t\t\t\tall (all owners).

", - "locationName":"Owner", - "queryName":"Owner" - }, - "ExecutableUsers":{ - "shape":"ExecutableByStringList", - "documentation":"

Scopes the images by users with explicit launch permissions. \n\t\t\t\tSpecify an AWS account ID, self (the sender of the request),\n\t\t\t\tor all (public AMIs).

", - "locationName":"ExecutableBy", - "queryName":"ExecutableBy" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    architecture - The image architecture (i386 | x86_64).

    \n
  • \n
  • \n

    block-device-mapping.delete-on-termination - A Boolean value that indicates \n whether the Amazon EBS volume is deleted on instance termination.

    \n
  • \n
  • \n

    block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

    \n
  • \n
  • \n

    block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

    \n
  • \n
  • \n

    block-device-mapping.volume-size - The volume size of the Amazon EBS volume, in GiB.

    \n
  • \n
  • \n

    block-device-mapping.volume-type - The volume type of the Amazon EBS volume (standard | io1).

    \n
  • \n
  • \n

    description - The description of the image (provided during image creation).

    \n
  • \n
  • \n

    hypervisor - The hypervisor type (ovm | xen).

    \n
  • \n
  • \n

    image-id - The ID of the image.

    \n
  • \n
  • \n

    image-type - The image type (machine | kernel | ramdisk).

    \n
  • \n
  • \n

    is-public - A Boolean that indicates whether the image is public.

    \n
  • \n
  • \n

    kernel-id - The kernel ID.

    \n
  • \n
  • \n

    manifest-location - The location of the image manifest.

    \n
  • \n
  • \n

    name - The name of the AMI (provided during image creation).

    \n
  • \n
  • \n

    owner-alias - The AWS account alias (for example, amazon).

    \n
  • \n
  • \n

    owner-id - The AWS account ID of the image owner.

    \n
  • \n
  • \n

    platform - The platform. To only list Windows-based AMIs, use windows.

    \n
  • \n
  • \n

    product-code - The product code.

    \n
  • \n
  • \n

    product-code.type - The type of the product code (devpay | marketplace).

    \n
  • \n
  • \n

    ramdisk-id - The RAM disk ID.

    \n
  • \n
  • \n

    root-device-name - The name of the root device volume (for example, /dev/sda1).

    \n
  • \n
  • \n

    root-device-type - The type of the root device volume (ebs | instance-store).

    \n
  • \n
  • \n

    state - The state of the image (available | pending | failed).

    \n
  • \n
  • \n

    state-reason-code - The reason code for the state change.

    \n
  • \n
  • \n

    state-reason-message - The message for the state change.

    \n
  • \n
  • \n

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned \n both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n
  • \n
  • \n

    virtualization-type - The virtualization type (paravirtual | hvm).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeImagesResult":{ - "type":"structure", - "members":{ - "Images":{ - "shape":"ImageList", - "documentation":"

Information about one or more images.

", - "locationName":"imagesSet", - "queryName":"ImagesSet" - } - } - }, - "DescribeInstanceAttributeRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The instance attribute.

", - "queryName":"Attribute", - "locationName":"attribute" - } - } - }, - "DescribeInstanceAttributeResult":{ - "type":"structure", - "members":{ - "InstanceAttribute":{ - "shape":"InstanceAttribute", - "queryName":"InstanceAttribute" - } - } - }, - "DescribeInstanceStatusRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

\n

Default: Describes all your instances.

\n

Constraints: Maximum 100 explicitly specified instance IDs.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    availability-zone - The Availability Zone of the instance.

    \n
  • \n
  • \n

    event.code - The code identifying the type of event (instance-reboot | system-reboot |\n system-maintenance | instance-retirement | instance-stop).

    \n
  • \n
  • \n

    event.description - A description of the event.

    \n
  • \n
  • \n

    event.not-after - The latest end time for the scheduled event.

    \n
  • \n
  • \n

    event.not-before - The earliest start time for the scheduled event.

    \n
  • \n
  • \n

    instance-state-code - A code representing the state of the instance, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented.\n The valid values are 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped).

    \n
  • \n
  • \n

    instance-state-name - The state of the instance (pending | running | shutting-down |\n terminated | stopping | stopped).

    \n
  • \n
  • \n

    instance-status.reachability - Filters on instance status where the name is reachability (passed |\n failed | initializing | insufficient-data).

    \n
  • \n
  • \n

    instance-status.status - The status of the instance (ok | impaired | initializing |\n insufficient-data | not-applicable).

    \n
  • \n
  • \n

    system-status.reachability - Filters on system status where the name is reachability (passed |\n failed | initializing | insufficient-data).

    \n
  • \n
  • \n

    system-status.status - The system status of the instance (ok | impaired | initializing |\n insufficient-data | not-applicable).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "queryName":"NextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of paginated instance items per response.

\n

Default: 1000

", - "queryName":"MaxResults" - }, - "IncludeAllInstances":{ - "shape":"Boolean", - "documentation":"

When true, includes the health status for all instances.\n\t\t\t\tWhen false, includes the health status for running instances only.

\n\t\t

Default: false

", - "queryName":"IncludeAllInstances", - "locationName":"includeAllInstances" - } - } - }, - "DescribeInstanceStatusResult":{ - "type":"structure", - "members":{ - "InstanceStatuses":{ - "shape":"InstanceStatusList", - "documentation":"

One or more instance status descriptions.

", - "locationName":"instanceStatusSet", - "queryName":"InstanceStatusSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeInstancesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

\n

Default: Describes all your instances.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    architecture - The instance architecture (i386 | x86_64).

    \n
  • \n
  • \n

    availability-zone - The Availability Zone of the instance.

    \n
  • \n
  • \n

    block-device-mapping.attach-time - The attach time for an Amazon EBS volume mapped to the instance.

    \n
  • \n
  • \n

    block-device-mapping.delete-on-termination - A Boolean that indicates whether the Amazon EBS volume is deleted on instance termination.

    \n
  • \n
  • \n

    block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

    \n
  • \n
  • \n

    block-device-mapping.status - The status for the Amazon EBS volume (attaching | attached |\n detaching | detached).

    \n
  • \n
  • \n

    block-device-mapping.volume-id - The volume ID of the Amazon EBS volume.

    \n
  • \n
  • \n

    client-token - The idempotency token you provided when you launched the instance.

    \n
  • \n
  • \n

    dns-name - The public DNS name of the instance.

    \n
  • \n
  • \n

    group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use group-name instead.

    \n
  • \n
  • \n

    group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use group-id instead.

    \n
  • \n
  • \n

    hypervisor - The hypervisor type of the instance (ovm | xen).

    \n
  • \n
  • \n

    image-id - The ID of the image used to launch the instance.

    \n
  • \n
  • \n

    instance-id - The ID of the instance.

    \n
  • \n
  • \n

    instance-lifecycle - Indicates whether this is a Spot Instance (spot).

    \n
  • \n
  • \n

    instance-state-code - The state of the instance, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented. The valid values are: 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped).

    \n
  • \n
  • \n

    instance-state-name - The state of the instance (pending | running | shutting-down | terminated | stopping | stopped).

    \n
  • \n
  • \n

    instance-type - The type of instance (for example, m1.small).

    \n
  • \n
  • \n

    instance.group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use instance.group-name instead.

    \n
  • \n
  • \n

    instance.group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use instance.group-id instead.

    \n
  • \n
  • \n

    ip-address - The public IP address of the instance.

    \n
  • \n
  • \n

    kernel-id - The kernel ID.

    \n
  • \n
  • \n

    key-name - The name of the key pair used when the instance was launched.

    \n
  • \n
  • \n

    launch-index - When launching multiple instances, this is the index for the instance in the launch group (for example, 0, 1, 2, and so on).

    \n
  • \n
  • \n

    launch-time - The time when the instance was launched.

    \n
  • \n
  • \n

    monitoring-state - Indicates whether monitoring is enabled for the instance (disabled | enabled).

    \n
  • \n
  • \n

    owner-id - The AWS account ID of the instance owner.

    \n
  • \n
  • \n

    placement-group-name - The name of the placement group for the instance.

    \n
  • \n
  • \n

    platform - The platform. Use windows if you have Windows instances; otherwise, leave blank.

    \n
  • \n
  • \n

    private-dns-name - The private DNS name of the instance.

    \n
  • \n
  • \n

    private-ip-address - The private IP address of the instance.

    \n
  • \n
  • \n

    product-code - The product code associated with the AMI used to launch the instance.

    \n
  • \n
  • \n

    product-code.type - The type of product code (devpay | marketplace).

    \n
  • \n
  • \n

    ramdisk-id - The RAM disk ID.

    \n
  • \n
  • \n

    reason - The reason for the current state of the instance (for example, shows \"User Initiated [date]\" when you stop or terminate the instance). Similar to the state-reason-code filter.

    \n
  • \n
  • \n

    requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

    \n
  • \n
  • \n

    reservation-id - The ID of the instance's reservation. A reservation ID is created any time you launch an instance. A reservation ID has a one-to-one relationship with an instance launch request, but can be associated with more than one instance if you launch multiple instances using the same launch request. For example, if you launch one instance, you'll get one reservation ID. If you launch ten instances using the same launch request, you'll also get one reservation ID.

    \n
  • \n
  • \n

    root-device-name - The name of the root device for the instance (for example, /dev/sda1).

    \n
  • \n
  • \n

    root-device-type - The type of root device that the instance uses (ebs | instance-store).

    \n
  • \n
  • \n

    source-dest-check - Indicates whether the instance performs source/destination checking. A value of true means that checking is enabled, and false means checking is disabled. The value must be false for the instance to perform network address translation (NAT) in your VPC.

    \n
  • \n
  • \n

    spot-instance-request-id - The ID of the Spot Instance request.

    \n
  • \n
  • \n

    state-reason-code - The reason code for the state change.

    \n
  • \n
  • \n

    state-reason-message - A message that describes the state change.

    \n
  • \n
  • \n

    subnet-id - The ID of the subnet for the instance.

    \n
  • \n
  • \n

    tag:key=value - The key/value combination of a tag assigned to\n the resource, where tag:key is the tag's key.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter.\n For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both\n the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is).\n If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n
  • \n
  • \n

    virtualization-type - The virtualization type of the instance (paravirtual | hvm).

    \n
  • \n
  • \n

    vpc-id - The ID of the VPC that the instance is running in.

    \n
  • \n
  • \n

    network-interface.description - The description of the network interface.

    \n
  • \n
  • \n

    network-interface.subnet-id - The ID of the subnet for the network interface.

    \n
  • \n
  • \n

    network-interface.vpc-id - The ID of the VPC for the network interface.

    \n
  • \n
  • \n

    network-interface.network-interface.id - The ID of the network interface.

    \n
  • \n
  • \n

    network-interface.owner-id - The ID of the owner of the network interface.

    \n
  • \n
  • \n

    network-interface.availability-zone - The Availability Zone for the network interface.

    \n
  • \n
  • \n

    network-interface.requester-id - The requester ID for the network interface.

    \n
  • \n
  • \n

    network-interface.requester-managed - Indicates whether the network interface is being managed by AWS.

    \n
  • \n
  • \n

    network-interface.status - The status of the network interface (available) | in-use).

    \n
  • \n
  • \n

    network-interface.mac-address - The MAC address of the network interface.

    \n
  • \n
  • \n

    network-interface-private-dns-name - The private DNS name of the network interface.

    \n
  • \n
  • \n

    network-interface.source-destination-check - Whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform network address translation (NAT) in your VPC.

    \n
  • \n
  • \n

    network-interface.group-id - The ID of a security group associated with the network interface.

    \n
  • \n
  • \n

    network-interface.group-name - The name of a security group associated with the network interface.

    \n
  • \n
  • \n

    network-interface.attachment.attachment-id - The ID of the interface attachment.

    \n
  • \n
  • \n

    network-interface.attachment.instance-id - The ID of the instance to which the network interface is attached.

    \n
  • \n
  • \n

    network-interface.attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

    \n
  • \n
  • \n

    network-interface.addresses.private-ip-address - The private IP address associated with the network interface.

    \n
  • \n
  • \n

    network-interface.attachment.device-index - The device index to which the network interface is attached.

    \n
  • \n
  • \n

    network-interface.attachment.status - The status of the attachment (attaching | attached | detaching | detached).

    \n
  • \n
  • \n

    network-interface.attachment.attach-time - The time that the network interface was attached to an instance.

    \n
  • \n
  • \n

    network-interface.attachment.delete-on-termination - Specifies whether the attachment is deleted when an instance is terminated.

    \n
  • \n
  • \n

    network-interface.addresses.primary - Specifies whether the IP address of the network interface is the primary private IP address.

    \n
  • \n
  • \n

    network-interface.addresses.association.public-ip - The ID of the association of an Elastic IP address with a network interface.

    \n
  • \n
  • \n

    network-interface.addresses.association.ip-owner-id - The owner ID of the private IP address associated with the network interface.

    \n
  • \n
  • \n

    association.public-ip - The address of the Elastic IP address bound to the network interface.

    \n
  • \n
  • \n

    association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

    \n
  • \n
  • \n

    association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

    \n
  • \n
  • \n

    association.association-id - The association ID returned when the network interface was associated with an IP address.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", - "queryName":"NextToken", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", - "queryName":"MaxResults", - "locationName":"maxResults" - } - } - }, - "DescribeInstancesResult":{ - "type":"structure", - "members":{ - "Reservations":{ - "shape":"ReservationList", - "documentation":"

One or more reservations.

", - "locationName":"reservationSet", - "queryName":"ReservationSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeInternetGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InternetGatewayIds":{ - "shape":"ValueStringList", - "documentation":"

One or more Internet gateway IDs.

\n\t\t

Default: Describes all your Internet gateways.

", - "locationName":"internetGatewayId", - "queryName":"InternetGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    attachment.state - The current state of the attachment between the gateway and the VPC. Present only if a VPC is attached.

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.vpc-id - The ID of an attached VPC.

    \n\t\t
  • \n\t\t
  • \n\t\t

    internet-gateway-id - The ID of the Internet gateway.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeInternetGatewaysResult":{ - "type":"structure", - "members":{ - "InternetGateways":{ - "shape":"InternetGatewayList", - "documentation":"

Information about one or more Internet gateways.

", - "locationName":"internetGatewaySet", - "queryName":"InternetGatewaySet" - } - } - }, - "DescribeKeyPairsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "KeyNames":{ - "shape":"KeyNameStringList", - "documentation":"

One or more key pair names.

\n

Default: Describes all your key pairs.

", - "locationName":"KeyName", - "queryName":"KeyName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    fingerprint - The fingerprint of the key pair.

    \n
  • \n
  • \n

    key-name - The name of the key pair.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeKeyPairsResult":{ - "type":"structure", - "members":{ - "KeyPairs":{ - "shape":"KeyPairList", - "documentation":"

Information about one or more key pairs.

", - "locationName":"keySet", - "queryName":"KeySet" - } - } - }, - "DescribeNetworkAclsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkAclIds":{ - "shape":"ValueStringList", - "documentation":"

One or more network ACL IDs.

\n\t\t

Default: Describes all your network ACLs.

", - "locationName":"NetworkAclId", - "queryName":"NetworkAclId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    association.association-id - The ID of an association ID for the ACL.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.network-acl-id - The ID of the network ACL involved in the association.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.subnet-id - The ID of the subnet involved in the association.

    \n\t\t
  • \n\t\t
  • \n\t\t

    default - Indicates whether the ACL is the default network ACL for the VPC.

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.cidr - The CIDR range specified in the entry.

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.egress - Indicates whether the entry applies to egress traffic.

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.icmp.code - The ICMP code specified in the entry, if any.

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.icmp.type - The ICMP type specified in the entry, if any.

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.port-range.from - The start of the port range specified in the entry.

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.port-range.to - The end of the port range specified in the entry.

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.protocol - The protocol specified in the entry (tcp | udp | icmp or a protocol number).

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.rule-action - Allows or denies the matching traffic (allow | deny).

    \n\t\t
  • \n\t\t
  • \n\t\t

    entry.rule-number - The number of an entry (in other words, rule) in the ACL's set of entries.

    \n\t\t
  • \n\t\t
  • \n\t\t

    network-acl-id - The ID of the network ACL.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpc-id - The ID of the VPC for the network ACL.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeNetworkAclsResult":{ - "type":"structure", - "members":{ - "NetworkAcls":{ - "shape":"NetworkAclList", - "documentation":"

Information about one or more network ACLs.

", - "locationName":"networkAclSet", - "queryName":"NetworkAclSet" - } - } - }, - "DescribeNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description attribute.

", - "queryName":"Description", - "locationName":"description" - }, - "SourceDestCheck":{ - "shape":"String", - "documentation":"

The sourceDestCheck attribute.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"String", - "documentation":"

The groupSet attribute.

", - "locationName":"groupSet", - "queryName":"GroupSet" - }, - "Attachment":{ - "shape":"String", - "documentation":"

The attachment attribute.

", - "queryName":"Attachment", - "locationName":"attachment" - } - } - }, - "DescribeNetworkInterfaceAttributeResult":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

The description of the network interface.

", - "queryName":"Description", - "locationName":"description" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

The security groups associated with the network interface.

", - "locationName":"groupSet", - "queryName":"GroupSet" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachment", - "documentation":"

The attachment (if any) of the network interface.

", - "queryName":"Attachment", - "locationName":"attachment" - } - } - }, - "DescribeNetworkInterfacesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkInterfaceIds":{ - "shape":"NetworkInterfaceIdList", - "documentation":"

One or more network interface IDs.

\n\t\t

Default: Describes all your network interfaces.

", - "locationName":"NetworkInterfaceId", - "queryName":"NetworkInterfaceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    addresses.private-ip-address - The private IP addresses associated with the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    addresses.primary - Whether the private IP address is the primary IP address associated with the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    addresses.association.public-ip - The association ID returned when the network interface was associated with the Elastic IP address.

    \n\t\t
  • \n\t\t
  • \n\t\t

    addresses.association.owner-id - The owner ID of the addresses associated with the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.association-id - The association ID returned when the network interface was associated with an IP address.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.public-ip - The address of the Elastic IP address bound to the network interface.

    \n\t\t
  • \n\t\t \t
  • \n\t\t \t\t

    association.public-dns-name - The public DNS name for the network interface.

    \n\t\t \t
  • \n\t\t
  • \n\t\t

    attachment.attachment-id - The ID of the interface attachment.

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.instance-id - The ID of the instance to which the network interface is attached.

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.device-index - The device index to which the network interface is attached.

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.status - The status of the attachment (attaching | attached | detaching | detached).

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.attach.time - The time that the network interface was attached to an instance.

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.delete-on-termination - Indicates whether the attachment is deleted when an instance is terminated.

    \n\t\t
  • \n\t\t
  • \n\t\t

    availability-zone - The Availability Zone of the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    description - The description of the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    group-id - The ID of a security group associated with the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    group-name - The name of a security group associated with the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    mac-address - The MAC address of the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    network-interface-id - The ID of the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    owner-id - The AWS account ID of the network interface owner.

    \n\t\t
  • \n\t\t
  • \n\t\t

    private-ip-address - The private IP address or addresses of the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    private-dns-name - The private DNS name of the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

    \n\t\t
  • \n\t\t
  • \n\t\t

    requester-managed - Indicates whether the network interface is being managed by an AWS service (for example, AWS Management Console, Auto Scaling, and so on).

    \n\t\t
  • \n\t\t
  • \n\t\t

    source-desk-check - Indicates whether the network interface performs source/destination checking. \n\t\t A value of true means checking is enabled, and false means checking is disabled. \n\t\t The value must be false for the network interface to perform Network Address Translation (NAT) in your VPC.

    \n\t\t
  • \n\t\t
  • \n\t\t

    status - The status of the network interface. If the network interface is not attached to an instance, the status is available; \n\t\t if a network interface is attached to an instance the status is in-use.

    \n\t\t
  • \n\t\t
  • \n\t\t

    subnet-id - The ID of the subnet for the network interface.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpc-id - The ID of the VPC for the network interface.

    \n\t\t
  • \n\t\t
", - "locationName":"filter", - "queryName":"Filter" - } - } - }, - "DescribeNetworkInterfacesResult":{ - "type":"structure", - "members":{ - "NetworkInterfaces":{ - "shape":"NetworkInterfaceList", - "documentation":"

Information about one or more network interfaces.

", - "locationName":"networkInterfaceSet", - "queryName":"NetworkInterfaceSet" - } - } - }, - "DescribePlacementGroupsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupNames":{ - "shape":"PlacementGroupStringList", - "documentation":"

One or more placement group names.

\n

Default: Describes all your placement groups, or only those otherwise specified.

", - "locationName":"groupName", - "queryName":"GroupName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    group-name - The name of the placement group.

    \n
  • \n
  • \n

    state - The state of the placement group (pending | available |\n deleting | deleted).

    \n
  • \n
  • \n

    strategy - The strategy of the placement group (cluster).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribePlacementGroupsResult":{ - "type":"structure", - "members":{ - "PlacementGroups":{ - "shape":"PlacementGroupList", - "documentation":"

One or more placement groups.

", - "locationName":"placementGroupSet", - "queryName":"PlacementGroupSet" - } - } - }, - "DescribeRegionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "RegionNames":{ - "shape":"RegionNameStringList", - "documentation":"

The names of one or more regions.

", - "locationName":"RegionName", - "queryName":"RegionName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    endpoint - The endpoint of the region (for example, ec2.us-east-1.amazonaws.com).

    \n
  • \n
  • \n

    region-name - The name of the region (for example, us-east-1).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeRegionsResult":{ - "type":"structure", - "members":{ - "Regions":{ - "shape":"RegionList", - "documentation":"

Information about one or more regions.

", - "locationName":"regionInfo", - "queryName":"RegionInfo" - } - } - }, - "DescribeReservedInstancesListingsRequest":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

One or more Reserved Instance IDs.

", - "queryName":"ReservedInstancesId", - "locationName":"reservedInstancesId" - }, - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

One or more Reserved Instance Listing IDs.

", - "queryName":"ReservedInstancesListingId", - "locationName":"reservedInstancesListingId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    reserved-instances-id - The ID of the Reserved Instances.

    \n
  • \n
  • \n

    reserved-instances-listing-id - The ID of the Reserved Instances listing.

    \n
  • \n
  • \n

    status - The status of the Reserved Instance listing (pending | active |\n cancelled | closed).

    \n
  • \n
  • \n

    status-message - The reason for the status.

    \n
  • \n
", - "queryName":"Filters", - "locationName":"filters" - } - } - }, - "DescribeReservedInstancesListingsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

Information about the Reserved Instance listing.

", - "locationName":"reservedInstancesListingsSet", - "queryName":"ReservedInstancesListingsSet" - } - } - }, - "DescribeReservedInstancesModificationsRequest":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationIds":{ - "shape":"ReservedInstancesModificationIdStringList", - "documentation":"

IDs for the submitted modification request.

", - "locationName":"ReservedInstancesModificationId", - "queryName":"ReservedInstancesModificationId" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next page of data.

", - "queryName":"NextToken", - "locationName":"nextToken" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    client-token - The idempotency token for the modification request.

    \n
  • \n
  • \n

    create-date - The time when the modification request was created.

    \n
  • \n
  • \n

    effective-date - The time when the modification becomes effective.

    \n
  • \n
  • \n

    modification-result.reserved-instances-id - The ID for the Reserved Instances created as part of the modification request. This ID is only available when the status of the modification is fulfilled.

    \n
  • \n
  • \n

    modification-result.target-configuration.availability-zone - The Availability Zone for the new Reserved Instances.

    \n
  • \n
  • \n

    modification-result.target-configuration.instance-count - The number of new Reserved Instances.

    \n
  • \n
  • \n

    modification-result.target-configuration.instance-type - The instance type of the new Reserved Instances.

    \n
  • \n
  • \n

    modification-result.target-configuration.platform - The network platform of the new Reserved Instances (EC2-Classic | EC2-VPC).

    \n
  • \n
  • \n

    reserved-instances-id - The ID of the Reserved Instances modified.

    \n
  • \n
  • \n

    reserved-instances-modification-id - The ID of the modification request.

    \n
  • \n
  • \n

    status - The status of the Reserved Instances modification request\n (processing | fulfilled | failed).

    \n
  • \n
  • \n

    status-message - The reason for the status.

    \n
  • \n
  • \n

    update-date - The time when the modification request was last updated.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeReservedInstancesModificationsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesModifications":{ - "shape":"ReservedInstancesModificationList", - "documentation":"

The Reserved Instance modification information.

", - "locationName":"reservedInstancesModificationsSet", - "queryName":"ReservedInstancesModificationsSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next page of data.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeReservedInstancesOfferingsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ReservedInstancesOfferingIds":{ - "shape":"ReservedInstancesOfferingIdStringList", - "documentation":"

One or more Reserved Instances offering IDs.

", - "locationName":"ReservedInstancesOfferingId", - "queryName":"ReservedInstancesOfferingId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used.\n\t\t\t\tFor more information, see Instance Types \n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

", - "queryName":"InstanceType" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", - "queryName":"AvailabilityZone" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description. Instances that include (Amazon VPC) \n in the description are for use with Amazon VPC.

", - "queryName":"ProductDescription" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    availability-zone - The Availability Zone where the Reserved Instance can be used.

    \n
  • \n
  • \n

    duration - The duration of the Reserved Instance (for example, one year or three years), in seconds.

    \n
  • \n
  • \n

    fixed-price - The purchase price of the Reserved Instance (for example, 9800.0).

    \n
  • \n
  • \n

    instance-type - The instance type on which the Reserved Instance can be used.

    \n
  • \n
  • \n

    marketplace - Set to true to show only Reserved Instance Marketplace offerings. When this filter is not used, which is the default behavior, all offerings from AWS and Reserved Instance Marketplace are listed.

    \n
  • \n
  • \n

    product-description - The description of the Reserved Instance (Linux/UNIX | Linux/UNIX (Amazon VPC) |\n Windows | Windows (Amazon VPC)).

    \n
  • \n
  • \n

    reserved-instances-offering-id - The Reserved Instances offering ID.

    \n
  • \n
  • \n

    usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the Reserved Instance offering. A Reserved Instance\n\t\t\t\twith dedicated tenancy runs on single-tenant hardware and can\n\t\t\t\tonly be launched within a VPC.

\n

Default: default

", - "queryName":"InstanceTenancy", - "locationName":"instanceTenancy" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "queryName":"OfferingType", - "locationName":"offeringType" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next paginated set of offerings.

", - "queryName":"NextToken", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of offerings to return.

", - "queryName":"MaxResults", - "locationName":"maxResults" - }, - "IncludeMarketplace":{ - "shape":"Boolean", - "documentation":"

Include Marketplace offerings in the response.

", - "queryName":"IncludeMarketplace" - }, - "MinDuration":{ - "shape":"Long", - "documentation":"

The minimum duration (in seconds) to filter when searching for offerings.

", - "queryName":"MinDuration" - }, - "MaxDuration":{ - "shape":"Long", - "documentation":"

The maximum duration (in seconds) to filter when searching for offerings.

", - "queryName":"MaxDuration" - }, - "MaxInstanceCount":{ - "shape":"Integer", - "documentation":"

The maximum number of instances to filter when searching for offerings.

", - "queryName":"MaxInstanceCount" - } - } - }, - "DescribeReservedInstancesOfferingsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesOfferings":{ - "shape":"ReservedInstancesOfferingList", - "documentation":"

A list of Reserved Instances offerings.

", - "locationName":"reservedInstancesOfferingsSet", - "queryName":"ReservedInstancesOfferingsSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeReservedInstancesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ReservedInstancesIds":{ - "shape":"ReservedInstancesIdStringList", - "documentation":"

One or more Reserved Instance IDs.

\n

Default: Describes all your Reserved Instances, or only those otherwise specified.

", - "locationName":"ReservedInstancesId", - "queryName":"ReservedInstancesId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    availability-zone - The Availability Zone where the Reserved Instance can be used.

    \n
  • \n
  • \n

    duration - The duration of the Reserved Instance (one year or three years), in seconds (31536000 | 94608000).

    \n
  • \n
  • \n

    end - The time when the Reserved Instance expires.

    \n
  • \n
  • \n

    fixed-price - The purchase price of the Reserved Instance (for example, 9800.0).

    \n
  • \n
  • \n

    instance-type - The instance type on which the Reserved Instance can be used.

    \n
  • \n
  • \n

    product-description - The product description of the Reserved Instance (Linux/UNIX | Linux/UNIX (Amazon VPC) |\n Windows | Windows (Amazon VPC)).

    \n
  • \n
  • \n

    reserved-instances-id - The ID of the Reserved Instance.

    \n
  • \n
  • \n

    start - The time at which the Reserved Instance purchase request was placed.

    \n
  • \n
  • \n

    state - The state of the Reserved Instance (pending-payment | active | payment-failed | retired).

    \n
  • \n
  • \n

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n
  • \n
  • \n

    usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "queryName":"OfferingType", - "locationName":"offeringType" - } - } - }, - "DescribeReservedInstancesResult":{ - "type":"structure", - "members":{ - "ReservedInstances":{ - "shape":"ReservedInstancesList", - "documentation":"

A list of Reserved Instances.

", - "locationName":"reservedInstancesSet", - "queryName":"ReservedInstancesSet" - } - } - }, - "DescribeRouteTablesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "RouteTableIds":{ - "shape":"ValueStringList", - "documentation":"

One or more route table IDs.

\n\t\t

Default: Describes all your route tables.

", - "locationName":"RouteTableId", - "queryName":"RouteTableId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    association.route-table-association-id - The ID of an association ID for the route table.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.route-table-id - The ID of the route table involved in the association.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.subnet-id - The ID of the subnet involved in the association.

    \n\t\t
  • \n\t\t
  • \n\t\t

    association.main - Indicates whether the route table is the main route table for the VPC.

    \n\t\t
  • \n\t\t
  • \n\t\t

    route-table-id - The ID of the route table.

    \n\t\t
  • \n\t\t
  • \n\t\t

    route.destination-cidr-block - The CIDR range specified in a route in the table.

    \n\t\t
  • \n\t\t
  • \n\t\t

    route.gateway-id - The ID of a gateway specified in a route in the table.

    \n\t\t
  • \n\t\t
  • \n\t\t

    route.instance-id - The ID of an instance specified in a route in the table.

    \n\t\t
  • \n\t\t
  • \n\t\t

    route.origin - Describes how the route was created (CreateRouteTable | CreateRoute | EnableVgwRoutePropagation).

    \n\t\t
  • \n\t\t
  • \n

    route.state - The state of a route in the route table (active |\n blackhole). The blackhole state indicates that the route's target isn't\n available (for example, the specified gateway isn't attached to the VPC, the specified NAT\n instance has been terminated, and so on).

    \n
  • \n
  • \n

    route.vpc-peering-connection-id - The ID of a VPC peering connection\n specified in a route in the table.

    \n
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpc-id - The ID of the VPC for the route table.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeRouteTablesResult":{ - "type":"structure", - "members":{ - "RouteTables":{ - "shape":"RouteTableList", - "documentation":"

Information about one or more route tables.

", - "locationName":"routeTableSet", - "queryName":"RouteTableSet" - } - } - }, - "DescribeSecurityGroupsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupNames":{ - "shape":"GroupNameStringList", - "documentation":"

[EC2-Classic, default VPC] One or more security group names.

\n

Default: Describes all your security groups.

", - "locationName":"GroupName", - "queryName":"GroupName" - }, - "GroupIds":{ - "shape":"GroupIdStringList", - "documentation":"

One or more security group IDs.

\n

Default: Describes all your security groups.

", - "locationName":"GroupId", - "queryName":"GroupId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    description - The description of the security group.

    \n
  • \n
  • \n

    group-id - The ID of the security group.

    \n
  • \n
  • \n

    group-name - The name of the security group.

    \n
  • \n
  • \n

    ip-permission.cidr - A CIDR range that has been granted permission.

    \n
  • \n
  • \n

    ip-permission.from-port - The start of port range for the TCP and UDP protocols, or an ICMP type number.

    \n
  • \n
  • \n

    ip-permission.group-id - The ID of a security group that has been granted permission.

    \n
  • \n
  • \n

    ip-permission.group-name - The name of a security group that has been granted permission.

    \n
  • \n
  • \n

    ip-permission.protocol - The IP protocol for the permission (tcp | udp |\n icmp or a protocol number).

    \n
  • \n
  • \n

    ip-permission.to-port - The end of port range for the TCP and UDP protocols, or an ICMP code.

    \n
  • \n
  • \n

    ip-permission.user-id - The ID of an AWS account that has been granted permission.

    \n
  • \n
  • \n

    owner-id - The AWS account ID of the owner of the security group.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the security group.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the security group.

    \n
  • \n
  • \n

    vpc-id - The ID of the VPC specified when the security group was created.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeSecurityGroupsResult":{ - "type":"structure", - "members":{ - "SecurityGroups":{ - "shape":"SecurityGroupList", - "documentation":"

Information about one or more security groups.

", - "locationName":"securityGroupInfo", - "queryName":"SecurityGroupInfo" - } - } - }, - "DescribeSnapshotAttributeRequest":{ - "type":"structure", - "required":[ - "SnapshotId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

", - "queryName":"SnapshotId" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The snapshot attribute you would like to view.

", - "queryName":"Attribute" - } - } - }, - "DescribeSnapshotAttributeResult":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

", - "queryName":"SnapshotId", - "locationName":"snapshotId" - }, - "CreateVolumePermissions":{ - "shape":"CreateVolumePermissionList", - "documentation":"

A list of permissions for creating volumes from the snapshot.

", - "locationName":"createVolumePermission", - "queryName":"CreateVolumePermission" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "queryName":"ProductCodes", - "locationName":"productCodes" - } - } - }, - "DescribeSnapshotsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SnapshotIds":{ - "shape":"SnapshotIdStringList", - "documentation":"

One or more snapshot IDs.

\n

Default: Describes snapshots for which you have launch permissions.

", - "locationName":"SnapshotId", - "queryName":"SnapshotId" - }, - "OwnerIds":{ - "shape":"OwnerStringList", - "documentation":"

Returns the snapshots owned by the specified owner. Multiple owners can be specified.

", - "locationName":"Owner", - "queryName":"Owner" - }, - "RestorableByUserIds":{ - "shape":"RestorableByStringList", - "documentation":"

One or more AWS accounts IDs that can create volumes from the snapshot.

", - "locationName":"RestorableBy", - "queryName":"RestorableBy" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    description - A description of the snapshot.

    \n
  • \n
  • \n

    owner-alias - The AWS account alias (for example, amazon) that owns the snapshot.

    \n
  • \n
  • \n

    owner-id - The ID of the AWS account that owns the snapshot.

    \n
  • \n
  • \n

    progress - The progress of the snapshot, as a percentage (for example, 80%).

    \n
  • \n
  • \n

    snapshot-id - The snapshot ID.

    \n
  • \n
  • \n

    start-time - The time stamp when the snapshot was initiated.

    \n
  • \n
  • \n

    status - The status of the snapshot (pending | completed | error).

    \n
  • \n
  • \n

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n
  • \n
  • \n

    volume-id - The ID of the volume the snapshot is for.

    \n
  • \n
  • \n

    volume-size - The size of the volume, in GiB.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeSnapshotsResult":{ - "type":"structure", - "members":{ - "Snapshots":{ - "shape":"SnapshotList", - "locationName":"snapshotSet", - "queryName":"SnapshotSet" - } - } - }, - "DescribeSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - } - } - }, - "DescribeSpotDatafeedSubscriptionResult":{ - "type":"structure", - "members":{ - "SpotDatafeedSubscription":{ - "shape":"SpotDatafeedSubscription", - "documentation":"

The Spot Instance datafeed subscription.

", - "queryName":"SpotDatafeedSubscription", - "locationName":"spotDatafeedSubscription" - } - } - }, - "DescribeSpotInstanceRequestsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SpotInstanceRequestIds":{ - "shape":"SpotInstanceRequestIdList", - "documentation":"

One or more Spot Instance request IDs.

", - "locationName":"SpotInstanceRequestId", - "queryName":"SpotInstanceRequestId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    availability-zone-group - The Availability Zone group.

    \n
  • \n
  • \n

    create-time - The time stamp when the Spot Instance request was created.

    \n
  • \n
  • \n

    fault-code - The fault code related to the request.

    \n
  • \n
  • \n

    fault-message - The fault message related to the request.

    \n
  • \n
  • \n

    instance-id - The ID of the instance that fulfilled the request.

    \n
  • \n
  • \n

    launch-group - The Spot Instance launch group.

    \n
  • \n
  • \n

    launch.block-device-mapping.delete-on-termination - Indicates whether the Amazon EBS volume is deleted on instance termination.

    \n
  • \n
  • \n

    launch.block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

    \n
  • \n
  • \n

    launch.block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

    \n
  • \n
  • \n

    launch.block-device-mapping.volume-size - The size of the Amazon EBS volume, in GiB.

    \n
  • \n
  • \n

    launch.block-device-mapping.volume-type - The type of the Amazon EBS volume (standard | io1).

    \n
  • \n
  • \n

    launch.group-id - The security group for the instance.

    \n
  • \n
  • \n

    launch.image-id - The ID of the AMI.

    \n
  • \n
  • \n

    launch.instance-type - The type of instance (for example, m1.small).

    \n
  • \n
  • \n

    launch.kernel-id - The kernel ID.

    \n
  • \n
  • \n

    launch.key-name - The name of the key pair the instance launched with.

    \n
  • \n
  • \n

    launch.monitoring-enabled - Whether monitoring is enabled for the Spot Instance.

    \n
  • \n
  • \n

    launch.ramdisk-id - The RAM disk ID.

    \n
  • \n
  • \n

    launch.network-interface.network-interface-id - The ID of the network interface.

    \n
  • \n
  • \n

    launch.network-interface.device-index - The index of the device for the network interface attachment on the instance.

    \n
  • \n
  • \n

    launch.network-interface.subnet-id - The ID of the subnet for the instance.

    \n
  • \n
  • \n

    launch.network-interface.description - A description of the network interface.

    \n
  • \n
  • \n

    launch.network-interface.private-ip-address - The primary private IP address of the network interface.

    \n
  • \n
  • \n

    launch.network-interface.delete-on-termination - Indicates whether the network interface is deleted when the instance is terminated.

    \n
  • \n
  • \n

    launch.network-interface.group-id - The ID of the security group associated with the network interface.

    \n
  • \n
  • \n

    launch.network-interface.group-name - The name of the security group associated with the network interface.

    \n
  • \n
  • \n

    launch.network-interface.addresses.primary - Indicates whether the IP address is the primary private IP address.

    \n
  • \n
  • \n

    product-description - The product description associated with the instance (Linux/UNIX | Windows).

    \n
  • \n
  • \n

    spot-instance-request-id - The Spot Instance request ID.

    \n
  • \n
  • \n

    spot-price - The maximum hourly price for any Spot Instance launched to fulfill the request.

    \n
  • \n
  • \n

    state - The state of the Spot Instance request (open | active | closed |\n cancelled | failed).

    \n
  • \n
  • \n

    status-code - The short code describing the most recent evaluation of your Spot Instance request.

    \n
  • \n
  • \n

    status-message - The message explaining the status of the Spot Instance request.

    \n
  • \n
  • \n

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n
  • \n
  • \n

    type - The type of Spot Instance request (one-time | persistent).

    \n
  • \n
  • \n

    launched-availability-zone - The Availability Zone in which the bid is launched.

    \n
  • \n
  • \n

    valid-from - The start date of the request.

    \n
  • \n
  • \n

    valid-until - The end date of the request.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeSpotInstanceRequestsResult":{ - "type":"structure", - "members":{ - "SpotInstanceRequests":{ - "shape":"SpotInstanceRequestList", - "documentation":"

One or more Spot Instance requests.

", - "locationName":"spotInstanceRequestSet", - "queryName":"SpotInstanceRequestSet" - } - } - }, - "DescribeSpotPriceHistoryRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The start date and time of the Spot Price history data.

", - "queryName":"StartTime", - "locationName":"startTime" - }, - "EndTime":{ - "shape":"DateTime", - "documentation":"

The end date and time of the Spot Price history data.

", - "queryName":"EndTime", - "locationName":"endTime" - }, - "InstanceTypes":{ - "shape":"InstanceTypeList", - "documentation":"

One or more instance types.

", - "locationName":"InstanceType", - "queryName":"InstanceType" - }, - "ProductDescriptions":{ - "shape":"ProductDescriptionList", - "documentation":"

One or more basic product descriptions.

", - "locationName":"ProductDescription", - "queryName":"ProductDescription" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    availability-zone - The Availability Zone for which prices should be returned.

    \n
  • \n
  • \n

    instance-type - The type of instance (for example, m1.small).

    \n
  • \n
  • \n

    product-description - The product description for the Spot Price\n (Linux/UNIX | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) | Windows (Amazon VPC)).

    \n
  • \n
  • \n

    spot-price - The Spot Price. The value must match exactly (or use wildcards; greater than or less than comparison is not supported).

    \n
  • \n
  • \n

    timestamp - The timestamp of the Spot Price history (for example, 2010-08-16T05:06:11.000Z). \n You can use wildcards (* and ?). Greater than or less than comparison is not supported.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The number of rows to return.

", - "queryName":"MaxResults", - "locationName":"maxResults" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next set of rows to return.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeSpotPriceHistoryResult":{ - "type":"structure", - "members":{ - "SpotPriceHistory":{ - "shape":"SpotPriceHistoryList", - "documentation":"

The historical Spot Prices.

", - "locationName":"spotPriceHistorySet", - "queryName":"SpotPriceHistorySet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The string marking the next set of results. This is empty\n\t\t\t\tif there are no more results.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeSubnetsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SubnetIds":{ - "shape":"SubnetIdStringList", - "documentation":"

One or more subnet IDs.

\n\t\t

Default: Describes all your subnets.

", - "locationName":"SubnetId", - "queryName":"SubnetId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    availabilityZone - The Availability Zone for the subnet. You can also use\n\t\t\t\t\t\tavailability-zone as the filter name.

    \n\t\t
  • \n\t\t
  • \n\t\t

    available-ip-address-count - The number of IP addresses in the subnet that are available.

    \n\t\t
  • \n\t\t
  • \n\t\t

    cidrBlock - The CIDR block of the subnet. The CIDR block you specify must\n\t\t\t\t\texactly match the subnet's CIDR block for information to be returned for the subnet. You\n\t\t\t\t\tcan also use cidr or cidr-block as the filter names.

    \n\t\t
  • \n\t\t
  • \n\t\t

    defaultForAz - Indicates whether this is the default subnet for the\n\t\t\t\t\tAvailability Zone. You can also use default-for-az as the filter name.

    \n\t\t
  • \n\t\t
  • \n\t\t

    state - The state of the subnet (pending | available).

    \n\t\t
  • \n\t\t
  • \n\t\t

    subnet-id - The ID of the subnet.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpc-id - The ID of the VPC for the subnet.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeSubnetsResult":{ - "type":"structure", - "members":{ - "Subnets":{ - "shape":"SubnetList", - "documentation":"

Information about one or more subnets.

", - "locationName":"subnetSet", - "queryName":"SubnetSet" - } - } - }, - "DescribeTagsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    key - The tag key.

    \n
  • \n
  • \n

    resource-id - The resource ID.

    \n
  • \n
  • \n

    resource-type - The resource type \n (customer-gateway |\n dhcp-options |\n image |\n instance |\n internet-gateway | \n network-acl | \n network-interface | \n reserved-instances | \n route-table | \n security-group | \n snapshot | spot-instances-request | \n subnet |\n volume | vpc |\n vpn-connection |\n vpn-gateway).

    \n
  • \n
  • \n

    value - The tag value.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", - "queryName":"MaxResults", - "locationName":"maxResults" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeTagsResult":{ - "type":"structure", - "members":{ - "Tags":{ - "shape":"TagDescriptionList", - "documentation":"

A list of tags.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeVolumeAttributeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "queryName":"VolumeId" - }, - "Attribute":{ - "shape":"VolumeAttributeName", - "documentation":"

The instance attribute.

", - "queryName":"Attribute" - } - } - }, - "DescribeVolumeAttributeResult":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "queryName":"VolumeId", - "locationName":"volumeId" - }, - "AutoEnableIO":{ - "shape":"AttributeBooleanValue", - "documentation":"

The state of autoEnableIO attribute.

", - "queryName":"AutoEnableIO", - "locationName":"autoEnableIO" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "queryName":"ProductCodes", - "locationName":"productCodes" - } - } - }, - "DescribeVolumeStatusRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeIds":{ - "shape":"VolumeIdStringList", - "documentation":"

One or more volume IDs.

\n

Default: Describes all your volumes.

", - "locationName":"VolumeId", - "queryName":"VolumeId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    action.code - The action code for the event (for example, enable-volume-io).

    \n
  • \n
  • \n

    action.description - A description of the action.

    \n
  • \n
  • \n

    action.event-id - The event ID associated with the action.

    \n
  • \n
  • \n

    availability-zone - The Availability Zone of the instance.

    \n
  • \n
  • \n

    event.description - A description of the event.

    \n
  • \n
  • \n

    event.event-id - The event ID.

    \n
  • \n
  • \n

    event.event-type - The event type (for io-enabled: passed | failed;\n for io-performance: io-performance:degraded | io-performance:severely-degraded | io-performance:stalled).

    \n
  • \n
  • \n

    event.not-after - The latest end time for the event.

    \n
  • \n
  • \n

    event.not-before - The earliest start time for the event.

    \n
  • \n
  • \n

    volume-status.details-name - The cause for volume-status.status (io-enabled | io-performance).

    \n
  • \n
  • \n

    volume-status.details-status - The status of volume-status.details-name (for io-enabled: passed | failed;\n for io-performance: normal | degraded | severely-degraded | stalled).

    \n
  • \n
  • \n

    volume-status.status - The status of the volume (ok | impaired | warning | insufficient-data).

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return using the pagination token\n returned by a previous call.

", - "queryName":"NextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of paginated volume items per response.

", - "queryName":"MaxResults" - } - } - }, - "DescribeVolumeStatusResult":{ - "type":"structure", - "members":{ - "VolumeStatuses":{ - "shape":"VolumeStatusList", - "documentation":"

A list of volumes.

", - "locationName":"volumeStatusSet", - "queryName":"VolumeStatusSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "queryName":"NextToken", - "locationName":"nextToken" - } - } - }, - "DescribeVolumesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeIds":{ - "shape":"VolumeIdStringList", - "documentation":"

One or more volume IDs.

", - "locationName":"VolumeId", - "queryName":"VolumeId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    attachment.attach-time - The time stamp when the attachment initiated.

    \n
  • \n
  • \n

    attachment.delete-on-termination - Whether the volume is deleted on instance termination.

    \n
  • \n
  • \n

    attachment.device - The device name that is exposed to the instance (for example, /dev/sda1).

    \n
  • \n
  • \n

    attachment.instance-id - The ID of the instance the volume is attached to.

    \n
  • \n
  • \n

    attachment.status - The attachment state (attaching | attached | detaching | detached).

    \n
  • \n
  • \n

    availability-zone - The Availability Zone in which the volume was created.

    \n
  • \n
  • \n

    create-time - The time stamp when the volume was created.

    \n
  • \n
  • \n

    encrypted - The encryption status of the volume.

    \n
  • \n
  • \n

    size - The size of the volume, in GiB.

    \n
  • \n
  • \n

    snapshot-id - The snapshot from which the volume was created.

    \n
  • \n
  • \n

    status - The status of the volume (creating | available | in-use | deleting | deleted | error).

    \n
  • \n
  • \n

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n
  • \n
  • \n

    volume-id - The volume ID.

    \n
  • \n
  • \n

    volume-type - The Amazon EBS volume type. This can be standard\n for standard EBS volumes or io1 for Provisioned IOPS volumes.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeVolumesResult":{ - "type":"structure", - "members":{ - "Volumes":{ - "shape":"VolumeList", - "locationName":"volumeSet", - "queryName":"VolumeSet" - } - } - }, - "DescribeVpcAttributeRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId" - }, - "Attribute":{ - "shape":"VpcAttributeName", - "documentation":"

The VPC attribute.

", - "queryName":"Attribute" - } - } - }, - "DescribeVpcAttributeResult":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId", - "queryName":"VpcId" - }, - "EnableDnsSupport":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether DNS resolution is enabled for\n\t\t\t\tthe VPC. If this attribute is true, the Amazon DNS server\n\t\t\t\tresolves DNS hostnames for your instances to their corresponding\n\t\t\t\tIP addresses; otherwise, it does not.

", - "queryName":"EnableDnsSupport", - "locationName":"enableDnsSupport" - }, - "EnableDnsHostnames":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the instances launched in the VPC get DNS hostnames.\n\t\t\t\tIf this attribute is true, instances in the VPC get DNS hostnames;\n\t\t\t\totherwise, they do not.

", - "queryName":"EnableDnsHostnames", - "locationName":"enableDnsHostnames" - } - } - }, - "DescribeVpcPeeringConnectionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcPeeringConnectionIds":{ - "shape":"ValueStringList", - "documentation":"

One or more VPC peering connection IDs.

\n

Default: Describes all your VPC peering connections.

", - "locationName":"VpcPeeringConnectionId", - "queryName":"VpcPeeringConnectionId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n
    \n
  • \n

    accepter-vpc-info.cidr-block - The CIDR block of the peer VPC.

    \n
  • \n
  • \n

    accepter-vpc-info.owner-id - The AWS account ID of the owner of the peer\n VPC.

    \n
  • \n
  • \n

    accepter-vpc-info.vpc-id - The ID of the peer VPC.

    \n
  • \n
  • \n

    expiration-time - The expiration date and time for the VPC peering\n connection.

    \n
  • \n
  • \n

    requester-vpc-info.cidr-block - The CIDR block of the requester's\n VPC.

    \n
  • \n
  • \n

    requester-vpc-info.owner-id - The AWS account ID of the owner of the\n requester VPC.

    \n
  • \n
  • \n

    requester-vpc-info.vpc-id - The ID of the requester VPC.

    \n
  • \n
  • \n

    status-code - The status of the VPC peering connection\n (pending-acceptance | failed | expired |\n provisioning | active | deleted |\n rejected).

    \n
  • \n
  • \n

    status-message - A message that provides more information about the status\n of the VPC peering connection, if applicable.

    \n
  • \n
  • \n

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n
  • \n
  • \n

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n
  • \n
  • \n

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n
  • \n
  • \n

    vpc-peering-connection-id - The ID of the VPC peering connection.

    \n
  • \n
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeVpcPeeringConnectionsResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnections":{ - "shape":"VpcPeeringConnectionList", - "documentation":"

Information about the VPC peering connections

", - "locationName":"vpcPeeringConnectionSet", - "queryName":"VpcPeeringConnectionSet" - } - } - }, - "DescribeVpcsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcIds":{ - "shape":"VpcIdStringList", - "documentation":"

One or more VPC IDs.

\n\t\t

Default: Describes all your VPCs.

", - "locationName":"VpcId", - "queryName":"VpcId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    cidr - The CIDR block of the VPC. The CIDR block you specify must exactly match the VPC's CIDR block for information to be returned for the VPC.

    \n\t\t
  • \n\t\t
  • \n\t\t

    dhcp-options-id - The ID of a set of DHCP options.

    \n\t\t
  • \n\t\t
  • \n\t\t

    isDefault - Indicates whether the VPC is the default VPC.

    \n\t\t
  • \n\t\t
  • \n\t\t

    state - The state of the VPC (pending | available).

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpc-id - The ID of the VPC.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeVpcsResult":{ - "type":"structure", - "members":{ - "Vpcs":{ - "shape":"VpcList", - "documentation":"

Information about one or more VPCs.

", - "locationName":"vpcSet", - "queryName":"VpcSet" - } - } - }, - "DescribeVpnConnectionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpnConnectionIds":{ - "shape":"VpnConnectionIdStringList", - "documentation":"

One or more VPN connection IDs.

\n\t\t

Default: Describes your VPN connections.

", - "locationName":"VpnConnectionId", - "queryName":"VpnConnectionId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    customer-gateway-configuration - The configuration information for the customer gateway.

    \n\t\t
  • \n\t\t
  • \n\t\t

    customer-gateway-id - The ID of a customer gateway associated with the VPN connection.

    \n\t\t
  • \n\t\t
  • \n\t\t

    state - The state of the VPN connection (pending | available | deleting | deleted).

    \n\t\t
  • \n\t\t
  • \n\t\t

    option.static-routes-only - Indicates whether the connection has static routes only. Used for devices that do not support Border Gateway Protocol (BGP).

    \n\t\t
  • \n\t\t
  • \n\t\t

    route.destination-cidr-block - The destination CIDR block. This corresponds to the subnet used in a customer data center.

    \n\t\t
  • \n\t\t
  • \n\t\t

    bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP device.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    type - The type of VPN connection. Currently the only supported type is ipsec.1.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpn-connection-id - The ID of the VPN connection.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpn-gateway-id - The ID of a virtual private gateway associated with the VPN connection.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeVpnConnectionsResult":{ - "type":"structure", - "members":{ - "VpnConnections":{ - "shape":"VpnConnectionList", - "documentation":"

Information about one or more VPN connections.

", - "locationName":"vpnConnectionSet", - "queryName":"VpnConnectionSet" - } - } - }, - "DescribeVpnGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpnGatewayIds":{ - "shape":"VpnGatewayIdStringList", - "documentation":"

One or more virtual private gateway IDs.

\n\t\t

Default: Describes all your virtual private gateways.

", - "locationName":"VpnGatewayId", - "queryName":"VpnGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

\n\t\t
    \n\t\t
  • \n\t\t

    attachment.state - The current state of the attachment between the gateway and the VPC (attaching | attached | detaching | detached).

    \n\t\t
  • \n\t\t
  • \n\t\t

    attachment.vpc-id - The ID of an attached VPC.

    \n\t\t
  • \n\t\t
  • \n\t\t

    availability-zone - The Availability Zone for the virtual private gateway.

    \n\t\t
  • \n\t\t
  • \n\t\t

    state - The state of the virtual private gateway (pending | available | deleting | deleted).

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag:key=value - The key/value combination of a tag assigned to the resource.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. \n\t\t For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both \n\t\t the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). \n\t\t If you want to list only resources where Purpose is X, see the tag:key=value filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

    \n\t\t
  • \n\t\t
  • \n\t\t

    type - The type of virtual private gateway. Currently the only supported type is ipsec.1.

    \n\t\t
  • \n\t\t
  • \n\t\t

    vpn-gateway-id - The ID of the virtual private gateway.

    \n\t\t
  • \n\t\t
", - "locationName":"Filter", - "queryName":"Filter" - } - } - }, - "DescribeVpnGatewaysResult":{ - "type":"structure", - "members":{ - "VpnGateways":{ - "shape":"VpnGatewayList", - "documentation":"

Information about one or more virtual private gateways.

", - "locationName":"vpnGatewaySet", - "queryName":"VpnGatewaySet" - } - } - }, - "DetachInternetGatewayRequest":{ - "type":"structure", - "required":[ - "InternetGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "queryName":"InternetGatewayId", - "locationName":"internetGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - } - } - }, - "DetachNetworkInterfaceRequest":{ - "type":"structure", - "required":["AttachmentId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the attachment.

", - "queryName":"AttachmentId", - "locationName":"attachmentId" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Specifies whether to force a detachment.

", - "queryName":"Force", - "locationName":"force" - } - } - }, - "DetachVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "queryName":"VolumeId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name.

", - "queryName":"Device" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Forces detachment if the previous detachment attempt did not occur cleanly (for example,\n logging into an instance, unmounting the volume, and detaching normally). This option can lead\n to data loss or a corrupted file system. Use this option only as a last resort to detach a\n volume from a failed instance. The instance won't have an opportunity to flush file system\n caches or file system metadata. If you use this option, you must perform file system check and\n repair procedures.

", - "queryName":"Force" - } - } - }, - "DetachVolumeResult":{ - "type":"structure", - "members":{ - "Attachment":{ - "shape":"VolumeAttachment", - "locationName":"attachment", - "queryName":"Attachment" - } - } - }, - "DetachVpnGatewayRequest":{ - "type":"structure", - "required":[ - "VpnGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "queryName":"VpnGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId" - } - } - }, - "DeviceType":{ - "type":"string", - "enum":[ - "ebs", - "instance-store" - ] - }, - "DhcpConfiguration":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

The name of a DHCP option.

", - "locationName":"key", - "queryName":"Key" - }, - "Values":{ - "shape":"ValueStringList", - "documentation":"

One or more values for the DHCP option.

", - "locationName":"valueSet", - "queryName":"Value" - } - }, - "documentation":"

Describes a DHCP configuration option.

" - }, - "DhcpConfigurationList":{ - "type":"list", - "member":{ - "shape":"DhcpConfiguration", - "locationName":"item" - }, - "queryFlattened":true - }, - "DhcpOptions":{ - "type":"structure", - "members":{ - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the set of DHCP options.

", - "locationName":"dhcpOptionsId", - "queryName":"DhcpOptionsId" - }, - "DhcpConfigurations":{ - "shape":"DhcpConfigurationList", - "documentation":"

One or more DHCP options in the set.

", - "locationName":"dhcpConfigurationSet", - "queryName":"DhcpConfigurationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the DHCP options set.

", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes a set of DHCP options.

" - }, - "DhcpOptionsIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"DhcpOptionsId" - }, - "queryFlattened":true - }, - "DhcpOptionsList":{ - "type":"list", - "member":{ - "shape":"DhcpOptions", - "locationName":"item" - }, - "queryFlattened":true - }, - "DisableVgwRoutePropagationRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "GatewayId" - ], - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the routing table.

", - "queryName":"RouteTableId" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "queryName":"GatewayId" - } - } - }, - "DisassociateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

[EC2-Classic] The Elastic IP address.

", - "queryName":"PublicIp" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The association ID.

", - "queryName":"AssociationId" - } - } - }, - "DisassociateRouteTableRequest":{ - "type":"structure", - "required":["AssociationId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID representing the current association between the route table and subnet.

", - "queryName":"AssociationId", - "locationName":"associationId" - } - } - }, - "DiskImage":{ - "type":"structure", - "members":{ - "Image":{ - "shape":"DiskImageDetail", - "queryName":"Image" - }, - "Description":{ - "shape":"String", - "queryName":"Description" - }, - "Volume":{ - "shape":"VolumeDetail", - "queryName":"Volume" - } - }, - "documentation":"

Describes a disk image.

" - }, - "DiskImageDescription":{ - "type":"structure", - "required":[ - "Format", - "Size", - "ImportManifestUrl" - ], - "members":{ - "Format":{ - "shape":"DiskImageFormat", - "documentation":"

The disk image format.

", - "queryName":"Format", - "locationName":"format" - }, - "Size":{ - "shape":"Long", - "documentation":"

The size of the disk image.

", - "queryName":"Size", - "locationName":"size" - }, - "ImportManifestUrl":{ - "shape":"String", - "documentation":"

A presigned URL for the import manifest stored in Amazon S3. For information about\n creating a presigned URL for an Amazon S3 object, read the\n \"Query String Request Authentication Alternative\" section of the\n Authenticating REST Requests topic in the\n Amazon Simple Storage Service Developer Guide.

", - "queryName":"ImportManifestUrl", - "locationName":"importManifestUrl" - }, - "Checksum":{ - "shape":"String", - "documentation":"

The checksum computed for the disk image.

", - "queryName":"Checksum", - "locationName":"checksum" - } - } - }, - "DiskImageDetail":{ - "type":"structure", - "required":[ - "Format", - "Bytes", - "ImportManifestUrl" - ], - "members":{ - "Format":{ - "shape":"DiskImageFormat", - "documentation":"

The disk image format.

", - "queryName":"Format", - "locationName":"format" - }, - "Bytes":{ - "shape":"Long", - "queryName":"Bytes", - "locationName":"bytes" - }, - "ImportManifestUrl":{ - "shape":"String", - "documentation":"

A presigned URL for the import manifest stored in Amazon S3. For information about\n creating a presigned URL for an Amazon S3 object, read the\n \"Query String Request Authentication Alternative\" section of the\n Authenticating REST Requests topic in the\n Amazon Simple Storage Service Developer Guide.

", - "queryName":"ImportManifestUrl", - "locationName":"importManifestUrl" - } - } - }, - "DiskImageFormat":{ - "type":"string", - "enum":[ - "VMDK", - "RAW", - "VHD" - ] - }, - "DiskImageList":{ - "type":"list", - "member":{"shape":"DiskImage"}, - "queryFlattened":true - }, - "DiskImageVolumeDescription":{ - "type":"structure", - "required":["Id"], - "members":{ - "Size":{ - "shape":"Long", - "documentation":"

The size of the volume.

", - "queryName":"Size", - "locationName":"size" - }, - "Id":{ - "shape":"String", - "documentation":"

The volume identifier.

", - "queryName":"Id", - "locationName":"id" - } - } - }, - "DomainType":{ - "type":"string", - "enum":[ - "vpc", - "standard" - ] - }, - "Double":{"type":"double"}, - "EbsBlockDevice":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "queryName":"SnapshotId", - "locationName":"snapshotId" - }, - "VolumeSize":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiB.

\n

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB.

\n

Default: If you're creating the volume from a snapshot and\n don't specify a volume size, the default is the snapshot size.

", - "queryName":"VolumeSize", - "locationName":"volumeSize" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type.

\n

Default: standard

", - "queryName":"VolumeType", - "locationName":"volumeType" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

The number of I/O operations per second (IOPS) that the\n volume supports.

\n

Constraint: Range is 100 to 4000.

\n

Condition: Required when the volume type is io1; not used with standard volumes.

", - "queryName":"Iops", - "locationName":"iops" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is encrypted.

", - "locationName":"encrypted", - "queryName":"Encrypted" - } - }, - "documentation":"

Describes an Amazon EBS block device.

" - }, - "EbsInstanceBlockDevice":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

", - "queryName":"VolumeId", - "locationName":"volumeId" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "queryName":"Status", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "queryName":"AttachTime", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is deleted on instance termination.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a parameter used to set up an Amazon EBS volume in a block device mapping.

" - }, - "EbsInstanceBlockDeviceSpecification":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

", - "queryName":"VolumeId", - "locationName":"volumeId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is deleted on instance termination.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - } - } - }, - "EnableVgwRoutePropagationRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "GatewayId" - ], - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the routing table.

", - "queryName":"RouteTableId" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "queryName":"GatewayId" - } - } - }, - "EnableVolumeIORequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "queryName":"VolumeId", - "locationName":"volumeId" - } - } - }, - "EventCode":{ - "type":"string", - "enum":[ - "instance-reboot", - "system-reboot", - "system-maintenance", - "instance-retirement", - "instance-stop" - ] - }, - "ExecutableByStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ExecutableBy" - }, - "queryFlattened":true - }, - "ExportEnvironment":{ - "type":"string", - "enum":[ - "citrix", - "vmware", - "microsoft" - ] - }, - "ExportTask":{ - "type":"structure", - "members":{ - "ExportTaskId":{ - "shape":"String", - "documentation":"

The ID of the export task.

", - "queryName":"ExportTaskId", - "locationName":"exportTaskId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the resource being exported.

", - "queryName":"Description", - "locationName":"description" - }, - "State":{ - "shape":"ExportTaskState", - "documentation":"

The state of the conversion task.

", - "queryName":"State", - "locationName":"state" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status message related to the export task.

", - "queryName":"StatusMessage", - "locationName":"statusMessage" - }, - "InstanceExportDetails":{ - "shape":"InstanceExportDetails", - "documentation":"

The instance being exported.

", - "locationName":"instanceExport", - "queryName":"InstanceExport" - }, - "ExportToS3Task":{ - "shape":"ExportToS3Task", - "locationName":"exportToS3", - "queryName":"ExportToS3" - } - }, - "documentation":"

Describes an export task.

" - }, - "ExportTaskIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ExportTaskId" - }, - "queryFlattened":true - }, - "ExportTaskList":{ - "type":"list", - "member":{ - "shape":"ExportTask", - "locationName":"item" - }, - "queryFlattened":true - }, - "ExportTaskState":{ - "type":"string", - "enum":[ - "active", - "cancelling", - "cancelled", - "completed" - ] - }, - "ExportToS3Task":{ - "type":"structure", - "members":{ - "DiskImageFormat":{ - "shape":"DiskImageFormat", - "documentation":"

The format for the exported image.

", - "queryName":"DiskImageFormat", - "locationName":"diskImageFormat" - }, - "ContainerFormat":{ - "shape":"ContainerFormat", - "documentation":"

The container format used to combine disk images with metadata (such as OVF). If absent, only\n the disk image is exported.

", - "queryName":"ContainerFormat", - "locationName":"containerFormat" - }, - "S3Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket for the destination image. The destination bucket must\n exist and grant WRITE and READ_ACL permissions to the AWS account\n vm-import-export@amazon.com.

", - "queryName":"S3Bucket", - "locationName":"s3Bucket" - }, - "S3Key":{ - "shape":"String", - "queryName":"S3Key", - "locationName":"s3Key" - } - } - }, - "ExportToS3TaskSpecification":{ - "type":"structure", - "members":{ - "DiskImageFormat":{ - "shape":"DiskImageFormat", - "queryName":"DiskImageFormat", - "locationName":"diskImageFormat" - }, - "ContainerFormat":{ - "shape":"ContainerFormat", - "queryName":"ContainerFormat", - "locationName":"containerFormat" - }, - "S3Bucket":{ - "shape":"String", - "queryName":"S3Bucket", - "locationName":"s3Bucket" - }, - "S3Prefix":{ - "shape":"String", - "documentation":"

The image is written to a single object in the Amazon S3 bucket at the S3 key\n s3prefix + exportTaskId + '.' + diskImageFormat.

", - "queryName":"S3Prefix", - "locationName":"s3Prefix" - } - } - }, - "Filter":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the filter.

", - "queryName":"Name" - }, - "Values":{ - "shape":"ValueStringList", - "documentation":"

One or more filter values.

", - "locationName":"Value", - "queryName":"Value" - } - } - }, - "FilterList":{ - "type":"list", - "member":{ - "shape":"Filter", - "locationName":"Filter" - }, - "queryFlattened":true - }, - "Float":{"type":"float"}, - "GatewayType":{ - "type":"string", - "enum":["ipsec.1"] - }, - "GetConsoleOutputRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId" - } - } - }, - "GetConsoleOutputResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The time the output was last updated.

", - "locationName":"timestamp", - "queryName":"Timestamp" - }, - "Output":{ - "shape":"String", - "documentation":"

The console output, Base64 encoded.

", - "locationName":"output", - "queryName":"Output" - } - } - }, - "GetPasswordDataRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the Windows instance.

", - "queryName":"InstanceId" - } - } - }, - "GetPasswordDataResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the Windows instance.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The time the data was last updated.

", - "locationName":"timestamp", - "queryName":"Timestamp" - }, - "PasswordData":{ - "shape":"String", - "documentation":"

The password of the instance.

", - "locationName":"passwordData", - "queryName":"PasswordData" - } - } - }, - "GroupIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"groupId" - }, - "queryFlattened":true - }, - "GroupIdentifier":{ - "type":"structure", - "members":{ - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

", - "locationName":"groupName", - "queryName":"GroupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId", - "locationName":"groupId" - } - }, - "documentation":"

Describes a security group.

" - }, - "GroupIdentifierList":{ - "type":"list", - "member":{ - "shape":"GroupIdentifier", - "locationName":"item" - }, - "queryFlattened":true - }, - "GroupNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"GroupName" - }, - "queryFlattened":true - }, - "HypervisorType":{ - "type":"string", - "enum":[ - "ovm", - "xen" - ] - }, - "IamInstanceProfile":{ - "type":"structure", - "members":{ - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", - "queryName":"Arn", - "locationName":"arn" - }, - "Id":{ - "shape":"String", - "documentation":"

The ID of the instance profile.

", - "queryName":"Id", - "locationName":"id" - } - }, - "documentation":"

Describes an IAM instance profile.

" - }, - "IamInstanceProfileSpecification":{ - "type":"structure", - "members":{ - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", - "queryName":"Arn", - "locationName":"arn" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the instance profile.

", - "queryName":"Name", - "locationName":"name" - } - }, - "documentation":"

Describes an IAM instance profile.

" - }, - "IcmpTypeCode":{ - "type":"structure", - "members":{ - "Type":{ - "shape":"Integer", - "documentation":"

The ICMP code. A value of -1 means all codes for the specified ICMP type.

", - "queryName":"Type", - "locationName":"type" - }, - "Code":{ - "shape":"Integer", - "documentation":"

The ICMP type. A value of -1 means all types.

", - "queryName":"Code", - "locationName":"code" - } - }, - "documentation":"

Describes the ICMP type and code.

" - }, - "Image":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId", - "queryName":"ImageId" - }, - "ImageLocation":{ - "shape":"String", - "documentation":"

The location of the AMI.

", - "locationName":"imageLocation", - "queryName":"ImageLocation" - }, - "State":{ - "shape":"ImageState", - "documentation":"

The current state of the AMI. If the state is available, the image is successfully registered and can be used to launch an instance.

", - "locationName":"imageState", - "queryName":"ImageState" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the image owner.

", - "locationName":"imageOwnerId", - "queryName":"ImageOwnerId" - }, - "Public":{ - "shape":"Boolean", - "documentation":"

Indicates whether the image has public launch permissions. The value is true if\n\t\t\t\tthis image has public launch permissions or false\n\t\t\t\tif it has only implicit and explicit launch permissions.

", - "locationName":"isPublic", - "queryName":"IsPublic" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

Any product codes associated with the AMI.

", - "locationName":"productCodes", - "queryName":"ProductCodes" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the image.

", - "locationName":"architecture", - "queryName":"Architecture" - }, - "ImageType":{ - "shape":"ImageTypeValues", - "documentation":"

The type of image.

", - "locationName":"imageType", - "queryName":"ImageType" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The kernel associated with the image, if any. Only applicable for machine images.

", - "locationName":"kernelId", - "queryName":"KernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The RAM disk associated with the image, if any. Only applicable for machine images.

", - "locationName":"ramdiskId", - "queryName":"RamdiskId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The value is Windows for Windows AMIs; otherwise blank.

", - "locationName":"platform", - "queryName":"Platform" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Specifies whether enhanced networking is enabled.

", - "queryName":"SriovNetSupport", - "locationName":"sriovNetSupport" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

The reason for the state change.

", - "queryName":"StateReason", - "locationName":"stateReason" - }, - "ImageOwnerAlias":{ - "shape":"String", - "documentation":"

The AWS account alias (for example, amazon, self) or\n the AWS account ID of the AMI owner.

", - "queryName":"ImageOwnerAlias", - "locationName":"imageOwnerAlias" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the AMI that was provided during image creation.

", - "queryName":"Name", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the AMI that was provided during image creation.

", - "queryName":"Description", - "locationName":"description" - }, - "RootDeviceType":{ - "shape":"DeviceType", - "documentation":"

The type of root device used by the AMI. The AMI can use an Amazon EBS volume or an\n\t\t\t\tinstance store volume.

", - "queryName":"RootDeviceType", - "locationName":"rootDeviceType" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The device name of the root device (for example, /dev/sda1 or xvda).

", - "queryName":"RootDeviceName", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

Any block device mapping entries.

", - "locationName":"blockDeviceMapping", - "queryName":"BlockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"VirtualizationType", - "documentation":"

The type of virtualization of the AMI.

", - "queryName":"VirtualizationType", - "locationName":"virtualizationType" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the image.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "Hypervisor":{ - "shape":"HypervisorType", - "documentation":"

The hypervisor type of the image.

", - "queryName":"Hypervisor", - "locationName":"hypervisor" - } - }, - "documentation":"

Describes an image.

" - }, - "ImageAttribute":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId", - "queryName":"ImageId" - }, - "LaunchPermissions":{ - "shape":"LaunchPermissionList", - "documentation":"

One or more launch permissions.

", - "locationName":"launchPermission", - "queryName":"LaunchPermission" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

One or more product codes.

", - "locationName":"productCodes", - "queryName":"ProductCodes" - }, - "KernelId":{ - "shape":"AttributeValue", - "documentation":"

The kernel ID.

", - "locationName":"kernel", - "queryName":"Kernel" - }, - "RamdiskId":{ - "shape":"AttributeValue", - "documentation":"

The RAM disk ID.

", - "locationName":"ramdisk", - "queryName":"Ramdisk" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the AMI.

", - "queryName":"Description", - "locationName":"description" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "queryName":"SriovNetSupport", - "locationName":"sriovNetSupport" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping", - "queryName":"BlockDeviceMapping" - } - }, - "documentation":"

Describes an image attribute.

" - }, - "ImageAttributeName":{ - "type":"string", - "enum":[ - "description", - "kernel", - "ramdisk", - "launchPermission", - "productCodes", - "blockDeviceMapping" - ] - }, - "ImageIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ImageId" - }, - "queryFlattened":true - }, - "ImageList":{ - "type":"list", - "member":{ - "shape":"Image", - "locationName":"item" - }, - "queryFlattened":true - }, - "ImageState":{ - "type":"string", - "enum":[ - "available", - "deregistered" - ] - }, - "ImageTypeValues":{ - "type":"string", - "enum":[ - "machine", - "kernel", - "ramdisk" - ] - }, - "ImportInstanceLaunchSpecification":{ - "type":"structure", - "members":{ - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the instance.

", - "queryName":"Architecture", - "locationName":"architecture" - }, - "GroupNames":{ - "shape":"SecurityGroupStringList", - "documentation":"

One or more security group names.

", - "locationName":"GroupName", - "queryName":"GroupName" - }, - "AdditionalInfo":{ - "shape":"String", - "queryName":"AdditionalInfo", - "locationName":"additionalInfo" - }, - "UserData":{ - "shape":"String", - "documentation":"

User data to be made available to the instance.

", - "queryName":"UserData", - "locationName":"userData" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

", - "queryName":"InstanceType", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"Placement", - "queryName":"Placement", - "locationName":"placement" - }, - "Monitoring":{ - "shape":"Boolean", - "queryName":"Monitoring", - "locationName":"monitoring" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance\n into.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"ShutdownBehavior", - "documentation":"

Indicates whether an instance stops or terminates when you initiate\n shutdown from the instance (using the operating system command for system shutdown).

", - "queryName":"InstanceInitiatedShutdownBehavior", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] Optionally, you can use this parameter to assign the\n instance a specific available IP address from the IP address range of\n the subnet.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - } - } - }, - "ImportInstanceRequest":{ - "type":"structure", - "required":["Platform"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the instance being imported.

", - "queryName":"Description", - "locationName":"description" - }, - "LaunchSpecification":{ - "shape":"ImportInstanceLaunchSpecification", - "documentation":"

", - "queryName":"LaunchSpecification", - "locationName":"launchSpecification" - }, - "DiskImages":{ - "shape":"DiskImageList", - "locationName":"diskImage", - "queryName":"DiskImage" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The instance operating system.

", - "queryName":"Platform", - "locationName":"platform" - } - } - }, - "ImportInstanceResult":{ - "type":"structure", - "members":{ - "ConversionTask":{ - "shape":"ConversionTask", - "queryName":"ConversionTask", - "locationName":"conversionTask" - } - } - }, - "ImportInstanceTaskDetails":{ - "type":"structure", - "required":["Volumes"], - "members":{ - "Volumes":{ - "shape":"ImportInstanceVolumeDetailSet", - "queryName":"Volumes", - "locationName":"volumes" - }, - "InstanceId":{ - "shape":"String", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The instance operating system.

", - "queryName":"Platform", - "locationName":"platform" - }, - "Description":{ - "shape":"String", - "queryName":"Description", - "locationName":"description" - } - } - }, - "ImportInstanceVolumeDetailItem":{ - "type":"structure", - "required":[ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume", - "Status" - ], - "members":{ - "BytesConverted":{ - "shape":"Long", - "documentation":"

The number of bytes converted so far.

", - "queryName":"BytesConverted", - "locationName":"bytesConverted" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the resulting instance will reside.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "Image":{ - "shape":"DiskImageDescription", - "documentation":"

The image.

", - "queryName":"Image", - "locationName":"image" - }, - "Volume":{ - "shape":"DiskImageVolumeDescription", - "documentation":"

The volume.

", - "queryName":"Volume", - "locationName":"volume" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the import of this particular disk image.

", - "queryName":"Status", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status information or errors related to the disk image.

", - "queryName":"StatusMessage", - "locationName":"statusMessage" - }, - "Description":{ - "shape":"String", - "queryName":"Description", - "locationName":"description" - } - }, - "documentation":"

Describes an import volume task.

" - }, - "ImportInstanceVolumeDetailSet":{ - "type":"list", - "member":{ - "shape":"ImportInstanceVolumeDetailItem", - "locationName":"item" - }, - "queryFlattened":true - }, - "ImportKeyPairRequest":{ - "type":"structure", - "required":[ - "KeyName", - "PublicKeyMaterial" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

A unique name for the key pair.

", - "queryName":"KeyName", - "locationName":"keyName" - }, - "PublicKeyMaterial":{ - "shape":"Blob", - "documentation":"

The public key. You must base64 encode the public key material before sending it to AWS.

", - "queryName":"PublicKeyMaterial", - "locationName":"publicKeyMaterial" - } - } - }, - "ImportKeyPairResult":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The key pair name you provided.

", - "queryName":"KeyName", - "locationName":"keyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

The MD5 public key fingerprint as specified in section 4 of RFC 4716.

", - "queryName":"KeyFingerprint", - "locationName":"keyFingerprint" - } - } - }, - "ImportVolumeRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the resulting Amazon EBS\n volume.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "Image":{ - "shape":"DiskImageDetail", - "queryName":"Image", - "locationName":"image" - }, - "Description":{ - "shape":"String", - "documentation":"

An optional description for the volume being imported.

", - "queryName":"Description", - "locationName":"description" - }, - "Volume":{ - "shape":"VolumeDetail", - "queryName":"Volume", - "locationName":"volume" - } - } - }, - "ImportVolumeResult":{ - "type":"structure", - "members":{ - "ConversionTask":{ - "shape":"ConversionTask", - "queryName":"ConversionTask", - "locationName":"conversionTask" - } - } - }, - "ImportVolumeTaskDetails":{ - "type":"structure", - "required":[ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume" - ], - "members":{ - "BytesConverted":{ - "shape":"Long", - "documentation":"

The number of bytes converted so far.

", - "queryName":"BytesConverted", - "locationName":"bytesConverted" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the resulting volume will reside.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "Description":{ - "shape":"String", - "documentation":"

The description you provided when starting the import volume task.

", - "queryName":"Description", - "locationName":"description" - }, - "Image":{ - "shape":"DiskImageDescription", - "documentation":"

The image.

", - "queryName":"Image", - "locationName":"image" - }, - "Volume":{ - "shape":"DiskImageVolumeDescription", - "documentation":"

The volume.

", - "queryName":"Volume", - "locationName":"volume" - } - }, - "documentation":"

Describes an import volume task.

" - }, - "Instance":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI used to launch the instance.

", - "locationName":"imageId", - "queryName":"ImageId" - }, - "State":{ - "shape":"InstanceState", - "documentation":"

The current state of the instance.

", - "locationName":"instanceState", - "queryName":"InstanceState" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name assigned to the instance. This DNS name can only be used\n\t\t\t\tinside the Amazon EC2 network. This name is not available until the instance enters\n\t\t\t\tthe running state.

", - "locationName":"privateDnsName", - "queryName":"PrivateDnsName" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name assigned to the instance.\n\t\t\t\tThis name is not available until the instance enters the running state.

", - "locationName":"dnsName", - "queryName":"DnsName" - }, - "StateTransitionReason":{ - "shape":"String", - "documentation":"

The reason for the most recent state transition. This might be an empty string.

", - "locationName":"reason", - "queryName":"Reason" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair, if this instance was launched with an associated key pair.

", - "locationName":"keyName", - "queryName":"KeyName" - }, - "AmiLaunchIndex":{ - "shape":"Integer", - "documentation":"

The AMI launch index, which can be used to find this instance in the launch group.

", - "locationName":"amiLaunchIndex", - "queryName":"AmiLaunchIndex" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

The product codes attached to this instance.

", - "locationName":"productCodes", - "queryName":"ProductCodes" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

", - "locationName":"instanceType", - "queryName":"InstanceType" - }, - "LaunchTime":{ - "shape":"DateTime", - "documentation":"

The time the instance was launched.

", - "locationName":"launchTime", - "queryName":"LaunchTime" - }, - "Placement":{ - "shape":"Placement", - "documentation":"

The location where the instance launched.

", - "locationName":"placement", - "queryName":"Placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The kernel associated with this instance.

", - "locationName":"kernelId", - "queryName":"KernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The RAM disk associated with this instance.

", - "locationName":"ramdiskId", - "queryName":"RamdiskId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The value is Windows for Windows instances; otherwise blank.

", - "locationName":"platform", - "queryName":"Platform" - }, - "Monitoring":{ - "shape":"Monitoring", - "documentation":"

The monitoring information for the instance.

", - "locationName":"monitoring", - "queryName":"Monitoring" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which the instance is running.

", - "locationName":"subnetId", - "queryName":"SubnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC in which the instance is running.

", - "locationName":"vpcId", - "queryName":"VpcId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address assigned to the instance.

", - "locationName":"privateIpAddress", - "queryName":"PrivateIpAddress" - }, - "PublicIpAddress":{ - "shape":"String", - "documentation":"

The public IP address assigned to the instance.

", - "locationName":"ipAddress", - "queryName":"IpAddress" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

The reason for the most recent state transition.

", - "queryName":"StateReason", - "locationName":"stateReason" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the image.

", - "queryName":"Architecture", - "locationName":"architecture" - }, - "RootDeviceType":{ - "shape":"DeviceType", - "documentation":"

The root device type used by the AMI. The AMI can use an Amazon EBS volume\n or an instance store volume.

", - "queryName":"RootDeviceType", - "locationName":"rootDeviceType" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The root device name (for example, /dev/sda1).

", - "queryName":"RootDeviceName", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingList", - "documentation":"

Any block device mapping entries for the instance.

", - "locationName":"blockDeviceMapping", - "queryName":"BlockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"VirtualizationType", - "documentation":"

The virtualization type of the instance.

", - "queryName":"VirtualizationType", - "locationName":"virtualizationType" - }, - "InstanceLifecycle":{ - "shape":"InstanceLifecycleType", - "documentation":"

Indicates whether this is a Spot Instance.

", - "queryName":"InstanceLifecycle", - "locationName":"instanceLifecycle" - }, - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "queryName":"SpotInstanceRequestId", - "locationName":"spotInstanceRequestId" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

The idempotency token you provided when you launched the instance.

", - "queryName":"ClientToken", - "locationName":"clientToken" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the instance.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "SecurityGroups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups for the instance.

", - "locationName":"groupSet", - "queryName":"GroupSet" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Specifies whether to enable an instance launched in a VPC to\n\t\t\t\tperform NAT. This controls whether source/destination checking\n\t\t\t\tis enabled on the instance. A value of true means\n\t\t\t\tchecking is enabled, and false means checking is\n\t\t\t\tdisabled. The value must be false for the instance\n\t\t\t\tto perform NAT. For more information, see NAT\n\t\t\t\tInstances in the Amazon Virtual Private Cloud User Guide.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - }, - "Hypervisor":{ - "shape":"HypervisorType", - "documentation":"

The hypervisor type of the instance.

", - "queryName":"Hypervisor", - "locationName":"hypervisor" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceList", - "documentation":"

[EC2-VPC] One or more network interfaces for the instance.

", - "locationName":"networkInterfaceSet", - "queryName":"NetworkInterfaceSet" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfile", - "documentation":"

The IAM instance profile associated with the instance.

", - "queryName":"IamInstanceProfile", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization\n\t\t\t\tprovides dedicated throughput to Amazon EBS and an optimized\n\t\t\t\tconfiguration stack to provide optimal I/O performance. This optimization\n\t\t\t\tisn't available with all instance types. Additional usage charges apply when\n\t\t\t\tusing an EBS Optimized instance.

", - "queryName":"EbsOptimized", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Specifies whether enhanced networking is enabled.

", - "queryName":"SriovNetSupport", - "locationName":"sriovNetSupport" - } - }, - "documentation":"

Describes an instance.

" - }, - "InstanceAttribute":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "InstanceType":{ - "shape":"AttributeValue", - "documentation":"

The instance type.

", - "queryName":"InstanceType", - "locationName":"instanceType" - }, - "KernelId":{ - "shape":"AttributeValue", - "documentation":"

The kernel ID.

", - "locationName":"kernel", - "queryName":"Kernel" - }, - "RamdiskId":{ - "shape":"AttributeValue", - "documentation":"

The RAM disk ID.

", - "locationName":"ramdisk", - "queryName":"Ramdisk" - }, - "UserData":{ - "shape":"AttributeValue", - "documentation":"

The Base64-encoded MIME user data.

", - "queryName":"UserData", - "locationName":"userData" - }, - "DisableApiTermination":{ - "shape":"AttributeBooleanValue", - "documentation":"

If the value is true, you can't terminate the instance through the Amazon EC2\n\t\t\t\tconsole, CLI, or API; otherwise, you can.

", - "queryName":"DisableApiTermination", - "locationName":"disableApiTermination" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"AttributeValue", - "documentation":"

Indicates whether an instance stops or terminates when you initiate\n\t\t\t\tshutdown from the instance (using the operating system command for system shutdown).

", - "queryName":"InstanceInitiatedShutdownBehavior", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "RootDeviceName":{ - "shape":"AttributeValue", - "documentation":"

The name of the root device (for example, /dev/sda1).

", - "queryName":"RootDeviceName", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingList", - "documentation":"

The block device mapping of the instance.

", - "locationName":"blockDeviceMapping", - "queryName":"BlockDeviceMapping" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "queryName":"ProductCodes", - "locationName":"productCodes" - }, - "EbsOptimized":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the instance is optimized for EBS I/O.

", - "queryName":"EbsOptimized", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "queryName":"SriovNetSupport", - "locationName":"sriovNetSupport" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled.\n This value must be false for a NAT instance to perform NAT.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - } - }, - "documentation":"

Describes an instance attribute.

" - }, - "InstanceAttributeName":{ - "type":"string", - "enum":[ - "instanceType", - "kernel", - "ramdisk", - "userData", - "disableApiTermination", - "instanceInitiatedShutdownBehavior", - "rootDeviceName", - "blockDeviceMapping", - "productCodes", - "sourceDestCheck", - "groupSet", - "ebsOptimized", - "sriovNetSupport" - ] - }, - "InstanceBlockDeviceMapping":{ - "type":"structure", - "members":{ - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "queryName":"DeviceName", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsInstanceBlockDevice", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "queryName":"Ebs", - "locationName":"ebs" - } - }, - "documentation":"

Describes a block device mapping.

" - }, - "InstanceBlockDeviceMappingList":{ - "type":"list", - "member":{ - "shape":"InstanceBlockDeviceMapping", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceBlockDeviceMappingSpecification":{ - "type":"structure", - "members":{ - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "queryName":"DeviceName", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsInstanceBlockDeviceSpecification", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "queryName":"Ebs", - "locationName":"ebs" - }, - "VirtualName":{ - "shape":"String", - "documentation":"

The virtual device name.

", - "queryName":"VirtualName", - "locationName":"virtualName" - }, - "NoDevice":{ - "shape":"String", - "documentation":"

suppress the specified device included in the block device mapping.

", - "queryName":"NoDevice", - "locationName":"noDevice" - } - }, - "documentation":"

Describes a block device mapping entry.

" - }, - "InstanceBlockDeviceMappingSpecificationList":{ - "type":"list", - "member":{ - "shape":"InstanceBlockDeviceMappingSpecification", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceCount":{ - "type":"structure", - "members":{ - "State":{ - "shape":"ListingState", - "documentation":"

The states of the listed Reserved Instances.

", - "queryName":"State", - "locationName":"state" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

he number of listed Reserved Instances in the state specified by the state.

", - "queryName":"InstanceCount", - "locationName":"instanceCount" - } - }, - "documentation":"

Describes a Reserved Instance listing state.

" - }, - "InstanceCountList":{ - "type":"list", - "member":{ - "shape":"InstanceCount", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceExportDetails":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the resource being exported.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "TargetEnvironment":{ - "shape":"ExportEnvironment", - "documentation":"

The target virtualization environment.

", - "queryName":"TargetEnvironment", - "locationName":"targetEnvironment" - } - }, - "documentation":"

Describes an instance export task.

" - }, - "InstanceIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"InstanceId" - }, - "queryFlattened":true - }, - "InstanceLifecycleType":{ - "type":"string", - "enum":["spot"] - }, - "InstanceList":{ - "type":"list", - "member":{ - "shape":"Instance", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceMonitoring":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "Monitoring":{ - "shape":"Monitoring", - "documentation":"

The monitoring information.

", - "locationName":"monitoring", - "queryName":"Monitoring" - } - }, - "documentation":"

Describes the monitoring information of the instance.

" - }, - "InstanceMonitoringList":{ - "type":"list", - "member":{ - "shape":"InstanceMonitoring", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceNetworkInterface":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description.

", - "queryName":"Description", - "locationName":"description" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that created the network interface.

", - "queryName":"OwnerId", - "locationName":"ownerId" - }, - "Status":{ - "shape":"NetworkInterfaceStatus", - "documentation":"

The status of the network interface.

", - "queryName":"Status", - "locationName":"status" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The IP address of the network interface within the subnet.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "queryName":"PrivateDnsName", - "locationName":"privateDnsName" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Indicates whether to validate network traffic to or from this network interface.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups.

", - "locationName":"groupSet", - "queryName":"GroupSet" - }, - "Attachment":{ - "shape":"InstanceNetworkInterfaceAttachment", - "documentation":"

The network interface attachment.

", - "queryName":"Attachment", - "locationName":"attachment" - }, - "Association":{ - "shape":"InstanceNetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP associated with the network interface.

", - "queryName":"Association", - "locationName":"association" - }, - "PrivateIpAddresses":{ - "shape":"InstancePrivateIpAddressList", - "documentation":"

The private IP addresses associated with the network interface.

", - "locationName":"privateIpAddressesSet", - "queryName":"PrivateIpAddressesSet" - } - }, - "documentation":"

Describes a network interface.

" - }, - "InstanceNetworkInterfaceAssociation":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The address of the Elastic IP address bound to the network interface.

", - "queryName":"PublicIp", - "locationName":"publicIp" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name.

", - "queryName":"PublicDnsName", - "locationName":"publicDnsName" - }, - "IpOwnerId":{ - "shape":"String", - "documentation":"

The ID of the owner of the Elastic IP address.

", - "queryName":"IpOwnerId", - "locationName":"ipOwnerId" - } - }, - "documentation":"

Describes association information for an Elastic IP address.

" - }, - "InstanceNetworkInterfaceAttachment":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "queryName":"AttachmentId", - "locationName":"attachmentId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device on the instance for the network interface attachment.

", - "queryName":"DeviceIndex", - "locationName":"deviceIndex" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "queryName":"Status", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "queryName":"AttachTime", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a network interface attachment.

" - }, - "InstanceNetworkInterfaceList":{ - "type":"list", - "member":{ - "shape":"InstanceNetworkInterface", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceNetworkInterfaceSpecification":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device on the instance for the network interface attachment.

", - "queryName":"DeviceIndex", - "locationName":"deviceIndex" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet associated with the network string.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the network interface.

", - "queryName":"Description", - "locationName":"description" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address of the network interface.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

The IDs of the security groups for the network interface.

", - "locationName":"SecurityGroupId", - "queryName":"SecurityGroupId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

If set to true, the interface is deleted when the instance is terminated.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressSpecificationList", - "documentation":"

One or more private IP addresses to assign to the network interface.

", - "locationName":"privateIpAddressesSet" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary private IP addresses.

", - "queryName":"SecondaryPrivateIpAddressCount", - "locationName":"secondaryPrivateIpAddressCount" - }, - "AssociatePublicIpAddress":{ - "shape":"Boolean", - "documentation":"

Indicates whether to auto-assign a public IP address to an instance in a VPC. This public IP address can be assigned to the network interface for eth0 only when you launch the instance. You must create the network interface instead of using an existing network interface for eth0, and you must not specify more than one network interface.

", - "queryName":"AssociatePublicIpAddress", - "locationName":"associatePublicIpAddress" - } - }, - "documentation":"

Describes a network interface.

" - }, - "InstanceNetworkInterfaceSpecificationList":{ - "type":"list", - "member":{ - "shape":"InstanceNetworkInterfaceSpecification", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstancePrivateIpAddress":{ - "type":"structure", - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address of the network interface.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "queryName":"PrivateDnsName", - "locationName":"privateDnsName" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether this IP address is the primary private IP address \n\t\t of the network interface.

", - "queryName":"Primary", - "locationName":"primary" - }, - "Association":{ - "shape":"InstanceNetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP address for the network interface.

", - "queryName":"Association", - "locationName":"association" - } - }, - "documentation":"

Describes a private IP address.

" - }, - "InstancePrivateIpAddressList":{ - "type":"list", - "member":{ - "shape":"InstancePrivateIpAddress", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceState":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"Integer", - "documentation":"

The low byte represents the state. The high byte is an opaque internal value and\n\t\t\t\tshould be ignored.

\n\t\t
    \n\t\t
  • 0 : pending

  • \n\t\t
  • 16 : running

  • \n\t\t
  • 32 : shutting-down

  • \n\t\t
  • 48 : terminated

  • \n\t\t
  • 64 : stopping

  • \n\t\t
  • 80 : stopped

  • \n\t\t
", - "locationName":"code", - "queryName":"Code" - }, - "Name":{ - "shape":"InstanceStateName", - "documentation":"

The current state of the instance.

", - "locationName":"name", - "queryName":"Name" - } - }, - "documentation":"

Describes the current state of the instance.

" - }, - "InstanceStateChange":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "CurrentState":{ - "shape":"InstanceState", - "documentation":"

The current state of the instance.

", - "locationName":"currentState", - "queryName":"CurrentState" - }, - "PreviousState":{ - "shape":"InstanceState", - "documentation":"

The previous state of the instance.

", - "locationName":"previousState", - "queryName":"PreviousState" - } - }, - "documentation":"

Describes an instance state change.

" - }, - "InstanceStateChangeList":{ - "type":"list", - "member":{ - "shape":"InstanceStateChange", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceStateName":{ - "type":"string", - "enum":[ - "pending", - "running", - "shutting-down", - "terminated", - "stopping", - "stopped" - ] - }, - "InstanceStatus":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the instance.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "Events":{ - "shape":"InstanceStatusEventList", - "documentation":"

Extra information regarding events associated with the instance.

", - "locationName":"eventsSet", - "queryName":"EventsSet" - }, - "InstanceState":{ - "shape":"InstanceState", - "documentation":"

The intended state of the instance.\n\t\t\t\tDescribeInstanceStatus requires that an\n\t\t\t\tinstance be in the running state.

", - "queryName":"InstanceState", - "locationName":"instanceState" - }, - "SystemStatus":{ - "shape":"InstanceStatusSummary", - "documentation":"

Reports impaired functionality that stems from issues related to the systems that\n\t\t\t\tsupport an instance, such as hardware failures and network connectivity problems.

", - "queryName":"SystemStatus", - "locationName":"systemStatus" - }, - "InstanceStatus":{ - "shape":"InstanceStatusSummary", - "documentation":"

Reports impaired functionality that stems from issues internal to the instance,\n\t\t\t\tsuch as impaired reachability.

", - "queryName":"InstanceStatus", - "locationName":"instanceStatus" - } - }, - "documentation":"

Describes the status of an instance.

" - }, - "InstanceStatusDetails":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"StatusName", - "documentation":"

The type of instance status.

", - "queryName":"Name", - "locationName":"name" - }, - "Status":{ - "shape":"StatusType", - "documentation":"

The status.

", - "queryName":"Status", - "locationName":"status" - }, - "ImpairedSince":{ - "shape":"DateTime", - "documentation":"

The time when a status check failed. For an instance that was launched and\n\t\t\t\timpaired, this is the time when the instance was launched.

", - "queryName":"ImpairedSince", - "locationName":"impairedSince" - } - }, - "documentation":"

Describes the instance status.

" - }, - "InstanceStatusDetailsList":{ - "type":"list", - "member":{ - "shape":"InstanceStatusDetails", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceStatusEvent":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"EventCode", - "documentation":"

The associated code of the event.

", - "queryName":"Code", - "locationName":"code" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the event.

", - "queryName":"Description", - "locationName":"description" - }, - "NotBefore":{ - "shape":"DateTime", - "documentation":"

The earliest scheduled start time for the event.

", - "queryName":"NotBefore", - "locationName":"notBefore" - }, - "NotAfter":{ - "shape":"DateTime", - "documentation":"

The latest scheduled end time for the event.

", - "queryName":"NotAfter", - "locationName":"notAfter" - } - }, - "documentation":"

Describes an instance event.

" - }, - "InstanceStatusEventList":{ - "type":"list", - "member":{ - "shape":"InstanceStatusEvent", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceStatusList":{ - "type":"list", - "member":{ - "shape":"InstanceStatus", - "locationName":"item" - }, - "queryFlattened":true - }, - "InstanceStatusSummary":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"SummaryStatus", - "documentation":"

The status.

", - "queryName":"Status", - "locationName":"status" - }, - "Details":{ - "shape":"InstanceStatusDetailsList", - "documentation":"

The system instance health or application instance health.

", - "queryName":"Details", - "locationName":"details" - } - }, - "documentation":"

Describes the status of an instance.

" - }, - "InstanceType":{ - "type":"string", - "enum":[ - "t1.micro", - "m1.small", - "m1.medium", - "m1.large", - "m1.xlarge", - "m3.medium", - "m3.large", - "m3.xlarge", - "m3.2xlarge", - "m2.xlarge", - "m2.2xlarge", - "m2.4xlarge", - "cr1.8xlarge", - "i2.xlarge", - "i2.2xlarge", - "i2.4xlarge", - "i2.8xlarge", - "hi1.4xlarge", - "hs1.8xlarge", - "c1.medium", - "c1.xlarge", - "c3.large", - "c3.xlarge", - "c3.2xlarge", - "c3.4xlarge", - "c3.8xlarge", - "cc1.4xlarge", - "cc2.8xlarge", - "g2.2xlarge", - "cg1.4xlarge", - "r3.large", - "r3.xlarge", - "r3.2xlarge", - "r3.4xlarge", - "r3.8xlarge" - ] - }, - "InstanceTypeList":{ - "type":"list", - "member":{"shape":"InstanceType"}, - "queryFlattened":true - }, - "Integer":{"type":"integer"}, - "InternetGateway":{ - "type":"structure", - "members":{ - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "queryName":"InternetGatewayId", - "locationName":"internetGatewayId" - }, - "Attachments":{ - "shape":"InternetGatewayAttachmentList", - "documentation":"

Any VPCs attached to the Internet gateway.

", - "locationName":"attachmentSet", - "queryName":"AttachmentSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the Internet gateway.

", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes an Internet gateway.

" - }, - "InternetGatewayAttachment":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - }, - "State":{ - "shape":"AttachmentStatus", - "documentation":"

The current state of the attachment.

", - "queryName":"State", - "locationName":"state" - } - }, - "documentation":"

Describes the attachment of a VPC to an Internet gateway.

" - }, - "InternetGatewayAttachmentList":{ - "type":"list", - "member":{ - "shape":"InternetGatewayAttachment", - "locationName":"item" - }, - "queryFlattened":true - }, - "InternetGatewayList":{ - "type":"list", - "member":{ - "shape":"InternetGateway", - "locationName":"item" - }, - "queryFlattened":true - }, - "IpPermission":{ - "type":"structure", - "members":{ - "IpProtocol":{ - "shape":"String", - "documentation":"

The protocol.

\n\t\t

When you call DescribeSecurityGroups, the protocol value\n\t\t\t\treturned is the number. Exception: For TCP, UDP, and ICMP, the\n\t\t\t\tvalue returned is the name (for example, tcp,\n\t\t\t\tudp, or icmp). For a list of\n\t\t\t\tprotocol numbers, see Protocol Numbers.

", - "locationName":"ipProtocol", - "queryName":"IpProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. A\n\t\t\t\tvalue of -1 indicates all ICMP types.

", - "locationName":"fromPort", - "queryName":"FromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code. A value of -1\n\t\t\t\tindicates all ICMP codes for the specified ICMP type.

", - "locationName":"toPort", - "queryName":"ToPort" - }, - "UserIdGroupPairs":{ - "shape":"UserIdGroupPairList", - "documentation":"

One or more security group and AWS account ID pairs.

", - "locationName":"groups", - "queryName":"Groups" - }, - "IpRanges":{ - "shape":"IpRangeList", - "documentation":"

One or more IP ranges.

", - "locationName":"ipRanges", - "queryName":"IpRanges" - } - }, - "documentation":"

Describes a security group rule.

" - }, - "IpPermissionList":{ - "type":"list", - "member":{ - "shape":"IpPermission", - "locationName":"item" - }, - "queryFlattened":true - }, - "IpRange":{ - "type":"structure", - "members":{ - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR range. You can either specify a CIDR range or a source security group, not both.

", - "locationName":"cidrIp", - "queryName":"CidrIp" - } - }, - "documentation":"

Describes an IP range.

" - }, - "IpRangeList":{ - "type":"list", - "member":{ - "shape":"IpRange", - "locationName":"item" - }, - "queryFlattened":true - }, - "KeyNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"KeyName" - }, - "queryFlattened":true - }, - "KeyPair":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName", - "queryName":"KeyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

The SHA-1 digest of the DER encoded private key.

", - "locationName":"keyFingerprint", - "queryName":"KeyFingerprint" - }, - "KeyMaterial":{ - "shape":"String", - "documentation":"

An unencrypted PEM encoded RSA private key.

", - "locationName":"keyMaterial", - "queryName":"KeyMaterial" - } - }, - "documentation":"

Describes a key pair.

" - }, - "KeyPairInfo":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName", - "queryName":"KeyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

If you used CreateKeyPair to create the key pair, this is the SHA-1 digest of the DER encoded private key. \n If you used ImportKeyPair to provide AWS the public key, this is the MD5 public key fingerprint as specified in section 4 of RFC4716.

", - "locationName":"keyFingerprint", - "queryName":"KeyFingerprint" - } - }, - "documentation":"

Describes a key pair.

" - }, - "KeyPairList":{ - "type":"list", - "member":{ - "shape":"KeyPairInfo", - "locationName":"item" - }, - "queryFlattened":true - }, - "LaunchPermission":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The AWS account ID.

", - "locationName":"userId", - "queryName":"UserId" - }, - "Group":{ - "shape":"PermissionGroup", - "documentation":"

The name of the group.

", - "locationName":"group", - "queryName":"Group" - } - }, - "documentation":"

Describes a launch permission.

" - }, - "LaunchPermissionList":{ - "type":"list", - "member":{ - "shape":"LaunchPermission", - "locationName":"item" - }, - "queryFlattened":true - }, - "LaunchPermissionModifications":{ - "type":"structure", - "members":{ - "Add":{ - "shape":"LaunchPermissionList", - "documentation":"

The AWS account ID to add to the list of launch permissions for the AMI.

", - "queryName":"Add" - }, - "Remove":{ - "shape":"LaunchPermissionList", - "documentation":"

The AWS account ID to remove from the list of launch permissions for the AMI.

", - "queryName":"Remove" - } - }, - "documentation":"

Describes a launch permission modification.

" - }, - "LaunchSpecification":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "queryName":"ImageId", - "locationName":"imageId" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "queryName":"KeyName", - "locationName":"keyName" - }, - "SecurityGroups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups.

", - "locationName":"groupSet", - "queryName":"GroupSet" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data to make available to the instances.

", - "queryName":"UserData", - "locationName":"userData" - }, - "AddressingType":{ - "shape":"String", - "documentation":"

", - "queryName":"AddressingType", - "locationName":"addressingType" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

", - "queryName":"InstanceType", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"SpotPlacement", - "documentation":"

The placement information for the instance.

", - "queryName":"Placement", - "locationName":"placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "queryName":"KernelId", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "queryName":"RamdiskId", - "locationName":"ramdiskId" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping", - "queryName":"BlockDeviceMapping" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which to launch the Spot Instance.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"networkInterfaceSet", - "queryName":"NetworkInterfaceSet" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "queryName":"IamInstanceProfile", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization\n\t\t\t\tprovides dedicated throughput to Amazon EBS and an optimized\n\t\t\t\tconfiguration stack to provide optimal EBS I/O performance. This\n\t\t\t\toptimization isn't available with all instance types. Additional usage\n\t\t\t\tcharges apply when using an EBS Optimized instance.

\n

Default: false

", - "queryName":"EbsOptimized", - "locationName":"ebsOptimized" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "locationName":"monitoring" - } - }, - "documentation":"

Describes the launch specification of a Spot Instance.

" - }, - "ListingState":{ - "type":"string", - "enum":[ - "available", - "sold", - "cancelled", - "pending" - ] - }, - "ListingStatus":{ - "type":"string", - "enum":[ - "active", - "pending", - "cancelled", - "closed" - ] - }, - "Long":{"type":"long"}, - "ModifyImageAttributeRequest":{ - "type":"structure", - "required":["ImageId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "queryName":"ImageId" - }, - "Attribute":{ - "shape":"String", - "documentation":"

The name of the attribute to modify.

", - "queryName":"Attribute" - }, - "OperationType":{ - "shape":"String", - "documentation":"

The operation type.

", - "queryName":"OperationType" - }, - "UserIds":{ - "shape":"UserIdStringList", - "documentation":"

One or more AWS account IDs. This is only valid when modifying the launchPermission attribute.

", - "locationName":"UserId", - "queryName":"UserId" - }, - "UserGroups":{ - "shape":"UserGroupStringList", - "documentation":"

One or more user groups. This is only valid when modifying the launchPermission attribute.

", - "locationName":"UserGroup", - "queryName":"UserGroup" - }, - "ProductCodes":{ - "shape":"ProductCodeStringList", - "documentation":"

One or more product codes. After you add a product code to an AMI, it can't be removed.\n This is only valid when modifying the productCodes attribute.

", - "locationName":"ProductCode", - "queryName":"ProductCode" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the attribute being modified. This is only valid when modifying the description attribute.

", - "queryName":"Value" - }, - "LaunchPermission":{ - "shape":"LaunchPermissionModifications", - "documentation":"

", - "queryName":"LaunchPermission" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the AMI.

", - "queryName":"Description" - } - } - }, - "ModifyInstanceAttributeRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The name of the attribute.

", - "queryName":"Attribute", - "locationName":"attribute" - }, - "Value":{ - "shape":"String", - "documentation":"

A new value for the attribute. Use only with the kernel, ramdisk,\n userData, disableApiTermination, or\n intanceInitiateShutdownBehavior attribute.

", - "queryName":"Value", - "locationName":"value" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingSpecificationList", - "documentation":"

Modifies the DeleteOnTermination attribute for volumes\n\t\t\t\tthat are currently attached. The volume must be owned by the caller. If\n\t\t\t\tno value is specified for DeleteOnTermination, the default\n\t\t\t\tis true and the volume is deleted when the instance is\n\t\t\t\tterminated.

\n\t\t\t

To add instance store volumes to an Amazon EBS-backed instance,\n\t\t\t\tyou must add them when you launch the instance. For more\n\t\t\t\tinformation, see Updating the Block Device Mapping when Launching an Instance\n\t\t\t\tin the Amazon Elastic Compute Cloud User Guide.

", - "locationName":"blockDeviceMapping", - "queryName":"BlockDeviceMapping" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Specifies whether source/destination checking is enabled.\n\t\t\t\tA value of true means that checking is enabled, and\n\t\t\t\tfalse means checking is disabled. This value\n\t\t\t\tmust be false for a NAT instance to perform NAT.

", - "queryName":"SourceDestCheck" - }, - "DisableApiTermination":{ - "shape":"AttributeBooleanValue", - "documentation":"

Specifies whether to disable the ability to terminate the instance using the Amazon EC2 console, CLI, and API.

", - "queryName":"DisableApiTermination", - "locationName":"disableApiTermination" - }, - "InstanceType":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance type to the specified value. For more information, see\n\t\t\t\tInstance Types.\n\t\t\t\tIf the instance type is not valid, the error returned is InvalidInstanceAttributeValue.

", - "queryName":"InstanceType", - "locationName":"instanceType" - }, - "Kernel":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance's kernel to the specified value.

", - "queryName":"Kernel", - "locationName":"kernel" - }, - "Ramdisk":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance's RAM disk to the specified value.

", - "queryName":"Ramdisk", - "locationName":"ramdisk" - }, - "UserData":{ - "shape":"BlobAttributeValue", - "documentation":"

Changes the instance's user data to the specified value.

", - "queryName":"UserData", - "locationName":"userData" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"AttributeValue", - "documentation":"

Specifies whether an instance stops or terminates when you initiate\n\t\t\t\tshutdown from the instance (using the operating system command for system shutdown).

", - "queryName":"InstanceInitiatedShutdownBehavior", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "Groups":{ - "shape":"GroupIdStringList", - "documentation":"

[EC2-VPC] Changes the security groups of the instance. You must specify\n\t\t\t\tat least one security group, even if it's just the default security\n\t\t\t\tgroup for the VPC. You must specify the security group ID, not the\n\t\t\t\tsecurity group name.

\n\t\t\t

For example, if you want the instance to be in sg-1a1a1a1a and\n\t\t\t\tsg-9b9b9b9b, specify GroupId.1=sg-1a1a1a1a and\n\t\t\t\tGroupId.2=sg-9b9b9b9b.

", - "locationName":"GroupId", - "queryName":"GroupId" - }, - "EbsOptimized":{ - "shape":"AttributeBooleanValue", - "documentation":"

Specifies whether the instance is optimized for EBS I/O. This optimization\n\t\t\t\tprovides dedicated throughput to Amazon EBS and an optimized\n\t\t\t\tconfiguration stack to provide optimal EBS I/O performance. This\n\t\t\t\toptimization isn't available with all instance types. Additional usage\n\t\t\t\tcharges apply when using an EBS Optimized instance.

", - "queryName":"EbsOptimized", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "documentation":"

Set to simple to enable enhanced networking for the instance.

\n

There is no way to disable enhanced networking at this time.

\n

This option is supported only for HVM instances. Specifying this option\n with a PV instance can make it unreachable.

", - "queryName":"SriovNetSupport", - "locationName":"sriovNetSupport" - } - } - }, - "ModifyNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the network interface.

", - "queryName":"Description", - "locationName":"description" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled.\n\t\t\t\tA value of true means checking\n\t\t\t\tis enabled, and false means checking is disabled. This value\n\t\t\t\tmust be false for a NAT instance to perform NAT. For more\n\t\t\t\tinformation, see NAT\n\t\t\t\tInstances in the Amazon Virtual Private Cloud User Guide.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

Changes the security groups for the network interface. The new\n\t\t\t\tset of groups you specify replaces the current set. You must specify at\n\t\t\t\tleast one group, even if it's just the default security group in the\n\t\t\t\tVPC. You must specify the ID of the security group, not the name.

", - "locationName":"SecurityGroupId", - "queryName":"SecurityGroupId" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachmentChanges", - "documentation":"

The ID of the interface attachment.

", - "queryName":"Attachment", - "locationName":"attachment" - } - } - }, - "ModifyReservedInstancesRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesIds", - "TargetConfigurations" - ], - "members":{ - "ClientToken":{ - "shape":"String", - "documentation":"

A unique, case-sensitive token you provide to ensure idempotency of your modification request.

", - "queryName":"ClientToken", - "locationName":"clientToken" - }, - "ReservedInstancesIds":{ - "shape":"ReservedInstancesIdStringList", - "documentation":"

The IDs of the Reserved Instances to modify.

", - "locationName":"ReservedInstancesId", - "queryName":"ReservedInstancesId" - }, - "TargetConfigurations":{ - "shape":"ReservedInstancesConfigurationList", - "documentation":"

The configuration settings for the Reserved Instances to modify.

", - "locationName":"ReservedInstancesConfigurationSetItemType", - "queryName":"ReservedInstancesConfigurationSetItemType" - } - } - }, - "ModifyReservedInstancesResult":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationId":{ - "shape":"String", - "documentation":"

The ID for the modification.

", - "queryName":"ReservedInstancesModificationId", - "locationName":"reservedInstancesModificationId" - } - } - }, - "ModifySnapshotAttributeRequest":{ - "type":"structure", - "required":["SnapshotId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "queryName":"SnapshotId" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The snapshot attribute to modify.

", - "queryName":"Attribute" - }, - "OperationType":{ - "shape":"String", - "documentation":"

The type of operation to perform to the attribute.

", - "queryName":"OperationType" - }, - "UserIds":{ - "shape":"UserIdStringList", - "documentation":"

The account ID to modify for the snapshot.

", - "locationName":"UserId", - "queryName":"UserId" - }, - "GroupNames":{ - "shape":"GroupNameStringList", - "documentation":"

The group to modify for the snapshot.

", - "locationName":"UserGroup", - "queryName":"UserGroup" - }, - "CreateVolumePermission":{ - "shape":"CreateVolumePermissionModifications", - "documentation":"

A JSON representation of the snapshot attribute modification.

", - "queryName":"CreateVolumePermission" - } - } - }, - "ModifyVolumeAttributeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "queryName":"VolumeId" - }, - "AutoEnableIO":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume should be auto-enabled for I/O operations.

", - "queryName":"AutoEnableIO" - } - } - }, - "ModifyVpcAttributeRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId", - "queryName":"VpcId" - }, - "EnableDnsSupport":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the DNS resolution is supported for the VPC. If this attribute is\n false, the Amazon provided DNS service in the VPC that resolves public DNS\n hostnames to IP addresses is not enabled. If this attribute is true, queries to\n the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address\n at the base of the VPC network range \"plus two\" will succeed.

", - "queryName":"EnableDnsSupport" - }, - "EnableDnsHostnames":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the instances launched in the VPC get DNS\n\t\t\t\thostnames. If this attribute is true, instances in the VPC\n\t\t\t\tget DNS hostnames; otherwise, they do not.

\n

You can only set enableDnsHostnames to true if you also\n\t\t\t\tset the EnableDnsSupport attribute to true.

", - "queryName":"EnableDnsHostnames" - } - } - }, - "MonitorInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - } - } - }, - "MonitorInstancesResult":{ - "type":"structure", - "members":{ - "InstanceMonitorings":{ - "shape":"InstanceMonitoringList", - "documentation":"

Monitoring information for one or more instances.

", - "locationName":"instancesSet", - "queryName":"InstancesSet" - } - } - }, - "Monitoring":{ - "type":"structure", - "members":{ - "State":{ - "shape":"MonitoringState", - "documentation":"

Indicates whether monitoring is enabled for the instance.

", - "locationName":"state", - "queryName":"State" - } - }, - "documentation":"

Describes the monitoring for the instance.

" - }, - "MonitoringState":{ - "type":"string", - "enum":[ - "disabled", - "enabled", - "pending" - ] - }, - "NetworkAcl":{ - "type":"structure", - "members":{ - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "queryName":"NetworkAclId", - "locationName":"networkAclId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC for the network ACL.

", - "queryName":"VpcId", - "locationName":"vpcId" - }, - "IsDefault":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the default network ACL for the VPC.

", - "locationName":"default", - "queryName":"Default" - }, - "Entries":{ - "shape":"NetworkAclEntryList", - "documentation":"

One or more entries (rules) in the network ACL.

", - "locationName":"entrySet", - "queryName":"EntrySet" - }, - "Associations":{ - "shape":"NetworkAclAssociationList", - "documentation":"

Any associations between the network ACL and one or more subnets

", - "locationName":"associationSet", - "queryName":"AssociationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the network ACL.

", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes a network ACL.

" - }, - "NetworkAclAssociation":{ - "type":"structure", - "members":{ - "NetworkAclAssociationId":{ - "shape":"String", - "documentation":"

The ID of the association between a network ACL and a subnet.

", - "queryName":"NetworkAclAssociationId", - "locationName":"networkAclAssociationId" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "queryName":"NetworkAclId", - "locationName":"networkAclId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "queryName":"SubnetId", - "locationName":"subnetId" - } - }, - "documentation":"

Describes an association between a network ACL and a subnet.

" - }, - "NetworkAclAssociationList":{ - "type":"list", - "member":{ - "shape":"NetworkAclAssociation", - "locationName":"item" - }, - "queryFlattened":true - }, - "NetworkAclEntry":{ - "type":"structure", - "members":{ - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number for the entry. ACL entries are processed in ascending order by rule number.

", - "queryName":"RuleNumber", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The protocol. A value of -1 means all protocols.

", - "queryName":"Protocol", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "queryName":"RuleAction", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether the rule is an egress rule (applied to traffic leaving the subnet).

", - "queryName":"Egress", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation.

", - "queryName":"CidrBlock", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code.

", - "queryName":"IcmpTypeCode", - "locationName":"icmpTypeCode" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", - "queryName":"PortRange", - "locationName":"portRange" - } - }, - "documentation":"

Describes an entry in a network ACL.

" - }, - "NetworkAclEntryList":{ - "type":"list", - "member":{ - "shape":"NetworkAclEntry", - "locationName":"item" - }, - "queryFlattened":true - }, - "NetworkAclList":{ - "type":"list", - "member":{ - "shape":"NetworkAcl", - "locationName":"item" - }, - "queryFlattened":true - }, - "NetworkInterface":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "Description":{ - "shape":"String", - "documentation":"

A description.

", - "queryName":"Description", - "locationName":"description" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the network interface.

", - "queryName":"OwnerId", - "locationName":"ownerId" - }, - "RequesterId":{ - "shape":"String", - "documentation":"

The ID of the entity that launched the instance on your behalf (for example, AWS\n\t\t\t\tManagement Console or Auto Scaling).

", - "queryName":"RequesterId", - "locationName":"requesterId" - }, - "RequesterManaged":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is being managed by AWS.

", - "queryName":"RequesterManaged", - "locationName":"requesterManaged" - }, - "Status":{ - "shape":"NetworkInterfaceStatus", - "documentation":"

The status of the network interface.

", - "queryName":"Status", - "locationName":"status" - }, - "MacAddress":{ - "shape":"String", - "documentation":"

The MAC address.

", - "queryName":"MacAddress", - "locationName":"macAddress" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The IP address of the network interface within the subnet.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "queryName":"PrivateDnsName", - "locationName":"privateDnsName" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Indicates whether traffic to or from the instance is validated.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

Any security groups for the network interface.

", - "locationName":"groupSet", - "queryName":"GroupSet" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachment", - "documentation":"

The network interface attachment.

", - "queryName":"Attachment", - "locationName":"attachment" - }, - "Association":{ - "shape":"NetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP associated with the network interface.

", - "queryName":"Association", - "locationName":"association" - }, - "TagSet":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the network interface.

", - "queryName":"TagSet", - "locationName":"tagSet" - }, - "PrivateIpAddresses":{ - "shape":"NetworkInterfacePrivateIpAddressList", - "documentation":"

The private IP addresses associated with the network interface.

", - "locationName":"privateIpAddressesSet", - "queryName":"PrivateIpAddressesSet" - } - }, - "documentation":"

Describes a network interface.

" - }, - "NetworkInterfaceAssociation":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The address of the Elastic IP address bound to the network interface.

", - "queryName":"PublicIp", - "locationName":"publicIp" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name.

", - "queryName":"PublicDnsName", - "locationName":"publicDnsName" - }, - "IpOwnerId":{ - "shape":"String", - "documentation":"

The ID of the Elastic IP address owner.

", - "queryName":"IpOwnerId", - "locationName":"ipOwnerId" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

The allocation ID.

", - "queryName":"AllocationId", - "locationName":"allocationId" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID.

", - "queryName":"AssociationId", - "locationName":"associationId" - } - }, - "documentation":"

Describes association information for an Elastic IP address.

" - }, - "NetworkInterfaceAttachment":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "queryName":"AttachmentId", - "locationName":"attachmentId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "InstanceOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the instance.

", - "queryName":"InstanceOwnerId", - "locationName":"instanceOwnerId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The device index of the network interface attachment on the instance.

", - "queryName":"DeviceIndex", - "locationName":"deviceIndex" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "queryName":"Status", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The timestamp indicating when the attachment initiated.

", - "queryName":"AttachTime", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a network interface attachment.

" - }, - "NetworkInterfaceAttachmentChanges":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "queryName":"AttachmentId", - "locationName":"attachmentId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes an attachment change.

" - }, - "NetworkInterfaceIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - }, - "queryFlattened":true - }, - "NetworkInterfaceList":{ - "type":"list", - "member":{ - "shape":"NetworkInterface", - "locationName":"item" - }, - "queryFlattened":true - }, - "NetworkInterfacePrivateIpAddress":{ - "type":"structure", - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "queryName":"PrivateDnsName", - "locationName":"privateDnsName" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether this IP address is the primary private IP address of the network interface.

", - "queryName":"Primary", - "locationName":"primary" - }, - "Association":{ - "shape":"NetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP address associated with the network interface.

", - "queryName":"Association", - "locationName":"association" - } - }, - "documentation":"

Describes the private IP address of a network interface.

" - }, - "NetworkInterfacePrivateIpAddressList":{ - "type":"list", - "member":{ - "shape":"NetworkInterfacePrivateIpAddress", - "locationName":"item" - }, - "queryFlattened":true - }, - "NetworkInterfaceStatus":{ - "type":"string", - "enum":[ - "available", - "attaching", - "in-use", - "detaching" - ] - }, - "OfferingTypeValues":{ - "type":"string", - "enum":[ - "Heavy Utilization", - "Medium Utilization", - "Light Utilization" - ] - }, - "OwnerStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"Owner" - }, - "queryFlattened":true - }, - "PermissionGroup":{ - "type":"string", - "enum":["all"] - }, - "Placement":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the instance.

", - "locationName":"availabilityZone", - "queryName":"AvailabilityZone" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group the instance is in (for cluster compute instances).

", - "queryName":"GroupName", - "locationName":"groupName" - }, - "Tenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the instance (if the instance is running\n in a VPC). An instance with a tenancy of dedicated runs\n on single-tenant hardware.

", - "queryName":"Tenancy", - "locationName":"tenancy" - } - }, - "documentation":"

Describes the placement for the instance.

" - }, - "PlacementGroup":{ - "type":"structure", - "members":{ - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group.

", - "queryName":"GroupName", - "locationName":"groupName" - }, - "Strategy":{ - "shape":"PlacementStrategy", - "documentation":"

The placement strategy.

", - "queryName":"Strategy", - "locationName":"strategy" - }, - "State":{ - "shape":"PlacementGroupState", - "documentation":"

The state of the placement group.

", - "queryName":"State", - "locationName":"state" - } - }, - "documentation":"

Describes a placement group.

" - }, - "PlacementGroupList":{ - "type":"list", - "member":{ - "shape":"PlacementGroup", - "locationName":"item" - }, - "queryFlattened":true - }, - "PlacementGroupState":{ - "type":"string", - "enum":[ - "pending", - "available", - "deleting", - "deleted" - ] - }, - "PlacementGroupStringList":{ - "type":"list", - "member":{"shape":"String"}, - "queryFlattened":true - }, - "PlacementStrategy":{ - "type":"string", - "enum":["cluster"] - }, - "PlatformValues":{ - "type":"string", - "enum":["Windows"] - }, - "PortRange":{ - "type":"structure", - "members":{ - "From":{ - "shape":"Integer", - "documentation":"

The first port in the range.

", - "queryName":"From", - "locationName":"from" - }, - "To":{ - "shape":"Integer", - "documentation":"

The last port in the range.

", - "queryName":"To", - "locationName":"to" - } - }, - "documentation":"

Describes a range of ports.

" - }, - "PriceSchedule":{ - "type":"structure", - "members":{ - "Term":{ - "shape":"Long", - "documentation":"

The number of months remaining in the reservation. For example, 2 is the second \n\t\t\t\tto the last month before the capacity reservation expires.

", - "queryName":"Term", - "locationName":"term" - }, - "Price":{ - "shape":"Double", - "documentation":"

The fixed price for the term.

", - "queryName":"Price", - "locationName":"price" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency for transacting the Reserved Instance resale.\n\t\t\t\tAt this time, the only supported currency is USD.

", - "queryName":"CurrencyCode", - "locationName":"currencyCode" - }, - "Active":{ - "shape":"Boolean", - "documentation":"

The current price schedule, as determined by the term remaining for the \n\t\t\t\tReserved Instance in the listing.

\n

A specific price schedule is always in effect, \n\t\t\t\tbut only one price schedule can be active at any time. Take, for example, a \n\t\t\t\tReserved Instance listing that has five months remaining in its term. When you \n\t\t\t\tspecify price schedules for five months and two months, this means that \n\t\t\t\tschedule 1, covering the first three months of the remaining term, will be active during months 5, 4, and 3. \n\t\t\t\tThen schedule 2, covering the last two months of the term, will be active for months 2 and 1.

", - "queryName":"Active", - "locationName":"active" - } - }, - "documentation":"

Describes the price for a Reserved Instance.

" - }, - "PriceScheduleList":{ - "type":"list", - "member":{ - "shape":"PriceSchedule", - "locationName":"item" - }, - "queryFlattened":true - }, - "PriceScheduleSpecification":{ - "type":"structure", - "members":{ - "Term":{ - "shape":"Long", - "documentation":"

The number of months remaining in the reservation. For example, 2 is the second \n\t\t\t\tto the last month before the capacity reservation expires.

", - "queryName":"Term", - "locationName":"term" - }, - "Price":{ - "shape":"Double", - "documentation":"

The fixed price for the term.

", - "queryName":"Price", - "locationName":"price" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency for transacting the Reserved Instance resale.\n\t\t\t\tAt this time, the only supported currency is USD.

", - "queryName":"CurrencyCode", - "locationName":"currencyCode" - } - }, - "documentation":"

Describes the price for a Reserved Instance.

" - }, - "PriceScheduleSpecificationList":{ - "type":"list", - "member":{ - "shape":"PriceScheduleSpecification", - "locationName":"item" - }, - "queryFlattened":true - }, - "PricingDetail":{ - "type":"structure", - "members":{ - "Price":{ - "shape":"Double", - "documentation":"

The price per instance.

", - "queryName":"Price", - "locationName":"price" - }, - "Count":{ - "shape":"Integer", - "documentation":"

The number of instances available for the price.

", - "queryName":"Count", - "locationName":"count" - } - }, - "documentation":"

Describes a Reserved Instance offering.

" - }, - "PricingDetailsList":{ - "type":"list", - "member":{ - "shape":"PricingDetail", - "locationName":"item" - }, - "queryFlattened":true - }, - "PrivateIpAddressSpecification":{ - "type":"structure", - "required":["PrivateIpAddress"], - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP addresses.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether the private IP address is the primary private IP address.

", - "queryName":"Primary", - "locationName":"primary" - } - }, - "documentation":"

Describes a secondary private IP address for a network interface.

" - }, - "PrivateIpAddressSpecificationList":{ - "type":"list", - "member":{ - "shape":"PrivateIpAddressSpecification", - "locationName":"item" - }, - "queryFlattened":true - }, - "PrivateIpAddressStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"PrivateIpAddress" - }, - "queryFlattened":true - }, - "ProductCode":{ - "type":"structure", - "members":{ - "ProductCodeId":{ - "shape":"String", - "documentation":"

The product code.

", - "locationName":"productCode", - "queryName":"ProductCode" - }, - "ProductCodeType":{ - "shape":"ProductCodeValues", - "documentation":"

The type of product code.

", - "locationName":"type", - "queryName":"Type" - } - }, - "documentation":"

Describes a product code.

" - }, - "ProductCodeList":{ - "type":"list", - "member":{ - "shape":"ProductCode", - "locationName":"item" - }, - "queryFlattened":true - }, - "ProductCodeStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ProductCode" - }, - "queryFlattened":true - }, - "ProductCodeValues":{ - "type":"string", - "enum":[ - "devpay", - "marketplace" - ] - }, - "ProductDescriptionList":{ - "type":"list", - "member":{"shape":"String"}, - "queryFlattened":true - }, - "PropagatingVgw":{ - "type":"structure", - "members":{ - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway (VGW).

", - "queryName":"GatewayId", - "locationName":"gatewayId" - } - }, - "documentation":"

Describes a virtual private gateway propagating route.

" - }, - "PropagatingVgwList":{ - "type":"list", - "member":{ - "shape":"PropagatingVgw", - "locationName":"item" - }, - "queryFlattened":true - }, - "PublicIpStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"PublicIp" - }, - "queryFlattened":true - }, - "PurchaseReservedInstancesOfferingRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesOfferingId", - "InstanceCount" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ReservedInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance offering to purchase.

", - "queryName":"ReservedInstancesOfferingId" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Reserved Instances to purchase.

", - "queryName":"InstanceCount" - }, - "LimitPrice":{ - "shape":"ReservedInstanceLimitPrice", - "documentation":"

Specified for Reserved Instance Marketplace offerings to limit the total order and\n\t\t\t\tensure that the Reserved Instances are not purchased at unexpected prices.

", - "queryName":"LimitPrice", - "locationName":"limitPrice" - } - } - }, - "PurchaseReservedInstancesOfferingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The IDs of the purchased Reserved Instances.

", - "locationName":"reservedInstancesId", - "queryName":"ReservedInstancesId" - } - } - }, - "RIProductDescription":{ - "type":"string", - "enum":[ - "Linux/UNIX", - "Linux/UNIX (Amazon VPC)", - "Windows", - "Windows (Amazon VPC)" - ] - }, - "ReasonCodesList":{ - "type":"list", - "member":{ - "shape":"ReportInstanceReasonCodes", - "locationName":"item" - }, - "queryFlattened":true - }, - "RebootInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - } - } - }, - "RecurringCharge":{ - "type":"structure", - "members":{ - "Frequency":{ - "shape":"RecurringChargeFrequency", - "documentation":"

The frequency of the recurring charge.

", - "queryName":"Frequency", - "locationName":"frequency" - }, - "Amount":{ - "shape":"Double", - "documentation":"

The amount of the recurring charge.

", - "queryName":"Amount", - "locationName":"amount" - } - }, - "documentation":"

Describes a recurring charge.

" - }, - "RecurringChargeFrequency":{ - "type":"string", - "enum":["Hourly"] - }, - "RecurringChargesList":{ - "type":"list", - "member":{ - "shape":"RecurringCharge", - "locationName":"item" - }, - "queryFlattened":true - }, - "Region":{ - "type":"structure", - "members":{ - "RegionName":{ - "shape":"String", - "documentation":"

The name of the region.

", - "locationName":"regionName", - "queryName":"RegionName" - }, - "Endpoint":{ - "shape":"String", - "documentation":"

The region service endpoint.

", - "locationName":"regionEndpoint", - "queryName":"RegionEndpoint" - } - }, - "documentation":"

Describes a region.

" - }, - "RegionList":{ - "type":"list", - "member":{ - "shape":"Region", - "locationName":"item" - }, - "queryFlattened":true - }, - "RegionNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"RegionName" - }, - "queryFlattened":true - }, - "RegisterImageRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ImageLocation":{ - "shape":"String", - "documentation":"

The full path to your AMI manifest in Amazon S3 storage.

", - "queryName":"ImageLocation" - }, - "Name":{ - "shape":"String", - "documentation":"

A name for your AMI.

\n

Constraints: 3-128 alphanumeric characters, parenthesis (()),\n\t\t\t\tcommas (,), slashes (/), dashes (-), or underscores (_)

", - "queryName":"Name", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for your AMI.

", - "queryName":"Description", - "locationName":"description" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the AMI.

\n

Default: For Amazon EBS-backed AMIs, i386.\n For instance store-backed AMIs, the architecture specified in the manifest file.

", - "queryName":"Architecture", - "locationName":"architecture" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "queryName":"KernelId", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "queryName":"RamdiskId", - "locationName":"ramdiskId" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The name of the root device (for example, /dev/sda1, or\n\t\t\t\txvda).

", - "queryName":"RootDeviceName", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"BlockDeviceMapping", - "queryName":"BlockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"String", - "documentation":"

The type of virtualization.

\n

Default: paravirtual

", - "queryName":"VirtualizationType", - "locationName":"virtualizationType" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Set to simple to enable enhanced networking for the AMI and any instances that you launch from the AMI.

\n

There is no way to disable enhanced networking at this time.

\n

This option is supported only for HVM AMIs. Specifying this option\n with a PV AMI can make instances launched from the AMI unreachable.

", - "queryName":"SriovNetSupport", - "locationName":"sriovNetSupport" - } - } - }, - "RegisterImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the newly registered AMI.

", - "locationName":"imageId", - "queryName":"ImageId" - } - } - }, - "RejectVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "queryName":"VpcPeeringConnectionId", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "RejectVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "queryName":"Return", - "locationName":"return" - } - } - }, - "ReleaseAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

[EC2-Classic] The Elastic IP address.

", - "queryName":"PublicIp" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The allocation ID.

", - "queryName":"AllocationId" - } - } - }, - "ReplaceNetworkAclAssociationRequest":{ - "type":"structure", - "required":[ - "AssociationId", - "NetworkAclId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The ID of the current association between the original\n\t\t\t\tnetwork ACL and the subnet.

", - "queryName":"AssociationId", - "locationName":"associationId" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the new ACL to associate with the subnet.

", - "queryName":"NetworkAclId", - "locationName":"networkAclId" - } - } - }, - "ReplaceNetworkAclAssociationResult":{ - "type":"structure", - "members":{ - "NewAssociationId":{ - "shape":"String", - "documentation":"

The ID of the new association.

", - "queryName":"NewAssociationId", - "locationName":"newAssociationId" - } - } - }, - "ReplaceNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the ACL.

", - "queryName":"NetworkAclId", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number of the entry to replace.

", - "queryName":"RuleNumber", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The IP protocol. You can specify all or -1 to mean all protocols.

", - "queryName":"Protocol", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "queryName":"RuleAction", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether to replace the egress rule.

\n\t\t

Default: If no value is specified, we replace the ingress rule.

", - "queryName":"Egress", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation.

", - "queryName":"CidrBlock", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code.

", - "locationName":"Icmp", - "queryName":"Icmp" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", - "queryName":"PortRange", - "locationName":"portRange" - } - } - }, - "ReplaceRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR address block used for the destination match. The value\n\t\t\t\tyou provide must match the CIDR of an existing route in the table.

", - "queryName":"DestinationCidrBlock", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of an Internet gateway attached to your VPC.

", - "queryName":"GatewayId", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of a network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of a VPC peering connection.

", - "queryName":"VpcPeeringConnectionId", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "ReplaceRouteTableAssociationRequest":{ - "type":"structure", - "required":[ - "AssociationId", - "RouteTableId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID.

", - "queryName":"AssociationId", - "locationName":"associationId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the new route table to associate with the subnet.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - } - } - }, - "ReplaceRouteTableAssociationResult":{ - "type":"structure", - "members":{ - "NewAssociationId":{ - "shape":"String", - "documentation":"

The ID of the new association.

", - "queryName":"NewAssociationId", - "locationName":"newAssociationId" - } - } - }, - "ReportInstanceReasonCodes":{ - "type":"string", - "enum":[ - "instance-stuck-in-state", - "unresponsive", - "not-accepting-credentials", - "password-not-available", - "performance-network", - "performance-instance-store", - "performance-ebs-volume", - "performance-other", - "other" - ] - }, - "ReportInstanceStatusRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "Instances":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instances.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "Status":{ - "shape":"ReportStatusType", - "documentation":"

The status of all instances listed.

", - "queryName":"Status", - "locationName":"status" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time at which the reported instance health state began.

", - "queryName":"StartTime", - "locationName":"startTime" - }, - "EndTime":{ - "shape":"DateTime", - "documentation":"

The time at which the reported instance health state ended.

", - "queryName":"EndTime", - "locationName":"endTime" - }, - "ReasonCodes":{ - "shape":"ReasonCodesList", - "documentation":"

One or more reason codes that describes the health state of your instance.

\n
    \n
  • instance-stuck-in-state: My instance is stuck in a state.

  • \n
  • unresponsive: My instance is unresponsive.

  • \n
  • not-accepting-credentials: My instance is not accepting my credentials.

  • \n
  • password-not-available: A password is not available for my instance.

  • \n
  • performance-network: My instance is experiencing performance problems which I believe are network related.

  • \n
  • performance-instance-store: My instance is experiencing performance problems which I believe are related to the instance stores.

  • \n
  • performance-ebs-volume: My instance is experiencing performance problems which I believe are related to an EBS volume.

  • \n
  • performance-other: My instance is experiencing performance problems.

  • \n
  • other: [explain using the description parameter]

  • \n
", - "locationName":"reasonCode", - "queryName":"ReasonCode" - }, - "Description":{ - "shape":"String", - "documentation":"

Descriptive text about the health state of your instance.

", - "queryName":"Description", - "locationName":"description" - } - } - }, - "ReportStatusType":{ - "type":"string", - "enum":[ - "ok", - "impaired" - ] - }, - "RequestSpotInstancesRequest":{ - "type":"structure", - "required":["SpotPrice"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", - "queryName":"SpotPrice", - "locationName":"spotPrice" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The maximum number of Spot Instances to launch.

\n

Default: 1

", - "queryName":"InstanceCount", - "locationName":"instanceCount" - }, - "Type":{ - "shape":"SpotInstanceType", - "documentation":"

The Spot Instance request type.

\n

Default: one-time

", - "queryName":"Type", - "locationName":"type" - }, - "ValidFrom":{ - "shape":"DateTime", - "documentation":"

The start date of the request. If this is a one-time request, the\n\t\t\t\trequest becomes active at this date and time and remains active until\n\t\t\t\tall instances launch, the request expires, or the request is canceled.\n\t\t\t\tIf the request is persistent, the request becomes active at this date\n\t\t\t\tand time and remains active until it expires or is canceled.

\n

Default: The request is effective indefinitely.

", - "queryName":"ValidFrom", - "locationName":"validFrom" - }, - "ValidUntil":{ - "shape":"DateTime", - "documentation":"

The end date of the request. If this is a one-time request, the\n\t\t\t\trequest remains active until all instances launch, the request is\n\t\t\t\tcanceled, or this date is reached. If the request is persistent, it\n\t\t\t\tremains active until it is canceled or this date and time is reached.

\n

Default: The request is effective indefinitely.

", - "queryName":"ValidUntil", - "locationName":"validUntil" - }, - "LaunchGroup":{ - "shape":"String", - "documentation":"

The instance launch group. Launch groups are Spot Instances that\n\t\t\t\tlaunch together and terminate together.

\n

Default: Instances are launched and terminated individually

", - "queryName":"LaunchGroup", - "locationName":"launchGroup" - }, - "AvailabilityZoneGroup":{ - "shape":"String", - "documentation":"

The user-specified name for a logical grouping of bids.

\n

When you specify an Availability Zone group in a Spot\n\t\t\t\tInstance request, all Spot Instances in the request are launched in the\n\t\t\t\tsame Availability Zone. Instance proximity is maintained with this\n\t\t\t\tparameter, but the choice of Availability Zone is not.\n\t\t\t\tThe group applies only to bids for Spot\tInstances of the same instance type. \n\t\t\t\tAny additional Spot Instance requests that are specified with the same\n\t\t\t\tAvailability Zone group name are launched in that\n\t\t\t\tsame Availability Zone, as long as at least one instance from the group\n\t\t\t\tis still active.

\n

If there is no active instance running in the Availability Zone\n\t\t\t\tgroup that you specify for a new Spot Instance request (all\n\t\t\t\tinstances are terminated, the bid is expired, or the bid falls below\n\t\t\t\tcurrent market), then Amazon EC2 launches the instance in any\n\t\t\t\tAvailability Zone where the constraint can be met. Consequently, the\n\t\t\t\tsubsequent set of Spot Instances could be placed in a different zone\n\t\t\t\tfrom the original request, even if you specified the same\n\t\t\t\tAvailability Zone group.

\n

Default: Instances are launched in any available Availability Zone.

", - "queryName":"AvailabilityZoneGroup", - "locationName":"availabilityZoneGroup" - }, - "LaunchSpecification":{ - "shape":"LaunchSpecification", - "documentation":"

The launch specification.

", - "queryName":"LaunchSpecification", - "locationName":"launchSpecification" - } - } - }, - "RequestSpotInstancesResult":{ - "type":"structure", - "members":{ - "SpotInstanceRequests":{ - "shape":"SpotInstanceRequestList", - "documentation":"

Information about the Spot Instance request.

", - "locationName":"spotInstanceRequestSet", - "queryName":"SpotInstanceRequestSet" - } - } - }, - "Reservation":{ - "type":"structure", - "members":{ - "ReservationId":{ - "shape":"String", - "documentation":"

The ID of the reservation.

", - "locationName":"reservationId", - "queryName":"ReservationId" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that owns the reservation.

", - "locationName":"ownerId", - "queryName":"OwnerId" - }, - "RequesterId":{ - "shape":"String", - "documentation":"

The ID of the requester that launched the instances on your behalf (for example,\n\t\t\t\tAWS Management Console or Auto Scaling).

", - "locationName":"requesterId", - "queryName":"RequesterId" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups.

", - "locationName":"groupSet", - "queryName":"GroupSet" - }, - "Instances":{ - "shape":"InstanceList", - "documentation":"

One or more instances.

", - "locationName":"instancesSet", - "queryName":"InstancesSet" - } - }, - "documentation":"

Describes a reservation.

" - }, - "ReservationList":{ - "type":"list", - "member":{ - "shape":"Reservation", - "locationName":"item" - }, - "queryFlattened":true - }, - "ReservedInstanceLimitPrice":{ - "type":"structure", - "members":{ - "Amount":{ - "shape":"Double", - "documentation":"

Used for Reserved Instance Marketplace offerings. Specifies the limit price on the total order\n\t\t\t\t(instanceCount * price).

", - "queryName":"Amount", - "locationName":"amount" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency in which the limitPrice amount is specified.\n\t\t\t\tAt this time, the only supported currency is USD.

", - "queryName":"CurrencyCode", - "locationName":"currencyCode" - } - }, - "documentation":"

Describes the limit price of a Reserved Instance offering.

" - }, - "ReservedInstanceState":{ - "type":"string", - "enum":[ - "payment-pending", - "active", - "payment-failed", - "retired" - ] - }, - "ReservedInstances":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "locationName":"reservedInstancesId", - "queryName":"ReservedInstancesId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used.

", - "locationName":"instanceType", - "queryName":"InstanceType" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", - "locationName":"availabilityZone", - "queryName":"AvailabilityZone" - }, - "Start":{ - "shape":"DateTime", - "documentation":"

The date and time the Reserved Instance started.

", - "locationName":"start", - "queryName":"Start" - }, - "End":{ - "shape":"DateTime", - "documentation":"

The time when the Reserved Instance expires.

", - "locationName":"end", - "queryName":"End" - }, - "Duration":{ - "shape":"Long", - "documentation":"

The duration of the Reserved Instance, in seconds.

", - "locationName":"duration", - "queryName":"Duration" - }, - "UsagePrice":{ - "shape":"Float", - "documentation":"

The usage price of the Reserved Instance, per hour.

", - "locationName":"usagePrice", - "queryName":"UsagePrice" - }, - "FixedPrice":{ - "shape":"Float", - "documentation":"

The purchase price of the Reserved Instance.

", - "locationName":"fixedPrice", - "queryName":"FixedPrice" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Reserved Instances purchased.

", - "locationName":"instanceCount", - "queryName":"InstanceCount" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description.

", - "locationName":"productDescription", - "queryName":"ProductDescription" - }, - "State":{ - "shape":"ReservedInstanceState", - "documentation":"

The state of the Reserved Instance purchase.

", - "locationName":"state", - "queryName":"State" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the reserved instance.

", - "queryName":"InstanceTenancy", - "locationName":"instanceTenancy" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes.\n\t\t\t\tAt this time, the only supported currency is USD.

", - "queryName":"CurrencyCode", - "locationName":"currencyCode" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "queryName":"OfferingType", - "locationName":"offeringType" - }, - "RecurringCharges":{ - "shape":"RecurringChargesList", - "documentation":"

The recurring charge tag assigned to the resource.

", - "queryName":"RecurringCharges", - "locationName":"recurringCharges" - } - }, - "documentation":"

Describes a Reserved Instance.

" - }, - "ReservedInstancesConfiguration":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the modified Reserved Instances.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "Platform":{ - "shape":"String", - "documentation":"

The network platform of the modified Reserved Instances, which is either EC2-Classic or EC2-VPC.

", - "queryName":"Platform", - "locationName":"platform" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of modified Reserved Instances.

", - "queryName":"InstanceCount", - "locationName":"instanceCount" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type for the modified Reserved Instances.

", - "queryName":"InstanceType", - "locationName":"instanceType" - } - }, - "documentation":"

Describes the configuration settings for the modified Reserved Instances.

" - }, - "ReservedInstancesConfigurationList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesConfiguration", - "locationName":"item" - }, - "queryFlattened":true - }, - "ReservedInstancesId":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "queryName":"ReservedInstancesId", - "locationName":"reservedInstancesId" - } - }, - "documentation":"

Describes the ID of a Reserved Instance.

" - }, - "ReservedInstancesIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReservedInstancesId" - }, - "queryFlattened":true - }, - "ReservedInstancesList":{ - "type":"list", - "member":{ - "shape":"ReservedInstances", - "locationName":"item" - }, - "queryFlattened":true - }, - "ReservedInstancesListing":{ - "type":"structure", - "members":{ - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance listing.

", - "queryName":"ReservedInstancesListingId", - "locationName":"reservedInstancesListingId" - }, - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "queryName":"ReservedInstancesId", - "locationName":"reservedInstancesId" - }, - "CreateDate":{ - "shape":"DateTime", - "documentation":"

The time the listing was created.

", - "queryName":"CreateDate", - "locationName":"createDate" - }, - "UpdateDate":{ - "shape":"DateTime", - "documentation":"

The last modified timestamp of the listing.

", - "queryName":"UpdateDate", - "locationName":"updateDate" - }, - "Status":{ - "shape":"ListingStatus", - "documentation":"

The status of the Reserved Instance listing.

", - "queryName":"Status", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The reason for the current status of the Reserved Instance listing. \n\t\t\t\tThe response can be blank.

", - "queryName":"StatusMessage", - "locationName":"statusMessage" - }, - "InstanceCounts":{ - "shape":"InstanceCountList", - "documentation":"

The number of instances in this state.

", - "queryName":"InstanceCounts", - "locationName":"instanceCounts" - }, - "PriceSchedules":{ - "shape":"PriceScheduleList", - "documentation":"

The price of the Reserved Instance listing.

", - "queryName":"PriceSchedules", - "locationName":"priceSchedules" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

The idempotency token you provided when you created the listing.

", - "queryName":"ClientToken", - "locationName":"clientToken" - } - }, - "documentation":"

Describes a Reserved Instance listing.

" - }, - "ReservedInstancesListingList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesListing", - "locationName":"item" - }, - "queryFlattened":true - }, - "ReservedInstancesModification":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationId":{ - "shape":"String", - "documentation":"

A unique ID for the Reserved Instance modification.

", - "queryName":"ReservedInstancesModificationId", - "locationName":"reservedInstancesModificationId" - }, - "ReservedInstancesIds":{ - "shape":"ReservedIntancesIds", - "documentation":"

The IDs of one or more Reserved Instances.

", - "locationName":"reservedInstancesSet", - "queryName":"ReservedInstancesSet" - }, - "ModificationResults":{ - "shape":"ReservedInstancesModificationResultList", - "documentation":"

Contains target configurations along with their corresponding new Reserved Instance IDs.

", - "locationName":"modificationResultSet", - "queryName":"ModificationResultSet" - }, - "CreateDate":{ - "shape":"DateTime", - "documentation":"

The time when the modification request was created.

", - "queryName":"CreateDate", - "locationName":"createDate" - }, - "UpdateDate":{ - "shape":"DateTime", - "documentation":"

The time when the modification request was last updated.

", - "queryName":"UpdateDate", - "locationName":"updateDate" - }, - "EffectiveDate":{ - "shape":"DateTime", - "documentation":"

The time for the modification to become effective.

", - "queryName":"EffectiveDate", - "locationName":"effectiveDate" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the Reserved Instances modification request.

", - "queryName":"Status", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The reason for the status.

", - "queryName":"StatusMessage", - "locationName":"statusMessage" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

A unique, case-sensitive key supplied by the client to ensure that the modification request is idempotent.

", - "queryName":"ClientToken", - "locationName":"clientToken" - } - }, - "documentation":"

Describes a Reserved Instance modification.

" - }, - "ReservedInstancesModificationIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReservedInstancesModificationId" - }, - "queryFlattened":true - }, - "ReservedInstancesModificationList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesModification", - "locationName":"item" - }, - "queryFlattened":true - }, - "ReservedInstancesModificationResult":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID for the Reserved Instances that were created as part of the modification request. This field is only available when the modification is fulfilled.

", - "queryName":"ReservedInstancesId", - "locationName":"reservedInstancesId" - }, - "TargetConfiguration":{ - "shape":"ReservedInstancesConfiguration", - "documentation":"

The target Reserved Instances configurations supplied as part of the modification request.

", - "queryName":"TargetConfiguration", - "locationName":"targetConfiguration" - } - } - }, - "ReservedInstancesModificationResultList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesModificationResult", - "locationName":"item" - }, - "queryFlattened":true - }, - "ReservedInstancesOffering":{ - "type":"structure", - "members":{ - "ReservedInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance offering.

", - "locationName":"reservedInstancesOfferingId", - "queryName":"ReservedInstancesOfferingId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used.

", - "locationName":"instanceType", - "queryName":"InstanceType" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", - "locationName":"availabilityZone", - "queryName":"AvailabilityZone" - }, - "Duration":{ - "shape":"Long", - "documentation":"

The duration of the Reserved Instance, in seconds.

", - "locationName":"duration", - "queryName":"Duration" - }, - "UsagePrice":{ - "shape":"Float", - "documentation":"

The usage price of the Reserved Instance, per hour.

", - "locationName":"usagePrice", - "queryName":"UsagePrice" - }, - "FixedPrice":{ - "shape":"Float", - "documentation":"

The purchase price of the Reserved Instance.

", - "locationName":"fixedPrice", - "queryName":"FixedPrice" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description.

", - "locationName":"productDescription", - "queryName":"ProductDescription" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the reserved instance.

", - "queryName":"InstanceTenancy", - "locationName":"instanceTenancy" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency of the Reserved Instance offering you are purchasing. It's \n\t\t\t\tspecified using ISO 4217 standard currency codes. At this time, \n\t\t\t\tthe only supported currency is USD.

", - "queryName":"CurrencyCode", - "locationName":"currencyCode" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "queryName":"OfferingType", - "locationName":"offeringType" - }, - "RecurringCharges":{ - "shape":"RecurringChargesList", - "documentation":"

The recurring charge tag assigned to the resource.

", - "queryName":"RecurringCharges", - "locationName":"recurringCharges" - }, - "Marketplace":{ - "shape":"Boolean", - "documentation":"

Indicates whether the offering is available through the Reserved Instance Marketplace (resale) or AWS. \n If it's a Reserved Instance Marketplace offering, this is true.

", - "queryName":"Marketplace", - "locationName":"marketplace" - }, - "PricingDetails":{ - "shape":"PricingDetailsList", - "documentation":"

The pricing details of the Reserved Instance offering.

", - "locationName":"pricingDetailsSet", - "queryName":"PricingDetailsSet" - } - }, - "documentation":"

Describes a Reserved Instance offering.

" - }, - "ReservedInstancesOfferingIdStringList":{ - "type":"list", - "member":{"shape":"String"}, - "queryFlattened":true - }, - "ReservedInstancesOfferingList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesOffering", - "locationName":"item" - }, - "queryFlattened":true - }, - "ReservedIntancesIds":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesId", - "locationName":"item" - }, - "queryFlattened":true - }, - "ResetImageAttributeName":{ - "type":"string", - "enum":["launchPermission"] - }, - "ResetImageAttributeRequest":{ - "type":"structure", - "required":[ - "ImageId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "queryName":"ImageId" - }, - "Attribute":{ - "shape":"ResetImageAttributeName", - "documentation":"

The attribute to reset (currently you can only reset the launch\n\t\t\t\tpermission attribute).

", - "queryName":"Attribute" - } - } - }, - "ResetInstanceAttributeRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The attribute to reset.

", - "queryName":"Attribute", - "locationName":"attribute" - } - } - }, - "ResetNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "SourceDestCheck":{ - "shape":"String", - "documentation":"

Indicates whether source/destination checking is enabled. A value\n\t\t\t\tof true means checking is enabled, and\n\t\t\t\tfalse means checking is disabled. This value\n\t\t\t\tmust be false for a NAT instance to perform NAT.

", - "queryName":"SourceDestCheck", - "locationName":"sourceDestCheck" - } - } - }, - "ResetSnapshotAttributeRequest":{ - "type":"structure", - "required":[ - "SnapshotId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "queryName":"SnapshotId" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The attribute to reset (currently only the attribute for permission to create volumes can be\n reset).

", - "queryName":"Attribute" - } - } - }, - "ResourceIdList":{ - "type":"list", - "member":{"shape":"String"}, - "queryFlattened":true - }, - "ResourceType":{ - "type":"string", - "enum":[ - "customer-gateway", - "dhcp-options", - "image", - "instance", - "internet-gateway", - "network-acl", - "network-interface", - "reserved-instances", - "route-table", - "snapshot", - "spot-instances-request", - "subnet", - "security-group", - "volume", - "vpc", - "vpn-connection", - "vpn-gateway" - ] - }, - "RestorableByStringList":{ - "type":"list", - "member":{"shape":"String"}, - "queryFlattened":true - }, - "RevokeSecurityGroupEgressRequest":{ - "type":"structure", - "required":["GroupId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId", - "locationName":"groupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupName", - "locationName":"sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupOwnerId", - "locationName":"sourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number \n (see Protocol Numbers). \n Use -1 to specify all.

", - "queryName":"IpProtocol", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, \n use -1 to specify all ICMP types.

", - "queryName":"FromPort", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, \n use -1 to specify all ICMP codes for the ICMP type.

", - "queryName":"ToPort", - "locationName":"toPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "queryName":"CidrIp", - "locationName":"cidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

", - "queryName":"IpPermissions", - "locationName":"ipPermissions" - } - } - }, - "RevokeSecurityGroupIngressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group.

", - "queryName":"GroupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

", - "queryName":"SourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number \n (see Protocol Numbers). \n Use -1 to specify all.

", - "queryName":"IpProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, \n use -1 to specify all ICMP types.

", - "queryName":"FromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, \n use -1 to specify all ICMP codes for the ICMP type.

", - "queryName":"ToPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "queryName":"CidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

", - "queryName":"IpPermissions" - } - } - }, - "Route":{ - "type":"structure", - "members":{ - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block used for the destination match.

", - "queryName":"DestinationCidrBlock", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of a gateway attached to your VPC.

", - "queryName":"GatewayId", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "InstanceOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the instance.

", - "queryName":"InstanceOwnerId", - "locationName":"instanceOwnerId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "queryName":"VpcPeeringConnectionId", - "locationName":"vpcPeeringConnectionId" - }, - "State":{ - "shape":"RouteState", - "documentation":"

The state of the route. The blackhole state indicates that the\n\t\t\t\troute's target isn't available (for example, the specified gateway isn't attached to the\n\t\t\t\tVPC, or the specified NAT instance has been terminated).

", - "queryName":"State", - "locationName":"state" - }, - "Origin":{ - "shape":"RouteOrigin", - "documentation":"

Describes how the route was created.

\n
    \n
  • \nCreateRouteTable indicates that route was automatically created when the route table was created.
  • \n
  • \nCreateRoute indicates that the route was manually added to the route table.
  • \n
  • \nEnableVgwRoutePropagation indicates that the route was propagated by route propagation.
  • \n
", - "queryName":"Origin", - "locationName":"origin" - } - }, - "documentation":"

Describes a route in a route table.

" - }, - "RouteList":{ - "type":"list", - "member":{ - "shape":"Route", - "locationName":"item" - }, - "queryFlattened":true - }, - "RouteOrigin":{ - "type":"string", - "enum":[ - "CreateRouteTable", - "CreateRoute", - "EnableVgwRoutePropagation" - ] - }, - "RouteState":{ - "type":"string", - "enum":[ - "active", - "blackhole" - ] - }, - "RouteTable":{ - "type":"structure", - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - }, - "Routes":{ - "shape":"RouteList", - "documentation":"

The routes in the route table.

", - "locationName":"routeSet", - "queryName":"RouteSet" - }, - "Associations":{ - "shape":"RouteTableAssociationList", - "documentation":"

The associations between the route table and one or more subnets.

", - "locationName":"associationSet", - "queryName":"AssociationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the route table.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "PropagatingVgws":{ - "shape":"PropagatingVgwList", - "documentation":"

Any virtual private gateway (VGW) propagating routes.

", - "locationName":"propagatingVgwSet", - "queryName":"PropagatingVgwSet" - } - }, - "documentation":"

Describes a route table.

" - }, - "RouteTableAssociation":{ - "type":"structure", - "members":{ - "RouteTableAssociationId":{ - "shape":"String", - "documentation":"

The ID of the association between a route table and a subnet.

", - "queryName":"RouteTableAssociationId", - "locationName":"routeTableAssociationId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "queryName":"RouteTableId", - "locationName":"routeTableId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "queryName":"SubnetId", - "locationName":"subnetId" - }, - "Main":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the main route table.

", - "queryName":"Main", - "locationName":"main" - } - }, - "documentation":"

Describes an association between a route table and a subnet.

" - }, - "RouteTableAssociationList":{ - "type":"list", - "member":{ - "shape":"RouteTableAssociation", - "locationName":"item" - }, - "queryFlattened":true - }, - "RouteTableList":{ - "type":"list", - "member":{ - "shape":"RouteTable", - "locationName":"item" - }, - "queryFlattened":true - }, - "RuleAction":{ - "type":"string", - "enum":[ - "allow", - "deny" - ] - }, - "RunInstancesMonitoringEnabled":{ - "type":"structure", - "required":["Enabled"], - "members":{ - "Enabled":{ - "shape":"Boolean", - "documentation":"

Indicates whether monitoring is enabled for the instance.

", - "queryName":"Enabled", - "locationName":"enabled" - } - }, - "documentation":"

Describes the monitoring for the instance.

" - }, - "RunInstancesRequest":{ - "type":"structure", - "required":[ - "ImageId", - "MinCount", - "MaxCount" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI, which you can get by calling DescribeImages.

", - "queryName":"ImageId" - }, - "MinCount":{ - "shape":"Integer", - "documentation":"

The minimum number of instances to launch. If you specify a minimum that is more instances\n than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches no instances.

\n

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. \n For more information about the default limits, and how to request an increase, see \n How\n many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

", - "queryName":"MinCount" - }, - "MaxCount":{ - "shape":"Integer", - "documentation":"

The maximum number of instances to launch. If you specify more instances\n than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches the\n largest possible number of instances above MinCount.

\n

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. \n For more information about the default limits, and how to request an increase, see \n How\n many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

", - "queryName":"MaxCount" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair. You can create a key pair using CreateKeyPair or ImportKeyPair.

\n \n

If you launch an instance without specifying a key pair, you can't connect to the instance.

\n
", - "queryName":"KeyName" - }, - "SecurityGroups":{ - "shape":"SecurityGroupStringList", - "documentation":"

[EC2-Classic, default VPC] One or more security group names. For a nondefault VPC, you must use\n security group IDs instead.

\n

Default: Amazon EC2 uses the default security group.

", - "locationName":"SecurityGroup", - "queryName":"SecurityGroup" - }, - "SecurityGroupIds":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

One or more security group IDs. You can create a security group using CreateSecurityGroup.

\n

Default: Amazon EC2 uses the default security group.

", - "locationName":"SecurityGroupId", - "queryName":"SecurityGroupId" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data for the instances.

", - "queryName":"UserData" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

\n

Default: m1.small

", - "queryName":"InstanceType" - }, - "Placement":{ - "shape":"Placement", - "documentation":"

The placement for the instance.

", - "queryName":"Placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

\n \n

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information,\n see \n PV-GRUB: A New Amazon Kernel Image in the Amazon Elastic Compute Cloud User Guide.

\n
", - "queryName":"KernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "queryName":"RamdiskId" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

The block device mapping.

", - "locationName":"BlockDeviceMapping", - "queryName":"BlockDeviceMapping" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "documentation":"

The monitoring for the instance.

", - "queryName":"Monitoring" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance into.

", - "queryName":"SubnetId" - }, - "DisableApiTermination":{ - "shape":"Boolean", - "documentation":"

If you set this parameter to true, you can't terminate the instance using the Amazon EC2\n console, CLI, or API; otherwise, you can. If you set this parameter to true and then later want\n to be able to terminate the instance, you must first change the value of the\n disableApiTermination attribute to false using\n ModifyInstanceAttribute. Alternatively, if you set\n InstanceInitiatedShutdownBehavior to terminate,\n you can terminate the instance by running the shutdown command from the instance.

\n

Default: false

", - "queryName":"DisableApiTermination", - "locationName":"disableApiTermination" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"ShutdownBehavior", - "documentation":"

Indicates whether an instance stops or terminates when you initiate\n shutdown from the instance (using the operating system command for system shutdown).

\n

Default: stop

", - "queryName":"InstanceInitiatedShutdownBehavior", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] The primary IP address. You must specify a value\n from the IP address range of the subnet.

\n

Only one private IP address can be designated as primary.\n Therefore, you can't specify this parameter if\n PrivateIpAddresses.n.Primary is set to\n true and PrivateIpAddresses.n.PrivateIpAddress\n is set to an IP address.

\n

Default: We select an IP address from the IP address range of the subnet.

", - "queryName":"PrivateIpAddress", - "locationName":"privateIpAddress" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information,\n see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

\n

Constraints: Maximum 64 ASCII characters

", - "queryName":"ClientToken", - "locationName":"clientToken" - }, - "AdditionalInfo":{ - "shape":"String", - "queryName":"AdditionalInfo", - "locationName":"additionalInfo" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"networkInterface", - "queryName":"NetworkInterface" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "queryName":"IamInstanceProfile", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization\n provides dedicated throughput to Amazon EBS and an optimized\n configuration stack to provide optimal Amazon EBS I/O performance. This\n optimization isn't available with all instance types. Additional usage\n charges apply when using an EBS-optimized instance.

\n

Default: false

", - "queryName":"EbsOptimized", - "locationName":"ebsOptimized" - } - } - }, - "RunInstancesResult":{ - "type":"structure", - "members":{ - "Reservation":{ - "shape":"Reservation", - "documentation":"

One or more reservations.

", - "locationName":"reservation", - "queryName":"Reservation" - } - }, - "documentation":"

The result of the RunInstances call.

" - }, - "S3Storage":{ - "type":"structure", - "members":{ - "Bucket":{ - "shape":"String", - "documentation":"

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

", - "locationName":"bucket", - "queryName":"Bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

The beginning of the file name of the AMI.

", - "locationName":"prefix", - "queryName":"Prefix" - }, - "AWSAccessKeyId":{ - "shape":"String", - "documentation":"

The access key ID of the owner of the bucket. Before you specify a value for your access key ID, review and follow the guidance \n in Best Practices for Managing AWS Access Keys.

", - "queryName":"AWSAccessKeyId" - }, - "UploadPolicy":{ - "shape":"Blob", - "documentation":"

A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission to upload items into Amazon S3 on your behalf.

", - "locationName":"uploadPolicy", - "queryName":"UploadPolicy" - }, - "UploadPolicySignature":{ - "shape":"String", - "documentation":"

The signature of the Base64 encoded JSON document.

", - "locationName":"uploadPolicySignature", - "queryName":"UploadPolicySignature" - } - }, - "documentation":"

Describes the S3 bucket for an instance store-backed AMI.

" - }, - "SecurityGroup":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the security group.

", - "locationName":"ownerId", - "queryName":"OwnerId" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

", - "locationName":"groupName", - "queryName":"GroupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "queryName":"GroupId", - "locationName":"groupId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the security group.

", - "locationName":"groupDescription", - "queryName":"GroupDescription" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

One or more inbound rules associated with the security group.

", - "locationName":"ipPermissions", - "queryName":"IpPermissions" - }, - "IpPermissionsEgress":{ - "shape":"IpPermissionList", - "documentation":"

[EC2-VPC] One or more outbound rules associated with the security group.

", - "queryName":"IpPermissionsEgress", - "locationName":"ipPermissionsEgress" - }, - "VpcId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the VPC for the security group.

", - "queryName":"VpcId", - "locationName":"vpcId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the security group.

", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes a security group

" - }, - "SecurityGroupIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SecurityGroupId" - }, - "queryFlattened":true - }, - "SecurityGroupList":{ - "type":"list", - "member":{ - "shape":"SecurityGroup", - "locationName":"item" - }, - "queryFlattened":true - }, - "SecurityGroupStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SecurityGroup" - }, - "queryFlattened":true - }, - "ShutdownBehavior":{ - "type":"string", - "enum":[ - "stop", - "terminate" - ] - }, - "Snapshot":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "locationName":"snapshotId", - "queryName":"SnapshotId" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId", - "queryName":"VolumeId" - }, - "State":{ - "shape":"SnapshotState", - "documentation":"

The snapshot state.

", - "locationName":"status", - "queryName":"Status" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the snapshot was initiated.

", - "locationName":"startTime", - "queryName":"StartTime" - }, - "Progress":{ - "shape":"String", - "documentation":"

The progress of the snapshot, as a percentage.

", - "locationName":"progress", - "queryName":"Progress" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the Amazon EBS snapshot owner.

", - "locationName":"ownerId", - "queryName":"OwnerId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description for the snapshot.

", - "locationName":"description", - "queryName":"Description" - }, - "VolumeSize":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiB.

", - "locationName":"volumeSize", - "queryName":"VolumeSize" - }, - "OwnerAlias":{ - "shape":"String", - "documentation":"

The AWS account alias (for example, amazon, self) or AWS account ID\n that owns the snapshot.

", - "queryName":"OwnerAlias", - "locationName":"ownerAlias" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the snapshot.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the snapshot is encrypted.

", - "locationName":"encrypted", - "queryName":"Encrypted" - } - }, - "documentation":"

Describes a snapshot.

" - }, - "SnapshotAttributeName":{ - "type":"string", - "enum":[ - "productCodes", - "createVolumePermission" - ] - }, - "SnapshotIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SnapshotId" - }, - "queryFlattened":true - }, - "SnapshotList":{ - "type":"list", - "member":{ - "shape":"Snapshot", - "locationName":"item" - }, - "queryFlattened":true - }, - "SnapshotState":{ - "type":"string", - "enum":[ - "pending", - "completed", - "error" - ] - }, - "SpotDatafeedSubscription":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the account.

", - "queryName":"OwnerId", - "locationName":"ownerId" - }, - "Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket where the Spot Instance datafeed is located.

", - "queryName":"Bucket", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

The prefix that is prepended to datafeed files.

", - "queryName":"Prefix", - "locationName":"prefix" - }, - "State":{ - "shape":"DatafeedSubscriptionState", - "documentation":"

The state of the Spot Instance datafeed subscription.

", - "queryName":"State", - "locationName":"state" - }, - "Fault":{ - "shape":"SpotInstanceStateFault", - "documentation":"

The fault codes for the Spot Instance request, if any.

", - "queryName":"Fault", - "locationName":"fault" - } - }, - "documentation":"

Describes the datafeed for a Spot Instance.

" - }, - "SpotInstanceRequest":{ - "type":"structure", - "members":{ - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "queryName":"SpotInstanceRequestId", - "locationName":"spotInstanceRequestId" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", - "queryName":"SpotPrice", - "locationName":"spotPrice" - }, - "Type":{ - "shape":"SpotInstanceType", - "documentation":"

The Spot Instance request type.

", - "queryName":"Type", - "locationName":"type" - }, - "State":{ - "shape":"SpotInstanceState", - "documentation":"

The state of the Spot Instance request. Spot bid status information can help you track your \n\t\t\t\tSpot Instance requests. For information, see Tracking Spot Requests with Bid Status Codes in the Amazon Elastic Compute Cloud User Guide.

", - "queryName":"State", - "locationName":"state" - }, - "Fault":{ - "shape":"SpotInstanceStateFault", - "documentation":"

The fault codes for the Spot Instance request, if any.

", - "queryName":"Fault", - "locationName":"fault" - }, - "Status":{ - "shape":"SpotInstanceStatus", - "documentation":"

The status code and status message describing the Spot Instance request.

", - "queryName":"Status", - "locationName":"status" - }, - "ValidFrom":{ - "shape":"DateTime", - "documentation":"

The start date of the request. If this is a one-time request, the request becomes\n\t\t\t\tactive at this date and time and remains active until all\n\t\t\t\tinstances launch, the request expires, or the request is\n\t\t\t\tcanceled. If the request is persistent, the request becomes\n\t\t\t\tactive at this date and time and remains active until it expires\n\t\t\t\tor is canceled.

", - "queryName":"ValidFrom", - "locationName":"validFrom" - }, - "ValidUntil":{ - "shape":"DateTime", - "documentation":"

The end date of the request. If this is a one-time request, the request remains\n\t\t\t\tactive until all instances launch, the request is canceled, or\n\t\t\t\tthis date is reached. If the request is persistent, it remains\n\t\t\t\tactive until it is canceled or this date is reached.

", - "queryName":"ValidUntil", - "locationName":"validUntil" - }, - "LaunchGroup":{ - "shape":"String", - "documentation":"

The instance launch group. Launch groups are Spot Instances that launch\n\t\t\t\ttogether and terminate together.

", - "queryName":"LaunchGroup", - "locationName":"launchGroup" - }, - "AvailabilityZoneGroup":{ - "shape":"String", - "documentation":"

The Availability Zone group. If you specify the same Availability Zone group\n\t\t\t\tfor all Spot Instance requests, all Spot Instances are launched in the same\n\t\t\t\tAvailability Zone.

", - "queryName":"AvailabilityZoneGroup", - "locationName":"availabilityZoneGroup" - }, - "LaunchSpecification":{ - "shape":"LaunchSpecification", - "documentation":"

Additional information for launching instances.

", - "queryName":"LaunchSpecification", - "locationName":"launchSpecification" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID, if an instance has been launched to fulfill the Spot Instance\n\t\t\t\trequest.

", - "queryName":"InstanceId", - "locationName":"instanceId" - }, - "CreateTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the Spot Instance request was created.

", - "queryName":"CreateTime", - "locationName":"createTime" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The product description associated with the Spot Instance.

", - "queryName":"ProductDescription", - "locationName":"productDescription" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "LaunchedAvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the bid is launched.

", - "queryName":"LaunchedAvailabilityZone", - "locationName":"launchedAvailabilityZone" - } - }, - "documentation":"

Describe a Spot Instance request.

" - }, - "SpotInstanceRequestIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SpotInstanceRequestId" - }, - "queryFlattened":true - }, - "SpotInstanceRequestList":{ - "type":"list", - "member":{ - "shape":"SpotInstanceRequest", - "locationName":"item" - }, - "queryFlattened":true - }, - "SpotInstanceState":{ - "type":"string", - "enum":[ - "open", - "active", - "closed", - "cancelled", - "failed" - ] - }, - "SpotInstanceStateFault":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The reason code for the Spot Instance state change.

", - "queryName":"Code", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The message for the Spot Instance state change.

", - "queryName":"Message", - "locationName":"message" - } - }, - "documentation":"

Describes a Spot Instance state change.

" - }, - "SpotInstanceStatus":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The status code of the request.

", - "queryName":"Code", - "locationName":"code" - }, - "UpdateTime":{ - "shape":"DateTime", - "documentation":"

The time of the most recent status update.

", - "queryName":"UpdateTime", - "locationName":"updateTime" - }, - "Message":{ - "shape":"String", - "documentation":"

The description for the status code for the Spot request.

", - "queryName":"Message", - "locationName":"message" - } - }, - "documentation":"

Describes a Spot Instance request.

" - }, - "SpotInstanceType":{ - "type":"string", - "enum":[ - "one-time", - "persistent" - ] - }, - "SpotPlacement":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The Availability Zone group name.

", - "queryName":"GroupName", - "locationName":"groupName" - } - }, - "documentation":"

Describes Spot Instance placement.

" - }, - "SpotPrice":{ - "type":"structure", - "members":{ - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

", - "queryName":"InstanceType", - "locationName":"instanceType" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

A general description of the AMI.

", - "queryName":"ProductDescription", - "locationName":"productDescription" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum price you will pay to launch one or more Spot Instances.

", - "queryName":"SpotPrice", - "locationName":"spotPrice" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The date and time the request was created.

", - "queryName":"Timestamp", - "locationName":"timestamp" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - } - }, - "documentation":"

Describes the Spot Price.

" - }, - "SpotPriceHistoryList":{ - "type":"list", - "member":{ - "shape":"SpotPrice", - "locationName":"item" - }, - "queryFlattened":true - }, - "StartInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - }, - "AdditionalInfo":{ - "shape":"String", - "queryName":"AdditionalInfo", - "locationName":"additionalInfo" - }, - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - } - } - }, - "StartInstancesResult":{ - "type":"structure", - "members":{ - "StartingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more started instances.

", - "locationName":"instancesSet", - "queryName":"InstancesSet" - } - } - }, - "StateReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The reason code for the state change.

", - "queryName":"Code", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The message for the state change.

\n
    \n
  • Server.SpotInstanceTermination: A Spot Instance was terminated due to an increase in the market price.

  • \n
  • Server.InternalError: An internal error occurred during instance launch, resulting in termination.

  • \n
  • Server.InsufficientInstanceCapacity: There was insufficient instance capacity to satisfy the launch request.

  • \n
  • Client.InternalError: A client error caused the instance to terminate on launch.

  • \n
  • Client.InstanceInitiatedShutdown: The instance was shut down using the shutdown -h command from the instance.

  • \n
  • Client.UserInitiatedShutdown: The instance was shut down using the Amazon EC2 API.

  • \n
  • Client.VolumeLimitExceeded: The volume limit was exceeded.

  • \n
  • Client.InvalidSnapshot.NotFound: The specified snapshot was not found.

  • \n
", - "queryName":"Message", - "locationName":"message" - } - }, - "documentation":"

Describes a state change.

" - }, - "StatusName":{ - "type":"string", - "enum":["reachability"] - }, - "StatusType":{ - "type":"string", - "enum":[ - "passed", - "failed", - "insufficient-data" - ] - }, - "StopInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Forces the instances to stop. The instances do not have an\n\t\t\t\topportunity to flush file system caches or file system metadata. If you\n\t\t\t\tuse this option, you must perform file system check and repair\n\t\t\t\tprocedures. This option is not recommended for Windows\n\t\t\t instances.

\n

Default: false

", - "queryName":"Force", - "locationName":"force" - } - } - }, - "StopInstancesResult":{ - "type":"structure", - "members":{ - "StoppingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more stopped instances.

", - "locationName":"instancesSet", - "queryName":"InstancesSet" - } - } - }, - "Storage":{ - "type":"structure", - "members":{ - "S3":{ - "shape":"S3Storage", - "documentation":"

An Amazon S3 storage location.

", - "queryName":"S3" - } - }, - "documentation":"

Describes the storage location for an instance store-backed AMI.

" - }, - "String":{"type":"string"}, - "Subnet":{ - "type":"structure", - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId", - "queryName":"SubnetId" - }, - "State":{ - "shape":"SubnetState", - "documentation":"

The current state of the subnet.

", - "locationName":"state", - "queryName":"State" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC the subnet is in.

", - "locationName":"vpcId", - "queryName":"VpcId" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block assigned to the subnet.

", - "locationName":"cidrBlock", - "queryName":"CidrBlock" - }, - "AvailableIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of unused IP addresses in the subnet. Note that the IP addresses for any\n\t\t\t\tstopped instances are considered unavailable.

", - "locationName":"availableIpAddressCount", - "queryName":"AvailableIpAddressCount" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the subnet.

", - "locationName":"availabilityZone", - "queryName":"AvailabilityZone" - }, - "DefaultForAz":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the default subnet for the Availability Zone.

", - "locationName":"defaultForAz", - "queryName":"DefaultForAz" - }, - "MapPublicIpOnLaunch":{ - "shape":"Boolean", - "documentation":"

Indicates whether instances launched in this subnet receive a public IP address.

", - "locationName":"mapPublicIpOnLaunch", - "queryName":"MapPublicIpOnLaunch" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the subnet.

", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes a subnet.

" - }, - "SubnetIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SubnetId" - }, - "queryFlattened":true - }, - "SubnetList":{ - "type":"list", - "member":{ - "shape":"Subnet", - "locationName":"item" - }, - "queryFlattened":true - }, - "SubnetState":{ - "type":"string", - "enum":[ - "pending", - "available" - ] - }, - "SummaryStatus":{ - "type":"string", - "enum":[ - "ok", - "impaired", - "insufficient-data", - "not-applicable" - ] - }, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

The key of the tag.

\n

Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode\n characters. May not begin with aws:

", - "queryName":"Key", - "locationName":"key" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the tag.

\n

Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode\n characters.

", - "queryName":"Value", - "locationName":"value" - } - }, - "documentation":"

Describes a tag.

" - }, - "TagDescription":{ - "type":"structure", - "members":{ - "ResourceId":{ - "shape":"String", - "documentation":"

The ID of the resource. For example, ami-1a2b3c4d.

", - "queryName":"ResourceId", - "locationName":"resourceId" - }, - "ResourceType":{ - "shape":"ResourceType", - "documentation":"

The type of resource.

", - "queryName":"ResourceType", - "locationName":"resourceType" - }, - "Key":{ - "shape":"String", - "documentation":"

The key of the tag.

", - "queryName":"Key", - "locationName":"key" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the tag.

", - "queryName":"Value", - "locationName":"value" - } - }, - "documentation":"

Describes a tag.

" - }, - "TagDescriptionList":{ - "type":"list", - "member":{ - "shape":"TagDescription", - "locationName":"item" - }, - "queryFlattened":true - }, - "TagList":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"item" - }, - "queryFlattened":true - }, - "TelemetryStatus":{ - "type":"string", - "enum":[ - "UP", - "DOWN" - ] - }, - "Tenancy":{ - "type":"string", - "enum":[ - "default", - "dedicated" - ] - }, - "TerminateInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - } - } - }, - "TerminateInstancesResult":{ - "type":"structure", - "members":{ - "TerminatingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more terminated instances.

", - "locationName":"instancesSet", - "queryName":"InstancesSet" - } - } - }, - "UnassignPrivateIpAddressesRequest":{ - "type":"structure", - "required":[ - "NetworkInterfaceId", - "PrivateIpAddresses" - ], - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "queryName":"NetworkInterfaceId", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressStringList", - "documentation":"

The secondary private IP addresses to unassign from\n\t\t\t\tthe network interface. You can specify this option multiple times to\n\t\t\t\tunassign more than one IP address.

", - "locationName":"privateIpAddress", - "queryName":"PrivateIpAddress" - } - } - }, - "UnmonitorInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "queryName":"DryRun", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId", - "queryName":"InstanceId" - } - } - }, - "UnmonitorInstancesResult":{ - "type":"structure", - "members":{ - "InstanceMonitorings":{ - "shape":"InstanceMonitoringList", - "documentation":"

Monitoring information for one or more instances.

", - "locationName":"instancesSet", - "queryName":"InstancesSet" - } - } - }, - "UserGroupStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"UserGroup" - }, - "queryFlattened":true - }, - "UserIdGroupPair":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The ID of an AWS account.

", - "locationName":"userId", - "queryName":"UserId" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The ID of the security group owned by the specified AWS account.

", - "locationName":"groupName", - "queryName":"GroupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The name of the security group in the specified AWS account.

", - "locationName":"groupId", - "queryName":"GroupId" - } - }, - "documentation":"

Describes a security group and AWS account ID pair for EC2-Classic.

" - }, - "UserIdGroupPairList":{ - "type":"list", - "member":{ - "shape":"UserIdGroupPair", - "locationName":"item" - }, - "queryFlattened":true - }, - "UserIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"UserId" - }, - "queryFlattened":true - }, - "ValueStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - }, - "queryFlattened":true - }, - "VgwTelemetry":{ - "type":"structure", - "members":{ - "OutsideIpAddress":{ - "shape":"String", - "documentation":"

The Internet-routable IP address of the virtual private gateway's outside interface.

", - "queryName":"OutsideIpAddress", - "locationName":"outsideIpAddress" - }, - "Status":{ - "shape":"TelemetryStatus", - "documentation":"

The status of the VPN tunnel.

", - "queryName":"Status", - "locationName":"status" - }, - "LastStatusChange":{ - "shape":"DateTime", - "documentation":"

The date and time of the last change in status.

", - "queryName":"LastStatusChange", - "locationName":"lastStatusChange" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

If an error occurs, a description of the error.

", - "queryName":"StatusMessage", - "locationName":"statusMessage" - }, - "AcceptedRouteCount":{ - "shape":"Integer", - "documentation":"

The number of accepted routes.

", - "queryName":"AcceptedRouteCount", - "locationName":"acceptedRouteCount" - } - }, - "documentation":"

Describes telemetry for a VPN tunnel.

" - }, - "VgwTelemetryList":{ - "type":"list", - "member":{ - "shape":"VgwTelemetry", - "locationName":"item" - }, - "queryFlattened":true - }, - "VirtualizationType":{ - "type":"string", - "enum":[ - "hvm", - "paravirtual" - ] - }, - "Volume":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId", - "queryName":"VolumeId" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiBs.

", - "locationName":"size", - "queryName":"Size" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The snapshot from which the volume was created, if applicable.

", - "locationName":"snapshotId", - "queryName":"SnapshotId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the volume.

", - "locationName":"availabilityZone", - "queryName":"AvailabilityZone" - }, - "State":{ - "shape":"VolumeState", - "documentation":"

The volume state.

", - "locationName":"status", - "queryName":"Status" - }, - "CreateTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when volume creation was initiated.

", - "locationName":"createTime", - "queryName":"CreateTime" - }, - "Attachments":{ - "shape":"VolumeAttachmentList", - "locationName":"attachmentSet", - "queryName":"AttachmentSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the volume.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. This can be standard for standard EBS volumes or io1\n for Provisioned IOPS volumes.

", - "queryName":"VolumeType", - "locationName":"volumeType" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

The number of I/O operations per second (IOPS) that the volume supports.

", - "queryName":"Iops", - "locationName":"iops" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is encrypted.

", - "locationName":"encrypted", - "queryName":"Encrypted" - } - }, - "documentation":"

Describes a volume.

" - }, - "VolumeAttachment":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId", - "queryName":"VolumeId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId", - "queryName":"InstanceId" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name.

", - "locationName":"device", - "queryName":"Device" - }, - "State":{ - "shape":"VolumeAttachmentState", - "documentation":"

The attachment state of the volume.

", - "locationName":"status", - "queryName":"Status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "locationName":"attachTime", - "queryName":"AttachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", - "queryName":"DeleteOnTermination", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes volume attachment details.

" - }, - "VolumeAttachmentList":{ - "type":"list", - "member":{ - "shape":"VolumeAttachment", - "locationName":"item" - }, - "queryFlattened":true - }, - "VolumeAttachmentState":{ - "type":"string", - "enum":[ - "attaching", - "attached", - "detaching", - "detached" - ] - }, - "VolumeAttributeName":{ - "type":"string", - "enum":[ - "autoEnableIO", - "productCodes" - ] - }, - "VolumeDetail":{ - "type":"structure", - "required":["Size"], - "members":{ - "Size":{ - "shape":"Long", - "documentation":"

The size of the volume.

", - "queryName":"Size", - "locationName":"size" - } - }, - "documentation":"

Describes an Amazon EBS volume.

" - }, - "VolumeIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VolumeId" - }, - "queryFlattened":true - }, - "VolumeList":{ - "type":"list", - "member":{ - "shape":"Volume", - "locationName":"item" - }, - "queryFlattened":true - }, - "VolumeState":{ - "type":"string", - "enum":[ - "creating", - "available", - "in-use", - "deleting", - "deleted", - "error" - ] - }, - "VolumeStatusAction":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The code identifying the operation, for example, enable-volume-io.

", - "queryName":"Code", - "locationName":"code" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the operation.

", - "queryName":"Description", - "locationName":"description" - }, - "EventType":{ - "shape":"String", - "documentation":"

The event type associated with this operation.

", - "queryName":"EventType", - "locationName":"eventType" - }, - "EventId":{ - "shape":"String", - "documentation":"

The ID of the event associated with this operation.

", - "queryName":"EventId", - "locationName":"eventId" - } - }, - "documentation":"

Describes a volume status operation code.

" - }, - "VolumeStatusActionsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusAction", - "locationName":"item" - }, - "queryFlattened":true - }, - "VolumeStatusDetails":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"VolumeStatusName", - "documentation":"

The name of the volume status.

", - "queryName":"Name", - "locationName":"name" - }, - "Status":{ - "shape":"String", - "documentation":"

The intended status of the volume status.

", - "queryName":"Status", - "locationName":"status" - } - }, - "documentation":"

Describes a volume status.

" - }, - "VolumeStatusDetailsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusDetails", - "locationName":"item" - }, - "queryFlattened":true - }, - "VolumeStatusEvent":{ - "type":"structure", - "members":{ - "EventType":{ - "shape":"String", - "documentation":"

The type of this event.

", - "queryName":"EventType", - "locationName":"eventType" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the event.

", - "queryName":"Description", - "locationName":"description" - }, - "NotBefore":{ - "shape":"DateTime", - "documentation":"

The earliest start time of the event.

", - "queryName":"NotBefore", - "locationName":"notBefore" - }, - "NotAfter":{ - "shape":"DateTime", - "documentation":"

The latest end time of the event.

", - "queryName":"NotAfter", - "locationName":"notAfter" - }, - "EventId":{ - "shape":"String", - "documentation":"

The ID of this event.

", - "queryName":"EventId", - "locationName":"eventId" - } - }, - "documentation":"

Describes a volume status event.

" - }, - "VolumeStatusEventsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusEvent", - "locationName":"item" - }, - "queryFlattened":true - }, - "VolumeStatusInfo":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"VolumeStatusInfoStatus", - "documentation":"

The status of the volume.

", - "queryName":"Status", - "locationName":"status" - }, - "Details":{ - "shape":"VolumeStatusDetailsList", - "documentation":"

The details of the volume status.

", - "queryName":"Details", - "locationName":"details" - } - }, - "documentation":"

Describes the status of a volume.

" - }, - "VolumeStatusInfoStatus":{ - "type":"string", - "enum":[ - "ok", - "impaired", - "insufficient-data" - ] - }, - "VolumeStatusItem":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

", - "queryName":"VolumeId", - "locationName":"volumeId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the volume.

", - "queryName":"AvailabilityZone", - "locationName":"availabilityZone" - }, - "VolumeStatus":{ - "shape":"VolumeStatusInfo", - "documentation":"

The volume status.

", - "queryName":"VolumeStatus", - "locationName":"volumeStatus" - }, - "Events":{ - "shape":"VolumeStatusEventsList", - "documentation":"

A list of events associated with the volume.

", - "locationName":"eventsSet", - "queryName":"EventsSet" - }, - "Actions":{ - "shape":"VolumeStatusActionsList", - "documentation":"

The details of the operation.

", - "locationName":"actionsSet", - "queryName":"ActionsSet" - } - }, - "documentation":"

Describes the volume status.

" - }, - "VolumeStatusList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusItem", - "locationName":"item" - }, - "queryFlattened":true - }, - "VolumeStatusName":{ - "type":"string", - "enum":[ - "io-enabled", - "io-performance" - ] - }, - "VolumeType":{ - "type":"string", - "enum":[ - "standard", - "io1" - ] - }, - "Vpc":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId", - "queryName":"VpcId" - }, - "State":{ - "shape":"VpcState", - "documentation":"

The current state of the VPC.

", - "locationName":"state", - "queryName":"State" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block for the VPC.

", - "locationName":"cidrBlock", - "queryName":"CidrBlock" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the set of DHCP options you've associated with the VPC (or default\n\t\t\t\tif the default options are associated with the VPC).

", - "locationName":"dhcpOptionsId", - "queryName":"DhcpOptionsId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the VPC.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The allowed tenancy of instances launched into the VPC.

", - "queryName":"InstanceTenancy", - "locationName":"instanceTenancy" - }, - "IsDefault":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPC is the default VPC.

", - "queryName":"IsDefault", - "locationName":"isDefault" - } - }, - "documentation":"

Describes a VPC.

" - }, - "VpcAttachment":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId", - "queryName":"VpcId" - }, - "State":{ - "shape":"AttachmentStatus", - "documentation":"

The current state of the attachment.

", - "locationName":"state", - "queryName":"State" - } - }, - "documentation":"

Describes an attachment between a virtual private gateway and a VPC.

" - }, - "VpcAttachmentList":{ - "type":"list", - "member":{ - "shape":"VpcAttachment", - "locationName":"item" - }, - "queryFlattened":true - }, - "VpcAttributeName":{ - "type":"string", - "enum":[ - "enableDnsSupport", - "enableDnsHostnames" - ] - }, - "VpcIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpcId" - }, - "queryFlattened":true - }, - "VpcList":{ - "type":"list", - "member":{ - "shape":"Vpc", - "locationName":"item" - }, - "queryFlattened":true - }, - "VpcPeeringConnection":{ - "type":"structure", - "members":{ - "AccepterVpcInfo":{ - "shape":"VpcPeeringConnectionVpcInfo", - "documentation":"

The information of the peer VPC.

", - "queryName":"AccepterVpcInfo", - "locationName":"accepterVpcInfo" - }, - "ExpirationTime":{ - "shape":"DateTime", - "documentation":"

The time that an unaccepted VPC peering connection will expire.

", - "queryName":"ExpirationTime", - "locationName":"expirationTime" - }, - "RequesterVpcInfo":{ - "shape":"VpcPeeringConnectionVpcInfo", - "documentation":"

The information of the requester VPC.

", - "queryName":"RequesterVpcInfo", - "locationName":"requesterVpcInfo" - }, - "Status":{ - "shape":"VpcPeeringConnectionStateReason", - "documentation":"

The status of the VPC peering connection.

", - "queryName":"Status", - "locationName":"status" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "queryName":"VpcPeeringConnectionId", - "locationName":"vpcPeeringConnectionId" - } - }, - "documentation":"

Describes a VPC peering connection.

" - }, - "VpcPeeringConnectionList":{ - "type":"list", - "member":{ - "shape":"VpcPeeringConnection", - "locationName":"item" - }, - "queryFlattened":true - }, - "VpcPeeringConnectionStateReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The status of the VPC peering connection.

", - "queryName":"Code", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

A message that provides more information about the status, if applicable.

", - "queryName":"Message", - "locationName":"message" - } - }, - "documentation":"

Describes the status of a VPC peering connection.

" - }, - "VpcPeeringConnectionVpcInfo":{ - "type":"structure", - "members":{ - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block for the VPC.

", - "queryName":"CidrBlock", - "locationName":"cidrBlock" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the VPC owner.

", - "queryName":"OwnerId", - "locationName":"ownerId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "queryName":"VpcId", - "locationName":"vpcId" - } - }, - "documentation":"

Describes a VPC in a VPC peering connection.

" - }, - "VpcState":{ - "type":"string", - "enum":[ - "pending", - "available" - ] - }, - "VpnConnection":{ - "type":"structure", - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

", - "locationName":"vpnConnectionId", - "queryName":"VpnConnectionId" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the VPN connection.

", - "locationName":"state", - "queryName":"State" - }, - "CustomerGatewayConfiguration":{ - "shape":"String", - "documentation":"

The configuration information for the VPN connection's customer gateway (in the\n\t\t\t\tnative XML format). This element is always present in the\n\t\t\t\tCreateVpnConnection response; however, it's present in the\n\t\t\t\tDescribeVpnConnections response only if the VPN connection is in\n\t\t\t\tthe pending or available state.

", - "locationName":"customerGatewayConfiguration", - "queryName":"CustomerGatewayConfiguration" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection.

", - "locationName":"type", - "queryName":"Type" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway at your end of the VPN connection.

", - "locationName":"customerGatewayId", - "queryName":"CustomerGatewayId" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway at the AWS side of the VPN connection.

", - "locationName":"vpnGatewayId", - "queryName":"VpnGatewayId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the VPN connection.

", - "locationName":"tagSet", - "queryName":"TagSet" - }, - "VgwTelemetry":{ - "shape":"VgwTelemetryList", - "documentation":"

Information about the VPN tunnel.

", - "queryName":"VgwTelemetry", - "locationName":"vgwTelemetry" - }, - "Options":{ - "shape":"VpnConnectionOptions", - "documentation":"

The VPN connection options.

", - "queryName":"Options", - "locationName":"options" - }, - "Routes":{ - "shape":"VpnStaticRouteList", - "documentation":"

The static routes associated with the VPN connection.

", - "queryName":"Routes", - "locationName":"routes" - } - }, - "documentation":"

Describes a VPN connection.

" - }, - "VpnConnectionIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpnConnectionId" - }, - "queryFlattened":true - }, - "VpnConnectionList":{ - "type":"list", - "member":{ - "shape":"VpnConnection", - "locationName":"item" - }, - "queryFlattened":true - }, - "VpnConnectionOptions":{ - "type":"structure", - "members":{ - "StaticRoutesOnly":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPN connection uses static routes only. \n\t\t Static routes must be used for devices that don't support BGP.

", - "queryName":"StaticRoutesOnly", - "locationName":"staticRoutesOnly" - } - }, - "documentation":"

Describes VPN connection options.

" - }, - "VpnConnectionOptionsSpecification":{ - "type":"structure", - "members":{ - "StaticRoutesOnly":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPN connection uses static routes only. \n\t\t Static routes must be used for devices that don't support BGP.

", - "queryName":"StaticRoutesOnly", - "locationName":"staticRoutesOnly" - } - }, - "documentation":"

Describes VPN connection options.

" - }, - "VpnGateway":{ - "type":"structure", - "members":{ - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "locationName":"vpnGatewayId", - "queryName":"VpnGatewayId" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the virtual private gateway.

", - "locationName":"state", - "queryName":"State" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection the virtual private gateway supports.

", - "locationName":"type", - "queryName":"Type" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the virtual private gateway was created.

", - "locationName":"availabilityZone", - "queryName":"AvailabilityZone" - }, - "VpcAttachments":{ - "shape":"VpcAttachmentList", - "documentation":"

Any VPCs attached to the virtual private gateway.

", - "locationName":"attachments", - "queryName":"Attachments" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the virtual private gateway.

", - "locationName":"tagSet", - "queryName":"TagSet" - } - }, - "documentation":"

Describes a virtual private gateway.

" - }, - "VpnGatewayIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpnGatewayId" - }, - "queryFlattened":true - }, - "VpnGatewayList":{ - "type":"list", - "member":{ - "shape":"VpnGateway", - "locationName":"item" - }, - "queryFlattened":true - }, - "VpnState":{ - "type":"string", - "enum":[ - "pending", - "available", - "deleting", - "deleted" - ] - }, - "VpnStaticRoute":{ - "type":"structure", - "members":{ - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer data center.

", - "queryName":"DestinationCidrBlock", - "locationName":"destinationCidrBlock" - }, - "Source":{ - "shape":"VpnStaticRouteSource", - "documentation":"

Indicates how the routes were provided.

", - "queryName":"Source", - "locationName":"source" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the static route.

", - "queryName":"State", - "locationName":"state" - } - }, - "documentation":"

Describes a static route for a VPN connection.

" - }, - "VpnStaticRouteList":{ - "type":"list", - "member":{ - "shape":"VpnStaticRoute", - "locationName":"item" - }, - "queryFlattened":true - }, - "VpnStaticRouteSource":{ - "type":"string", - "enum":["Static"] - }, - "ZoneNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ZoneName" - }, - "queryFlattened":true - }, - "Blob":{"type":"blob"}, - "BlobAttributeValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"Blob", - "locationName":"value" - } - } - } - } -} diff --git a/EC2/Resources/ec2-2014-06-15.json b/EC2/Resources/ec2-2014-06-15.json new file mode 100644 index 00000000000..ea9cf9ba925 --- /dev/null +++ b/EC2/Resources/ec2-2014-06-15.json @@ -0,0 +1,11674 @@ +{ + "metadata":{ + "apiVersion":"2014-06-15", + "endpointPrefix":"ec2", + "serviceAbbreviation":"Amazon EC2", + "serviceFullName":"Amazon Elastic Compute Cloud", + "signatureVersion":"v2", + "xmlNamespace":"http://ec2.amazonaws.com/doc/2014-06-15", + "protocol":"ec2" + }, + "documentation":"Amazon Elastic Compute Cloud

Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing capacity in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates your need to invest in hardware up front, so you can develop and deploy applications faster.

", + "operations":{ + "AcceptVpcPeeringConnection":{ + "name":"AcceptVpcPeeringConnection", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AcceptVpcPeeringConnectionRequest"}, + "output":{"shape":"AcceptVpcPeeringConnectionResult"}, + "documentation":"

Accept a VPC peering connection request. To accept a request, the VPC peering connection must be in the pending-acceptance state, and you must be the owner of the peer VPC. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

" + }, + "AllocateAddress":{ + "name":"AllocateAddress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AllocateAddressRequest"}, + "output":{"shape":"AllocateAddressResult"}, + "documentation":"

Acquires an Elastic IP address.

An Elastic IP address is for use either in the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

" + }, + "AssignPrivateIpAddresses":{ + "name":"AssignPrivateIpAddresses", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AssignPrivateIpAddressesRequest"}, + "documentation":"

Assigns one or more secondary private IP addresses to the specified network interface. You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see Instance Types in the Amazon Elastic Compute Cloud User Guide. For more information about Elastic IP addresses, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

AssignPrivateIpAddresses is available only in EC2-VPC.

" + }, + "AssociateAddress":{ + "name":"AssociateAddress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AssociateAddressRequest"}, + "output":{"shape":"AssociateAddressResult"}, + "documentation":"

Associates an Elastic IP address with an instance or a network interface.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

[EC2-Classic, default VPC] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance.

[EC2-VPC] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

" + }, + "AssociateDhcpOptions":{ + "name":"AssociateDhcpOptions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AssociateDhcpOptionsRequest"}, + "documentation":"

Associates a set of DHCP options (that you've previously created) with the specified VPC, or associates no DHCP options with the VPC.

After you associate the options with the VPC, any existing instances and all new instances that you launch in that VPC use the options. You don't need to restart or relaunch the instances. They automatically pick up the changes within a few hours, depending on how frequently the instance renews its DHCP lease. You can explicitly renew the lease using the operating system on the instance.

For more information, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" + }, + "AssociateRouteTable":{ + "name":"AssociateRouteTable", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AssociateRouteTableRequest"}, + "output":{"shape":"AssociateRouteTableResult"}, + "documentation":"

Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" + }, + "AttachInternetGateway":{ + "name":"AttachInternetGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AttachInternetGatewayRequest"}, + "documentation":"

Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

" + }, + "AttachNetworkInterface":{ + "name":"AttachNetworkInterface", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AttachNetworkInterfaceRequest"}, + "output":{"shape":"AttachNetworkInterfaceResult"}, + "documentation":"

Attaches a network interface to an instance.

" + }, + "AttachVolume":{ + "name":"AttachVolume", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AttachVolumeRequest"}, + "output":{ + "shape":"VolumeAttachment", + "locationName":"attachment" + }, + "documentation":"

Attaches an Amazon EBS volume to a running or stopped instance and exposes it to the instance with the specified device name.

Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

For a list of supported device names, see Attaching an Amazon EBS Volume to an Instance. Any device names that aren't reserved for instance store volumes can be used for Amazon EBS volumes. For more information, see Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide.

If a volume has an AWS Marketplace product code:

  • The volume can only be attached as the root device of a stopped instance.
  • You must be subscribed to the AWS Marketplace code that is on the volume.
  • The configuration (instance type, operating system) of the instance must support that specific AWS Marketplace code. For example, you cannot take a volume from a Windows instance and attach it to a Linux instance.
  • AWS Marketplace product codes are copied from the volume to the instance.

For an overview of the AWS Marketplace, see https://aws.amazon.com/marketplace/help/200900000. For more information about how to use the AWS Marketplace, see AWS Marketplace.

For more information about Amazon EBS volumes, see Attaching Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

" + }, + "AttachVpnGateway":{ + "name":"AttachVpnGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AttachVpnGatewayRequest"}, + "output":{"shape":"AttachVpnGatewayResult"}, + "documentation":"

Attaches a virtual private gateway to a VPC. For more information, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "AuthorizeSecurityGroupEgress":{ + "name":"AuthorizeSecurityGroupEgress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AuthorizeSecurityGroupEgressRequest"}, + "documentation":"

Adds one or more egress rules to a security group for use with a VPC. Specifically, this action permits instances to send traffic to one or more CIDR IP address ranges, or to one or more security groups for the same VPC.

You can have up to 50 rules per security group (covering both ingress and egress rules).

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. This action doesn't apply to security groups for use in EC2-Classic. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

Each rule consists of the protocol (for example, TCP), plus either a CIDR range or a source group. For the TCP and UDP protocols, you must also specify the destination port or port range. For the ICMP protocol, you must also specify the ICMP type and code. You can use -1 for the type or code to mean all types or all codes.

Rule changes are propagated to affected instances as quickly as possible. However, a small delay might occur.

" + }, + "AuthorizeSecurityGroupIngress":{ + "name":"AuthorizeSecurityGroupIngress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AuthorizeSecurityGroupIngressRequest"}, + "documentation":"

Adds one or more ingress rules to a security group.

EC2-Classic: You can have up to 100 rules per group.

EC2-VPC: You can have up to 50 rules per group (covering both ingress and egress rules).

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

[EC2-Classic] This action gives one or more CIDR IP address ranges permission to access a security group in your account, or gives one or more security groups (called the source groups) permission to access a security group for your account. A source group can be for your own AWS account, or another.

[EC2-VPC] This action gives one or more CIDR IP address ranges permission to access a security group in your VPC, or gives one or more other security groups (called the source groups) permission to access a security group for your VPC. The security groups must all be for the same VPC.

" + }, + "BundleInstance":{ + "name":"BundleInstance", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"BundleInstanceRequest"}, + "output":{"shape":"BundleInstanceResult"}, + "documentation":"

Bundles an Amazon instance store-backed Windows instance.

During bundling, only the root device volume (C:\\) is bundled. Data on other instance store volumes is not preserved.

For more information, see Creating an Instance Store-Backed Windows AMI.

" + }, + "CancelBundleTask":{ + "name":"CancelBundleTask", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CancelBundleTaskRequest"}, + "output":{"shape":"CancelBundleTaskResult"}, + "documentation":"

Cancels a bundling operation for an instance store-backed Windows instance.

" + }, + "CancelConversionTask":{ + "name":"CancelConversionTask", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CancelConversionRequest"}, + "documentation":"

Cancels an active conversion task. The task can be the import of an instance or volume. The action removes all artifacts of the conversion, including a partially uploaded volume or instance. If the conversion is complete or is in the process of transferring the final disk image, the command fails and returns an exception.

For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CancelExportTask":{ + "name":"CancelExportTask", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CancelExportTaskRequest"}, + "documentation":"

Cancels an active export task. The request removes all artifacts of the export, including any partially-created Amazon S3 objects. If the export task is complete or is in the process of transferring the final disk image, the command fails and returns an error.

" + }, + "CancelReservedInstancesListing":{ + "name":"CancelReservedInstancesListing", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CancelReservedInstancesListingRequest"}, + "output":{"shape":"CancelReservedInstancesListingResult"}, + "documentation":"

Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CancelSpotInstanceRequests":{ + "name":"CancelSpotInstanceRequests", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CancelSpotInstanceRequestsRequest"}, + "output":{"shape":"CancelSpotInstanceRequestsResult"}, + "documentation":"

Cancels one or more Spot Instance requests. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

Canceling a Spot Instance request does not terminate running Spot Instances associated with the request.

" + }, + "ConfirmProductInstance":{ + "name":"ConfirmProductInstance", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ConfirmProductInstanceRequest"}, + "output":{"shape":"ConfirmProductInstanceResult"}, + "documentation":"

Determines whether a product code is associated with an instance. This action can only be used by the owner of the product code. It is useful when a product code owner needs to verify whether another user's instance is eligible for support.

" + }, + "CopyImage":{ + "name":"CopyImage", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CopyImageRequest"}, + "output":{"shape":"CopyImageResult"}, + "documentation":"

Initiates the copy of an AMI from the specified source region to the region in which the request was made. You specify the destination region by using its endpoint when making the request. AMIs that use encrypted Amazon EBS snapshots cannot be copied with this method.

For more information, see Copying AMIs in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CopySnapshot":{ + "name":"CopySnapshot", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CopySnapshotRequest"}, + "output":{"shape":"CopySnapshotResult"}, + "documentation":"

Copies a point-in-time snapshot of an Amazon EBS volume and stores it in Amazon S3. You can copy the snapshot within the same region or from one region to another. You can use the snapshot to create Amazon EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint that you send the HTTP request to.

Copies of encrypted Amazon EBS snapshots remain encrypted. Copies of unencrypted snapshots remain unencrypted.

For more information, see Copying an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateCustomerGateway":{ + "name":"CreateCustomerGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateCustomerGatewayRequest"}, + "output":{"shape":"CreateCustomerGatewayResult"}, + "documentation":"

Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and can't be behind a device performing network address translation (NAT).

For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range).

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateDhcpOptions":{ + "name":"CreateDhcpOptions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateDhcpOptionsRequest"}, + "output":{"shape":"CreateDhcpOptionsResult"}, + "documentation":"

Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see RFC 2132.

  • domain-name-servers - The IP addresses of up to four domain name servers, or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas.
  • domain-name - If you're using AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS in another region, specify region.compute.internal (for example, ap-northeast-1.compute.internal). Otherwise, specify a domain name (for example, MyCompany.com). If specifying more than one domain name, separate them with spaces.
  • ntp-servers - The IP addresses of up to four Network Time Protocol (NTP) servers.
  • netbios-name-servers - The IP addresses of up to four NetBIOS name servers.
  • netbios-node-type - The NetBIOS node type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast are not currently supported). For more information about these node types, see RFC 2132.

For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateImage":{ + "name":"CreateImage", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateImageRequest"}, + "output":{"shape":"CreateImageResult"}, + "documentation":"

Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either running or stopped.

If you customized your instance with instance store volumes or EBS volumes in addition to the root device volume, the new AMI contains block device mapping information for those volumes. When you launch an instance from this new AMI, the instance automatically launches with those additional volumes.

For more information, see Creating Amazon EBS-Backed Linux AMIs in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateInstanceExportTask":{ + "name":"CreateInstanceExportTask", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateInstanceExportTaskRequest"}, + "output":{"shape":"CreateInstanceExportTaskResult"}, + "documentation":"

Exports a running or stopped instance to an Amazon S3 bucket.

For information about the supported operating systems, image formats, and known limitations for the types of instances you can export, see Exporting EC2 Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateInternetGateway":{ + "name":"CreateInternetGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateInternetGatewayRequest"}, + "output":{"shape":"CreateInternetGatewayResult"}, + "documentation":"

Creates an Internet gateway for use with a VPC. After creating the Internet gateway, you attach it to a VPC using AttachInternetGateway.

For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateKeyPair":{ + "name":"CreateKeyPair", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateKeyPairRequest"}, + "output":{ + "shape":"KeyPair", + "documentation":"

Information about the key pair.

", + "locationName":"keyPair" + }, + "documentation":"

Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key and displays the private key for you to save to a file. The private key is returned as an unencrypted PEM encoded PKCS#8 private key. If a key with the specified name already exists, Amazon EC2 returns an error.

You can have up to five thousand key pairs per region.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateNetworkAcl":{ + "name":"CreateNetworkAcl", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateNetworkAclRequest"}, + "output":{"shape":"CreateNetworkAclResult"}, + "documentation":"

Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition to security groups) for the instances in your VPC.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateNetworkAclEntry":{ + "name":"CreateNetworkAclEntry", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateNetworkAclEntryRequest"}, + "documentation":"

Creates an entry (a rule) in a network ACL with the specified rule number. Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the ACL, we process the entries in the ACL according to the rule numbers, in ascending order. Each network ACL has a set of ingress rules and a separate set of egress rules.

We recommend that you leave room between the rule numbers (for example, 100, 110, 120, ...), and not number them one right after the other (for example, 101, 102, 103, ...). This makes it easier to add a rule between existing ones without having to renumber the rules.

After you add an entry, you can't modify it; you must either replace it, or create an entry and delete the old one.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateNetworkInterface":{ + "name":"CreateNetworkInterface", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateNetworkInterfaceRequest"}, + "output":{"shape":"CreateNetworkInterfaceResult"}, + "documentation":"

Creates a network interface in the specified subnet.

For more information about network interfaces, see Elastic Network Interfaces in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreatePlacementGroup":{ + "name":"CreatePlacementGroup", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreatePlacementGroupRequest"}, + "documentation":"

Creates a placement group that you launch cluster instances into. You must give the group a name that's unique within the scope of your account.

For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateReservedInstancesListing":{ + "name":"CreateReservedInstancesListing", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateReservedInstancesListingRequest"}, + "output":{"shape":"CreateReservedInstancesListingResult"}, + "documentation":"

Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved Instance Marketplace. You can submit one Reserved Instance listing at a time.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateRoute":{ + "name":"CreateRoute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateRouteRequest"}, + "documentation":"

Creates a route in a route table within a VPC.

You must specify one of the following targets: Internet gateway, NAT instance, VPC peering connection, or network interface.

When determining how to route traffic, we use the route with the most specific match. For example, let's say the traffic is destined for 192.0.2.3, and the route table includes the following two routes:

  • 192.0.2.0/24 (goes to some target A)

  • 192.0.2.0/28 (goes to some target B)

Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateRouteTable":{ + "name":"CreateRouteTable", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateRouteTableRequest"}, + "output":{"shape":"CreateRouteTableResult"}, + "documentation":"

Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateSecurityGroup":{ + "name":"CreateSecurityGroup", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateSecurityGroupRequest"}, + "output":{"shape":"CreateSecurityGroupResult"}, + "documentation":"

Creates a security group.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

EC2-Classic: You can have up to 500 security groups.

EC2-VPC: You can create up to 100 security groups per VPC.

When you create a security group, you specify a friendly name of your choice. You can have a security group for use in EC2-Classic with the same name as a security group for use in a VPC. However, you can't have two security groups for use in EC2-Classic with the same name or two security groups for use in a VPC with the same name.

You have a default security group for use in EC2-Classic and a default security group for use in your VPC. If you don't specify a security group when you launch an instance, the instance is launched into the appropriate default security group. A default security group includes a default rule that grants instances unrestricted network access to each other.

You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress.

" + }, + "CreateSnapshot":{ + "name":"CreateSnapshot", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateSnapshotRequest"}, + "output":{ + "shape":"Snapshot", + "locationName":"snapshot" + }, + "documentation":"

Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make copies of Amazon EBS volumes, and to save data before shutting down an instance.

When a snapshot is created, any AWS Marketplace product codes that are associated with the source volume are propagated to the snapshot.

You can take a snapshot of an attached volume that is in use. However, snapshots only capture data that has been written to your Amazon EBS volume at the time the snapshot command is issued; this may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the volume long enough to take a snapshot, your snapshot should be complete. However, if you cannot pause all file writes to the volume, you should unmount the volume from within the instance, issue the snapshot command, and then remount the volume to ensure a consistent and complete snapshot. You may remount and use your volume while the snapshot status is pending.

To create a snapshot for Amazon EBS volumes that serve as root devices, you should stop the instance before taking the snapshot.

Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and any associated snapshots always remain protected.

For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateSpotDatafeedSubscription":{ + "name":"CreateSpotDatafeedSubscription", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateSpotDatafeedSubscriptionRequest"}, + "output":{"shape":"CreateSpotDatafeedSubscriptionResult"}, + "documentation":"

Creates a datafeed for Spot Instances, enabling you to view Spot Instance usage logs. You can create one data feed per AWS account. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateSubnet":{ + "name":"CreateSubnet", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateSubnetRequest"}, + "output":{"shape":"CreateSubnetResult"}, + "documentation":"

Creates a subnet in an existing VPC.

When you create each subnet, you provide the VPC ID and the CIDR block you want for the subnet. After you create a subnet, you can't change its CIDR block. The subnet's CIDR block can be the same as the VPC's CIDR block (assuming you want only a single subnet in the VPC), or a subset of the VPC's CIDR block. If you create more than one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest subnet (and VPC) you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses).

AWS reserves both the first four and the last IP address in each subnet's CIDR block. They're not available for use.

If you add more than one subnet to a VPC, they're set up in a star topology with a logical router in the middle.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateTags":{ + "name":"CreateTags", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateTagsRequest"}, + "documentation":"

Adds or overwrites one or more tags for the specified EC2 resource or resources. Each resource can have a maximum of 10 tags. Each tag consists of a key and optional value. Tag keys must be unique per resource.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateVolume":{ + "name":"CreateVolume", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateVolumeRequest"}, + "output":{ + "shape":"Volume", + "locationName":"volume" + }, + "documentation":"

Creates an Amazon EBS volume that can be attached to an instance in the same Availability Zone. The volume is created in the specified region.

You can create a new empty volume or restore a volume from an Amazon EBS snapshot. Any AWS Marketplace product codes from the snapshot are propagated to the volume.

You can create encrypted volumes with the Encrypted parameter. Encrypted volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

For more information, see Creating or Restoring an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

" + }, + "CreateVpc":{ + "name":"CreateVpc", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateVpcRequest"}, + "output":{"shape":"CreateVpcResult"}, + "documentation":"

Creates a VPC with the specified CIDR block.

The smallest VPC you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses). To help you decide how big to make your VPC, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

By default, each instance you launch in the VPC has the default DHCP options, which includes only a default DNS server that we provide (AmazonProvidedDNS). For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateVpcPeeringConnection":{ + "name":"CreateVpcPeeringConnection", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateVpcPeeringConnectionRequest"}, + "output":{"shape":"CreateVpcPeeringConnectionResult"}, + "documentation":"

Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer VPC with which to create the connection. The peer VPC can belong to another AWS account. The requester VPC and peer VPC cannot have overlapping CIDR blocks.

The owner of the peer VPC must accept the peering request to activate the peering connection. The VPC peering connection request expires after 7 days, after which it cannot be accepted or rejected.

A CreateVpcPeeringConnection request between VPCs with overlapping CIDR blocks results in the VPC peering connection having a status of failed.

" + }, + "CreateVpnConnection":{ + "name":"CreateVpnConnection", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateVpnConnectionRequest"}, + "output":{"shape":"CreateVpnConnectionResult"}, + "documentation":"

Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The only supported connection type is ipsec.1.

The response includes information that you need to give to your network administrator to configure your customer gateway.

We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway.

If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateVpnConnectionRoute":{ + "name":"CreateVpnConnectionRoute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateVpnConnectionRouteRequest"}, + "documentation":"

Creates a static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "CreateVpnGateway":{ + "name":"CreateVpnGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateVpnGatewayRequest"}, + "output":{"shape":"CreateVpnGatewayResult"}, + "documentation":"

Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.

For more information about virtual private gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "DeleteCustomerGateway":{ + "name":"DeleteCustomerGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteCustomerGatewayRequest"}, + "documentation":"

Deletes the specified customer gateway. You must delete the VPN connection before you can delete the customer gateway.

" + }, + "DeleteDhcpOptions":{ + "name":"DeleteDhcpOptions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteDhcpOptionsRequest"}, + "documentation":"

Deletes the specified set of DHCP options. You must disassociate the set of DHCP options before you can delete it. You can disassociate the set of DHCP options by associating either a new set of options or the default set of options with the VPC.

" + }, + "DeleteInternetGateway":{ + "name":"DeleteInternetGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteInternetGatewayRequest"}, + "documentation":"

Deletes the specified Internet gateway. You must detach the Internet gateway from the VPC before you can delete it.

" + }, + "DeleteKeyPair":{ + "name":"DeleteKeyPair", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteKeyPairRequest"}, + "documentation":"

Deletes the specified key pair, by removing the public key from Amazon EC2.

" + }, + "DeleteNetworkAcl":{ + "name":"DeleteNetworkAcl", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteNetworkAclRequest"}, + "documentation":"

Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. You can't delete the default network ACL.

" + }, + "DeleteNetworkAclEntry":{ + "name":"DeleteNetworkAclEntry", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteNetworkAclEntryRequest"}, + "documentation":"

Deletes the specified ingress or egress entry (rule) from the specified network ACL.

" + }, + "DeleteNetworkInterface":{ + "name":"DeleteNetworkInterface", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteNetworkInterfaceRequest"}, + "documentation":"

Deletes the specified network interface. You must detach the network interface before you can delete it.

" + }, + "DeletePlacementGroup":{ + "name":"DeletePlacementGroup", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeletePlacementGroupRequest"}, + "documentation":"

Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DeleteRoute":{ + "name":"DeleteRoute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteRouteRequest"}, + "documentation":"

Deletes the specified route from the specified route table.

" + }, + "DeleteRouteTable":{ + "name":"DeleteRouteTable", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteRouteTableRequest"}, + "documentation":"

Deletes the specified route table. You must disassociate the route table from any subnets before you can delete it. You can't delete the main route table.

" + }, + "DeleteSecurityGroup":{ + "name":"DeleteSecurityGroup", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteSecurityGroupRequest"}, + "documentation":"

Deletes a security group.

If you attempt to delete a security group that is associated with an instance, or is referenced by another security group, the operation fails with InvalidGroup.InUse in EC2-Classic or DependencyViolation in EC2-VPC.

" + }, + "DeleteSnapshot":{ + "name":"DeleteSnapshot", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteSnapshotRequest"}, + "documentation":"

Deletes the specified snapshot.

When you make periodic snapshots of a volume, the snapshots are incremental, and only the blocks on the device that have changed since your last snapshot are saved in the new snapshot. When you delete a snapshot, only the data not needed for any other snapshot is removed. So regardless of which prior snapshots have been deleted, all active snapshots will have access to all the information needed to restore the volume.

You cannot delete a snapshot of the root device of an Amazon EBS volume used by a registered AMI. You must first de-register the AMI before you can delete the snapshot.

For more information, see Deleting an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DeleteSpotDatafeedSubscription":{ + "name":"DeleteSpotDatafeedSubscription", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteSpotDatafeedSubscriptionRequest"}, + "documentation":"

Deletes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DeleteSubnet":{ + "name":"DeleteSubnet", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteSubnetRequest"}, + "documentation":"

Deletes the specified subnet. You must terminate all running instances in the subnet before you can delete the subnet.

" + }, + "DeleteTags":{ + "name":"DeleteTags", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteTagsRequest"}, + "documentation":"

Deletes the specified set of tags from the specified set of resources. This call is designed to follow a DescribeTags request.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DeleteVolume":{ + "name":"DeleteVolume", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteVolumeRequest"}, + "documentation":"

Deletes the specified Amazon EBS volume. The volume must be in the available state (not attached to an instance).

For more information, see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DeleteVpc":{ + "name":"DeleteVpc", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteVpcRequest"}, + "documentation":"

Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on.

" + }, + "DeleteVpcPeeringConnection":{ + "name":"DeleteVpcPeeringConnection", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteVpcPeeringConnectionRequest"}, + "output":{"shape":"DeleteVpcPeeringConnectionResult"}, + "documentation":"

Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the peer VPC can delete the VPC peering connection if it's in the active state. The owner of the requester VPC can delete a VPC peering connection in the pending-acceptance state.

" + }, + "DeleteVpnConnection":{ + "name":"DeleteVpnConnection", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteVpnConnectionRequest"}, + "documentation":"

Deletes the specified VPN connection.

If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection.

" + }, + "DeleteVpnConnectionRoute":{ + "name":"DeleteVpnConnectionRoute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteVpnConnectionRouteRequest"}, + "documentation":"

Deletes the specified static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

" + }, + "DeleteVpnGateway":{ + "name":"DeleteVpnGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteVpnGatewayRequest"}, + "documentation":"

Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network.

" + }, + "DeregisterImage":{ + "name":"DeregisterImage", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeregisterImageRequest"}, + "documentation":"

Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances.

This command does not delete the AMI.

" + }, + "DescribeAccountAttributes":{ + "name":"DescribeAccountAttributes", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeAccountAttributesRequest"}, + "output":{"shape":"DescribeAccountAttributesResult"}, + "documentation":"

Describes the specified attribute of your AWS account.

" + }, + "DescribeAddresses":{ + "name":"DescribeAddresses", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeAddressesRequest"}, + "output":{"shape":"DescribeAddressesResult"}, + "documentation":"

Describes one or more of your Elastic IP addresses.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeAvailabilityZones":{ + "name":"DescribeAvailabilityZones", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeAvailabilityZonesRequest"}, + "output":{"shape":"DescribeAvailabilityZonesResult"}, + "documentation":"

Describes one or more of the Availability Zones that are available to you. The results include zones only for the region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone.

For more information, see Regions and Availability Zones in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeBundleTasks":{ + "name":"DescribeBundleTasks", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeBundleTasksRequest"}, + "output":{"shape":"DescribeBundleTasksResult"}, + "documentation":"

Describes one or more of your bundling tasks.

" + }, + "DescribeConversionTasks":{ + "name":"DescribeConversionTasks", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeConversionTasksRequest"}, + "output":{"shape":"DescribeConversionTasksResult"}, + "documentation":"

Describes one or more of your conversion tasks. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeCustomerGateways":{ + "name":"DescribeCustomerGateways", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeCustomerGatewaysRequest"}, + "output":{"shape":"DescribeCustomerGatewaysResult"}, + "documentation":"

Describes one or more of your VPN customer gateways.

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "DescribeDhcpOptions":{ + "name":"DescribeDhcpOptions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeDhcpOptionsRequest"}, + "output":{"shape":"DescribeDhcpOptionsResult"}, + "documentation":"

Describes one or more of your DHCP options sets.

For more information about DHCP options sets, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" + }, + "DescribeExportTasks":{ + "name":"DescribeExportTasks", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeExportTasksRequest"}, + "output":{"shape":"DescribeExportTasksResult"}, + "documentation":"

Describes one or more of your export tasks.

" + }, + "DescribeImageAttribute":{ + "name":"DescribeImageAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeImageAttributeRequest"}, + "output":{ + "shape":"ImageAttribute", + "documentation":"

Information about the image attribute.

", + "locationName":"imageAttribute" + }, + "documentation":"

Describes the specified attribute of the specified AMI. You can specify only one attribute at a time.

" + }, + "DescribeImages":{ + "name":"DescribeImages", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeImagesRequest"}, + "output":{"shape":"DescribeImagesResult"}, + "documentation":"

Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to you include public images, private images that you own, and private images owned by other AWS accounts but for which you have explicit launch permissions.

" + }, + "DescribeInstanceAttribute":{ + "name":"DescribeInstanceAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeInstanceAttributeRequest"}, + "output":{"shape":"InstanceAttribute"}, + "documentation":"

Describes the specified attribute of the specified instance. You can specify only one attribute at a time.

" + }, + "DescribeInstanceStatus":{ + "name":"DescribeInstanceStatus", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeInstanceStatusRequest"}, + "output":{"shape":"DescribeInstanceStatusResult"}, + "documentation":"

Describes the status of one or more instances, including any scheduled events.

Instance status has two main components:

  • System Status reports impaired functionality that stems from issues related to the systems that support an instance, such as such as hardware failures and network connectivity problems. This call reports such problems as impaired reachability.

  • Instance Status reports impaired functionality that arises from problems internal to the instance. This call reports such problems as impaired reachability.

Instance status provides information about four types of scheduled events for an instance that may require your attention:

  • Scheduled Reboot: When Amazon EC2 determines that an instance must be rebooted, the instances status returns one of two event codes: system-reboot or instance-reboot. System reboot commonly occurs if certain maintenance or upgrade operations require a reboot of the underlying host that supports an instance. Instance reboot commonly occurs if the instance must be rebooted, rather than the underlying host. Rebooting events include a scheduled start and end time.

  • System Maintenance: When Amazon EC2 determines that an instance requires maintenance that requires power or network impact, the instance status is the event code system-maintenance. System maintenance is either power maintenance or network maintenance. For power maintenance, your instance will be unavailable for a brief period of time and then rebooted. For network maintenance, your instance will experience a brief loss of network connectivity. System maintenance events include a scheduled start and end time. You will also be notified by email if one of your instances is set for system maintenance. The email message indicates when your instance is scheduled for maintenance.

  • Scheduled Retirement: When Amazon EC2 determines that an instance must be shut down, the instance status is the event code instance-retirement. Retirement commonly occurs when the underlying host is degraded and must be replaced. Retirement events include a scheduled start and end time. You will also be notified by email if one of your instances is set to retiring. The email message indicates when your instance will be permanently retired.

  • Scheduled Stop: When Amazon EC2 determines that an instance must be shut down, the instances status returns an event code called instance-stop. Stop events include a scheduled start and end time. You will also be notified by email if one of your instances is set to stop. The email message indicates when your instance will be stopped.

When your instance is retired, it will either be terminated (if its root device type is the instance-store) or stopped (if its root device type is an EBS volume). Instances stopped due to retirement will not be restarted, but you can do so manually. You can also avoid retirement of EBS-backed instances by manually restarting your instance when its event code is instance-retirement. This ensures that your instance is started on a different underlying host.

For more information about failed status checks, see Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. For more information about working with scheduled events, see Working with an Instance That Has a Scheduled Event in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeInstances":{ + "name":"DescribeInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeInstancesRequest"}, + "output":{"shape":"DescribeInstancesResult"}, + "documentation":"

Describes one or more of your instances.

If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results.

Recently terminated instances might appear in the returned results. This interval is usually less than one hour.

" + }, + "DescribeInternetGateways":{ + "name":"DescribeInternetGateways", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeInternetGatewaysRequest"}, + "output":{"shape":"DescribeInternetGatewaysResult"}, + "documentation":"

Describes one or more of your Internet gateways.

" + }, + "DescribeKeyPairs":{ + "name":"DescribeKeyPairs", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeKeyPairsRequest"}, + "output":{"shape":"DescribeKeyPairsResult"}, + "documentation":"

Describes one or more of your key pairs.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeNetworkAcls":{ + "name":"DescribeNetworkAcls", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeNetworkAclsRequest"}, + "output":{"shape":"DescribeNetworkAclsResult"}, + "documentation":"

Describes one or more of your network ACLs.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" + }, + "DescribeNetworkInterfaceAttribute":{ + "name":"DescribeNetworkInterfaceAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeNetworkInterfaceAttributeRequest"}, + "output":{"shape":"DescribeNetworkInterfaceAttributeResult"}, + "documentation":"

Describes a network interface attribute. You can specify only one attribute at a time.

" + }, + "DescribeNetworkInterfaces":{ + "name":"DescribeNetworkInterfaces", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeNetworkInterfacesRequest"}, + "output":{"shape":"DescribeNetworkInterfacesResult"}, + "documentation":"

Describes one or more of your network interfaces.

" + }, + "DescribePlacementGroups":{ + "name":"DescribePlacementGroups", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribePlacementGroupsRequest"}, + "output":{"shape":"DescribePlacementGroupsResult"}, + "documentation":"

Describes one or more of your placement groups. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeRegions":{ + "name":"DescribeRegions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeRegionsRequest"}, + "output":{"shape":"DescribeRegionsResult"}, + "documentation":"

Describes one or more regions that are currently available to you.

For a list of the regions supported by Amazon EC2, see Regions and Endpoints.

" + }, + "DescribeReservedInstances":{ + "name":"DescribeReservedInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeReservedInstancesRequest"}, + "output":{"shape":"DescribeReservedInstancesResult"}, + "documentation":"

Describes one or more of the Reserved Instances that you purchased.

For more information about Reserved Instances, see Reserved Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeReservedInstancesListings":{ + "name":"DescribeReservedInstancesListings", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeReservedInstancesListingsRequest"}, + "output":{"shape":"DescribeReservedInstancesListingsResult"}, + "documentation":"

Describes your account's Reserved Instance listings in the Reserved Instance Marketplace.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeReservedInstancesModifications":{ + "name":"DescribeReservedInstancesModifications", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeReservedInstancesModificationsRequest"}, + "output":{"shape":"DescribeReservedInstancesModificationsResult"}, + "documentation":"

Describes the modifications made to your Reserved Instances. If no parameter is specified, information about all your Reserved Instances modification requests is returned. If a modification ID is specified, only information about the specific modification is returned.

" + }, + "DescribeReservedInstancesOfferings":{ + "name":"DescribeReservedInstancesOfferings", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeReservedInstancesOfferingsRequest"}, + "output":{"shape":"DescribeReservedInstancesOfferingsResult"}, + "documentation":"

Describes Reserved Instance offerings that are available for purchase. With Reserved Instances, you purchase the right to launch instances for a period of time. During that time period, you do not receive insufficient capacity errors, and you pay a lower usage rate than the rate charged for On-Demand instances for the actual time used.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeRouteTables":{ + "name":"DescribeRouteTables", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeRouteTablesRequest"}, + "output":{"shape":"DescribeRouteTablesResult"}, + "documentation":"

Describes one or more of your route tables.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" + }, + "DescribeSecurityGroups":{ + "name":"DescribeSecurityGroups", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSecurityGroupsRequest"}, + "output":{"shape":"DescribeSecurityGroupsResult"}, + "documentation":"

Describes one or more of your security groups.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "DescribeSnapshotAttribute":{ + "name":"DescribeSnapshotAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSnapshotAttributeRequest"}, + "output":{"shape":"DescribeSnapshotAttributeResult"}, + "documentation":"

Describes the specified attribute of the specified snapshot. You can specify only one attribute at a time.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeSnapshots":{ + "name":"DescribeSnapshots", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSnapshotsRequest"}, + "output":{"shape":"DescribeSnapshotsResult"}, + "documentation":"

Describes one or more of the Amazon EBS snapshots available to you. Available snapshots include public snapshots available for any AWS account to launch, private snapshots that you own, and private snapshots owned by another AWS account but for which you've been given explicit create volume permissions.

The create volume permissions fall into the following categories:

  • public: The owner of the snapshot granted create volume permissions for the snapshot to the all group. All AWS accounts have create volume permissions for these snapshots.
  • explicit: The owner of the snapshot granted create volume permissions to a specific AWS account.
  • implicit: An AWS account has implicit create volume permissions for all snapshots it owns.

The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions.

If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results.

If you specify one or more snapshot owners, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, amazon for snapshots owned by Amazon, or self for snapshots that you own.

If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), self for snapshots for which you own or have explicit permissions, or all for public snapshots.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeSpotDatafeedSubscription":{ + "name":"DescribeSpotDatafeedSubscription", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSpotDatafeedSubscriptionRequest"}, + "output":{"shape":"DescribeSpotDatafeedSubscriptionResult"}, + "documentation":"

Describes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeSpotInstanceRequests":{ + "name":"DescribeSpotInstanceRequests", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSpotInstanceRequestsRequest"}, + "output":{"shape":"DescribeSpotInstanceRequestsResult"}, + "documentation":"

Describes the Spot Instance requests that belong to your account. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

You can use DescribeSpotInstanceRequests to find a running Spot Instance by examining the response. If the status of the Spot Instance is fulfilled, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use DescribeInstances with a filter to look for instances where the instance lifecycle is spot.

" + }, + "DescribeSpotPriceHistory":{ + "name":"DescribeSpotPriceHistory", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSpotPriceHistoryRequest"}, + "output":{"shape":"DescribeSpotPriceHistoryResult"}, + "documentation":"

Describes the Spot Price history. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

When you specify an Availability Zone, this operation describes the price history for the specified Availability Zone with the most recent set of prices listed first. If you don't specify an Availability Zone, you get the prices across all Availability Zones, starting with the most recent set. However, if you're using an API version earlier than 2011-05-15, you get the lowest price across the region for the specified time period. The prices returned are listed in chronological order, from the oldest to the most recent.

" + }, + "DescribeSubnets":{ + "name":"DescribeSubnets", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeSubnetsRequest"}, + "output":{"shape":"DescribeSubnetsResult"}, + "documentation":"

Describes one or more of your subnets.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

" + }, + "DescribeTags":{ + "name":"DescribeTags", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeTagsRequest"}, + "output":{"shape":"DescribeTagsResult"}, + "documentation":"

Describes one or more of the tags for your EC2 resources.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeVolumeAttribute":{ + "name":"DescribeVolumeAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVolumeAttributeRequest"}, + "output":{"shape":"DescribeVolumeAttributeResult"}, + "documentation":"

Describes the specified attribute of the specified volume. You can specify only one attribute at a time.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeVolumeStatus":{ + "name":"DescribeVolumeStatus", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVolumeStatusRequest"}, + "output":{"shape":"DescribeVolumeStatusResult"}, + "documentation":"

Describes the status of the specified volumes. Volume status provides the result of the checks performed on your volumes to determine events that can impair the performance of your volumes. The performance of a volume can be affected if an issue occurs on the volume's underlying host. If the volume's underlying host experiences a power outage or system issue, after the system is restored, there could be data inconsistencies on the volume. Volume events notify you if this occurs. Volume actions notify you if any action needs to be taken in response to the event.

The DescribeVolumeStatus operation provides the following information about the specified volumes:

Status: Reflects the current status of the volume. The possible values are ok, impaired , warning, or insufficient-data. If all checks pass, the overall status of the volume is ok. If the check fails, the overall status is impaired. If the status is insufficient-data, then the checks may still be taking place on your volume at the time. We recommend that you retry the request. For more information on volume status, see Monitoring the Status of Your Volumes.

Events: Reflect the cause of a volume status and may require you to take action. For example, if your volume returns an impaired status, then the volume event might be potential-data-inconsistency. This means that your volume has been affected by an issue with the underlying host, has all I/O operations disabled, and may have inconsistent data.

Actions: Reflect the actions you may have to take in response to an event. For example, if the status of the volume is impaired and the volume event shows potential-data-inconsistency, then the action shows enable-volume-io. This means that you may want to enable the I/O operations for the volume by calling the EnableVolumeIO action and then check the volume for data consistency.

" + }, + "DescribeVolumes":{ + "name":"DescribeVolumes", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVolumesRequest"}, + "output":{"shape":"DescribeVolumesResult"}, + "documentation":"

Describes the specified Amazon EBS volumes.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DescribeVpcAttribute":{ + "name":"DescribeVpcAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVpcAttributeRequest"}, + "output":{"shape":"DescribeVpcAttributeResult"}, + "documentation":"

Describes the specified attribute of the specified VPC. You can specify only one attribute at a time.

" + }, + "DescribeVpcPeeringConnections":{ + "name":"DescribeVpcPeeringConnections", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVpcPeeringConnectionsRequest"}, + "output":{"shape":"DescribeVpcPeeringConnectionsResult"}, + "documentation":"

Describes one or more of your VPC peering connections.

" + }, + "DescribeVpcs":{ + "name":"DescribeVpcs", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVpcsRequest"}, + "output":{"shape":"DescribeVpcsResult"}, + "documentation":"

Describes one or more of your VPCs.

" + }, + "DescribeVpnConnections":{ + "name":"DescribeVpnConnections", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVpnConnectionsRequest"}, + "output":{"shape":"DescribeVpnConnectionsResult"}, + "documentation":"

Describes one or more of your VPN connections.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "DescribeVpnGateways":{ + "name":"DescribeVpnGateways", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeVpnGatewaysRequest"}, + "output":{"shape":"DescribeVpnGatewaysResult"}, + "documentation":"

Describes one or more of your virtual private gateways.

For more information about virtual private gateways, see Adding an IPsec Hardware VPN to Your VPC in the Amazon Virtual Private Cloud User Guide.

" + }, + "DetachInternetGateway":{ + "name":"DetachInternetGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DetachInternetGatewayRequest"}, + "documentation":"

Detaches an Internet gateway from a VPC, disabling connectivity between the Internet and the VPC. The VPC must not contain any running instances with Elastic IP addresses.

" + }, + "DetachNetworkInterface":{ + "name":"DetachNetworkInterface", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DetachNetworkInterfaceRequest"}, + "documentation":"

Detaches a network interface from an instance.

" + }, + "DetachVolume":{ + "name":"DetachVolume", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DetachVolumeRequest"}, + "output":{ + "shape":"VolumeAttachment", + "locationName":"attachment" + }, + "documentation":"

Detaches an Amazon EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so results in the volume being stuck in a busy state while detaching.

If an Amazon EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

If the root volume is detached from an instance with an AWS Marketplace product code, then the AWS Marketplace product codes from that volume are no longer associated with the instance.

For more information, see Detaching an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

" + }, + "DetachVpnGateway":{ + "name":"DetachVpnGateway", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DetachVpnGatewayRequest"}, + "documentation":"

Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the VPC and not use it anymore. You can confirm a virtual private gateway has been completely detached from a VPC by describing the virtual private gateway (any attachments to the virtual private gateway are also described).

You must wait for the attachment's state to switch to detached before you can delete the VPC or attach a different VPC to the virtual private gateway.

" + }, + "DisableVgwRoutePropagation":{ + "name":"DisableVgwRoutePropagation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DisableVgwRoutePropagationRequest"}, + "documentation":"

Disables a virtual private gateway (VGW) from propagating routes to the routing tables of a VPC.

" + }, + "DisassociateAddress":{ + "name":"DisassociateAddress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DisassociateAddressRequest"}, + "documentation":"

Disassociates an Elastic IP address from the instance or network interface it's associated with.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

" + }, + "DisassociateRouteTable":{ + "name":"DisassociateRouteTable", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DisassociateRouteTableRequest"}, + "documentation":"

Disassociates a subnet from a route table.

After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" + }, + "EnableVgwRoutePropagation":{ + "name":"EnableVgwRoutePropagation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"EnableVgwRoutePropagationRequest"}, + "documentation":"

Enables a virtual private gateway (VGW) to propagate routes to the routing tables of a VPC.

" + }, + "EnableVolumeIO":{ + "name":"EnableVolumeIO", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"EnableVolumeIORequest"}, + "documentation":"

Enables I/O operations for a volume that had I/O operations disabled because the data on the volume was potentially inconsistent.

" + }, + "GetConsoleOutput":{ + "name":"GetConsoleOutput", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetConsoleOutputRequest"}, + "output":{"shape":"GetConsoleOutputResult"}, + "documentation":"

Gets the console output for the specified instance.

Instances do not have a physical monitor through which you can view their console output. They also lack physical controls that allow you to power up, reboot, or shut them down. To allow these actions, we provide them through the Amazon EC2 API and command line interface.

Instance console output is buffered and posted shortly after instance boot, reboot, and termination. Amazon EC2 preserves the most recent 64 KB output which is available for at least one hour after the most recent post.

For Linux/Unix instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a machine. This output is buffered because the instance produces it and then posts it to a store where the instance's owner can retrieve it.

For Windows instances, the instance console output displays the last three system event log errors.

" + }, + "GetPasswordData":{ + "name":"GetPasswordData", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetPasswordDataRequest"}, + "output":{"shape":"GetPasswordDataResult"}, + "documentation":"

Retrieves the encrypted administrator password for an instance running Windows.

The Windows password is only generated the first time an AMI is launched. It is not generated for rebundled AMIs or after the password is changed on an instance.

The password is encrypted using the key pair that you specified when you launched the instance. You must provide the corresponding key pair file.

Password generation and encryption takes a few moments. We recommend that you wait up to 15 minutes after launching an instance before trying to retrieve the generated password.

" + }, + "ImportInstance":{ + "name":"ImportInstance", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ImportInstanceRequest"}, + "output":{"shape":"ImportInstanceResult"}, + "documentation":"

Creates an import instance task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the EC2 command line tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" + }, + "ImportKeyPair":{ + "name":"ImportKeyPair", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ImportKeyPairRequest"}, + "output":{"shape":"ImportKeyPairResult"}, + "documentation":"

Imports the public key from an RSA key pair that you created with a third-party tool. Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key. The private key is never transferred between you and AWS.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

" + }, + "ImportVolume":{ + "name":"ImportVolume", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ImportVolumeRequest"}, + "output":{"shape":"ImportVolumeResult"}, + "documentation":"

Creates an import volume task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the Amazon EC2 command-line interface (CLI) tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" + }, + "ModifyImageAttribute":{ + "name":"ModifyImageAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyImageAttributeRequest"}, + "documentation":"

Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time.

" + }, + "ModifyInstanceAttribute":{ + "name":"ModifyInstanceAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyInstanceAttributeRequest"}, + "documentation":"

Modifies the specified attribute of the specified instance. You can specify only one attribute at a time.

To modify some attributes, the instance must be stopped. For more information, see Modifying Attributes of a Stopped Instance in the Amazon Elastic Compute Cloud User Guide.

" + }, + "ModifyNetworkInterfaceAttribute":{ + "name":"ModifyNetworkInterfaceAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyNetworkInterfaceAttributeRequest"}, + "documentation":"

Modifies the specified network interface attribute. You can specify only one attribute at a time.

" + }, + "ModifyReservedInstances":{ + "name":"ModifyReservedInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyReservedInstancesRequest"}, + "output":{"shape":"ModifyReservedInstancesResult"}, + "documentation":"

Modifies the Availability Zone, instance count, instance type, or network platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved Instances to be modified must be identical, except for Availability Zone, network platform, and instance type.

" + }, + "ModifySnapshotAttribute":{ + "name":"ModifySnapshotAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifySnapshotAttributeRequest"}, + "documentation":"

Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single API call. If you need to both add and remove account IDs for a snapshot, you must use multiple API calls.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

" + }, + "ModifySubnetAttribute":{ + "name":"ModifySubnetAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifySubnetAttributeRequest"}, + "documentation":"

Modifies a subnet attribute.

" + }, + "ModifyVolumeAttribute":{ + "name":"ModifyVolumeAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyVolumeAttributeRequest"}, + "documentation":"

Modifies a volume attribute.

By default, all I/O operations for the volume are suspended when the data on the volume is determined to be potentially inconsistent, to prevent undetectable, latent data corruption. The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume.

You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes or for volumes that are stateless or disposable.

" + }, + "ModifyVpcAttribute":{ + "name":"ModifyVpcAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ModifyVpcAttributeRequest"}, + "documentation":"

Modifies the specified attribute of the specified VPC.

" + }, + "MonitorInstances":{ + "name":"MonitorInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"MonitorInstancesRequest"}, + "output":{"shape":"MonitorInstancesResult"}, + "documentation":"

Enables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

" + }, + "PurchaseReservedInstancesOffering":{ + "name":"PurchaseReservedInstancesOffering", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"PurchaseReservedInstancesOfferingRequest"}, + "output":{"shape":"PurchaseReservedInstancesOfferingResult"}, + "documentation":"

Purchases a Reserved Instance for use with your account. With Amazon EC2 Reserved Instances, you obtain a capacity reservation for a certain instance configuration over a specified period of time. You pay a lower usage rate than with On-Demand instances for the time that you actually use the capacity reservation.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" + }, + "RebootInstances":{ + "name":"RebootInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RebootInstancesRequest"}, + "documentation":"

Requests a reboot of one or more instances. This operation is asynchronous; it only queues a request to reboot the specified instances. The operation succeeds if the instances are valid and belong to you. Requests to reboot terminated instances are ignored.

If a Linux/Unix instance does not cleanly shut down within four minutes, Amazon EC2 performs a hard reboot.

For more information about troubleshooting, see Getting Console Output and Rebooting Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "RegisterImage":{ + "name":"RegisterImage", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RegisterImageRequest"}, + "output":{"shape":"RegisterImageResult"}, + "documentation":"

Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide.

You can also use RegisterImage to create an Amazon EBS-backed AMI from a snapshot of a root device volume. For more information, see Launching an Instance from a Snapshot in the Amazon Elastic Compute Cloud User Guide.

If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image.

" + }, + "RejectVpcPeeringConnection":{ + "name":"RejectVpcPeeringConnection", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RejectVpcPeeringConnectionRequest"}, + "output":{"shape":"RejectVpcPeeringConnectionResult"}, + "documentation":"

Rejects a VPC peering connection request. The VPC peering connection must be in the pending-acceptance state. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

" + }, + "ReleaseAddress":{ + "name":"ReleaseAddress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ReleaseAddressRequest"}, + "documentation":"

Releases the specified Elastic IP address.

After releasing an Elastic IP address, it is released to the IP address pool and might be unavailable to you. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an AuthFailure error if the address is already allocated to another AWS account.

[EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress.

[Nondefault VPC] You must use the DisassociateAddress to disassociate the Elastic IP address before you try to release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse).

" + }, + "ReplaceNetworkAclAssociation":{ + "name":"ReplaceNetworkAclAssociation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ReplaceNetworkAclAssociationRequest"}, + "output":{"shape":"ReplaceNetworkAclAssociationResult"}, + "documentation":"

Changes which network ACL a subnet is associated with. By default when you create a subnet, it's automatically associated with the default network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" + }, + "ReplaceNetworkAclEntry":{ + "name":"ReplaceNetworkAclEntry", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ReplaceNetworkAclEntryRequest"}, + "documentation":"

Replaces an entry (rule) in a network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" + }, + "ReplaceRoute":{ + "name":"ReplaceRoute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ReplaceRouteRequest"}, + "documentation":"

Replaces an existing route within a route table in a VPC. You must provide only one of the following: Internet gateway, NAT instance, VPC peering connection, or network interface.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" + }, + "ReplaceRouteTableAssociation":{ + "name":"ReplaceRouteTableAssociation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ReplaceRouteTableAssociationRequest"}, + "output":{"shape":"ReplaceRouteTableAssociationResult"}, + "documentation":"

Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table.

" + }, + "ReportInstanceStatus":{ + "name":"ReportInstanceStatus", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ReportInstanceStatusRequest"}, + "documentation":"

Submits feedback about the status of an instance. The instance must be in the running state. If your experience with the instance differs from the instance status returned by DescribeInstanceStatus, use ReportInstanceStatus to report your experience with the instance. Amazon EC2 collects this information to improve the accuracy of status checks.

" + }, + "RequestSpotInstances":{ + "name":"RequestSpotInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RequestSpotInstancesRequest"}, + "output":{"shape":"RequestSpotInstancesResult"}, + "documentation":"

Creates a Spot Instance request. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "ResetImageAttribute":{ + "name":"ResetImageAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ResetImageAttributeRequest"}, + "documentation":"

Resets an attribute of an AMI to its default value.

" + }, + "ResetInstanceAttribute":{ + "name":"ResetInstanceAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ResetInstanceAttributeRequest"}, + "documentation":"

Resets an attribute of an instance to its default value. To reset the kernel or RAM disk, the instance must be in a stopped state. To reset the SourceDestCheck, the instance can be either running or stopped.

The SourceDestCheck attribute controls whether source/destination checking is enabled. The default value is true, which means checking is enabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

" + }, + "ResetNetworkInterfaceAttribute":{ + "name":"ResetNetworkInterfaceAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ResetNetworkInterfaceAttributeRequest"}, + "documentation":"

Resets a network interface attribute. You can specify only one attribute at a time.

" + }, + "ResetSnapshotAttribute":{ + "name":"ResetSnapshotAttribute", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ResetSnapshotAttributeRequest"}, + "documentation":"

Resets permission settings for the specified snapshot.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

" + }, + "RevokeSecurityGroupEgress":{ + "name":"RevokeSecurityGroupEgress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RevokeSecurityGroupEgressRequest"}, + "documentation":"

Removes one or more egress rules from a security group for EC2-VPC. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be revoked.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

" + }, + "RevokeSecurityGroupIngress":{ + "name":"RevokeSecurityGroupIngress", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RevokeSecurityGroupIngressRequest"}, + "documentation":"

Removes one or more ingress rules from a security group. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be removed.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

" + }, + "RunInstances":{ + "name":"RunInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RunInstancesRequest"}, + "output":{ + "shape":"Reservation", + "documentation":"

One or more reservations.

", + "locationName":"reservation" + }, + "documentation":"

Launches the specified number of instances using an AMI for which you have permissions.

When you launch an instance, it enters the pending state. After the instance is ready for you, it enters the running state. To check the state of your instance, call DescribeInstances.

If you don't specify a security group when launching an instance, Amazon EC2 uses the default security group. For more information, see Security Groups in the Amazon Elastic Compute Cloud User Guide.

Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

You can provide optional user data when launching an instance. For more information, see Instance Metadata in the Amazon Elastic Compute Cloud User Guide.

If any of the AMIs have a product code attached for which the user has not subscribed, RunInstances fails.

T2 instance types can only be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID in the request, RunInstances fails.

For more information about troubleshooting, see What To Do If An Instance Immediately Terminates, and Troubleshooting Connecting to Your Instance in the Amazon Elastic Compute Cloud User Guide.

" + }, + "StartInstances":{ + "name":"StartInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"StartInstancesRequest"}, + "output":{"shape":"StartInstancesResult"}, + "documentation":"

Starts an Amazon EBS-backed AMI that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

For more information, see Stopping Instances in the Amazon Elastic Compute Cloud User Guide.

" + }, + "StopInstances":{ + "name":"StopInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"StopInstancesRequest"}, + "output":{"shape":"StopInstancesResult"}, + "documentation":"

Stops an Amazon EBS-backed instance. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

You can't start or stop Spot Instances.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see Troubleshooting Stopping Your Instance in the Amazon Elastic Compute Cloud User Guide.

" + }, + "TerminateInstances":{ + "name":"TerminateInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"TerminateInstancesRequest"}, + "output":{"shape":"TerminateInstancesResult"}, + "documentation":"

Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds.

Terminated instances remain visible after termination (for approximately one hour).

By default, Amazon EC2 deletes all Amazon EBS volumes that were attached when the instance launched. Volumes attached after instance launch continue running.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide.

" + }, + "UnassignPrivateIpAddresses":{ + "name":"UnassignPrivateIpAddresses", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UnassignPrivateIpAddressesRequest"}, + "documentation":"

Unassigns one or more secondary private IP addresses from a network interface.

" + }, + "UnmonitorInstances":{ + "name":"UnmonitorInstances", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UnmonitorInstancesRequest"}, + "output":{"shape":"UnmonitorInstancesResult"}, + "documentation":"

Disables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

" + } + }, + "shapes":{ + "AcceptVpcPeeringConnectionRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcPeeringConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPC peering connection.

", + "locationName":"vpcPeeringConnectionId" + } + } + }, + "AcceptVpcPeeringConnectionResult":{ + "type":"structure", + "members":{ + "VpcPeeringConnection":{ + "shape":"VpcPeeringConnection", + "documentation":"

Information about the VPC peering connection.

", + "locationName":"vpcPeeringConnection" + } + } + }, + "AccountAttribute":{ + "type":"structure", + "members":{ + "AttributeName":{ + "shape":"String", + "documentation":"

The name of the account attribute.

", + "locationName":"attributeName" + }, + "AttributeValues":{ + "shape":"AccountAttributeValueList", + "documentation":"

One or more values for the account attribute.

", + "locationName":"attributeValueSet" + } + }, + "documentation":"

Describes an account attribute.

" + }, + "AccountAttributeList":{ + "type":"list", + "member":{ + "shape":"AccountAttribute", + "locationName":"item" + } + }, + "AccountAttributeName":{ + "type":"string", + "enum":[ + "supported-platforms", + "default-vpc" + ] + }, + "AccountAttributeNameStringList":{ + "type":"list", + "member":{ + "shape":"AccountAttributeName", + "locationName":"attributeName" + } + }, + "AccountAttributeValue":{ + "type":"structure", + "members":{ + "AttributeValue":{ + "shape":"String", + "documentation":"

The value.

", + "locationName":"attributeValue" + } + }, + "documentation":"

Describes a value of an account attribute.

" + }, + "AccountAttributeValueList":{ + "type":"list", + "member":{ + "shape":"AccountAttributeValue", + "locationName":"item" + } + }, + "Address":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance the address is associated with (if any).

", + "locationName":"instanceId" + }, + "PublicIp":{ + "shape":"String", + "documentation":"

The Elastic IP address.

", + "locationName":"publicIp" + }, + "AllocationId":{ + "shape":"String", + "documentation":"

The ID representing the allocation of the address for use with EC2-VPC.

", + "locationName":"allocationId" + }, + "AssociationId":{ + "shape":"String", + "documentation":"

The ID representing the association of the address with an instance in a VPC.

", + "locationName":"associationId" + }, + "Domain":{ + "shape":"DomainType", + "documentation":"

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

", + "locationName":"domain" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "NetworkInterfaceOwnerId":{ + "shape":"String", + "documentation":"

The ID of the AWS account that owns the network interface.

", + "locationName":"networkInterfaceOwnerId" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The private IP address associated with the Elastic IP address.

", + "locationName":"privateIpAddress" + } + }, + "documentation":"

Describes an Elastic IP address.

" + }, + "AddressList":{ + "type":"list", + "member":{ + "shape":"Address", + "locationName":"item" + } + }, + "AllocateAddressRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Domain":{ + "shape":"DomainType", + "documentation":"

Set to vpc to allocate the address for use with instances in a VPC.

Default: The address is for use with instances in EC2-Classic.

" + } + } + }, + "AllocateAddressResult":{ + "type":"structure", + "members":{ + "PublicIp":{ + "shape":"String", + "documentation":"

The Elastic IP address.

", + "locationName":"publicIp" + }, + "Domain":{ + "shape":"DomainType", + "documentation":"

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

", + "locationName":"domain" + }, + "AllocationId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic IP address for use with instances in a VPC.

", + "locationName":"allocationId" + } + } + }, + "AllocationIdList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"AllocationId" + } + }, + "ArchitectureValues":{ + "type":"string", + "enum":[ + "i386", + "x86_64" + ] + }, + "AssignPrivateIpAddressesRequest":{ + "type":"structure", + "required":["NetworkInterfaceId"], + "members":{ + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "PrivateIpAddresses":{ + "shape":"PrivateIpAddressStringList", + "documentation":"

One or more IP addresses to be assigned as a secondary private IP address to the network interface.

If you don't specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range.

", + "locationName":"privateIpAddress" + }, + "SecondaryPrivateIpAddressCount":{ + "shape":"Integer", + "documentation":"

The number of secondary IP addresses to assign to the network interface.

", + "locationName":"secondaryPrivateIpAddressCount" + }, + "AllowReassignment":{ + "shape":"Boolean", + "documentation":"

Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface.

", + "locationName":"allowReassignment" + } + } + }, + "AssociateAddressRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance. The operation fails if you specify an instance ID unless exactly one network interface is attached.

" + }, + "PublicIp":{ + "shape":"String", + "documentation":"

The Elastic IP address.

" + }, + "AllocationId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The allocation ID. This is required for EC2-VPC.

" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.

", + "locationName":"networkInterfaceId" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

[EC2-VPC] The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.

", + "locationName":"privateIpAddress" + }, + "AllowReassociation":{ + "shape":"Boolean", + "documentation":"

[EC2-VPC] Allows an Elastic IP address that is already associated with an instance or network interface to be re-associated with the specified instance or network interface. Otherwise, the operation fails.

Default: false

", + "locationName":"allowReassociation" + } + } + }, + "AssociateAddressResult":{ + "type":"structure", + "members":{ + "AssociationId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The ID that represents the association of the Elastic IP address with an instance.

", + "locationName":"associationId" + } + } + }, + "AssociateDhcpOptionsRequest":{ + "type":"structure", + "required":[ + "DhcpOptionsId", + "VpcId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "DhcpOptionsId":{ + "shape":"String", + "documentation":"

The ID of the DHCP options set, or default to associate no DHCP options with the VPC.

" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

" + } + } + }, + "AssociateRouteTableRequest":{ + "type":"structure", + "required":[ + "SubnetId", + "RouteTableId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

", + "locationName":"subnetId" + }, + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the route table.

", + "locationName":"routeTableId" + } + } + }, + "AssociateRouteTableResult":{ + "type":"structure", + "members":{ + "AssociationId":{ + "shape":"String", + "documentation":"

The route table association ID (needed to disassociate the route table).

", + "locationName":"associationId" + } + } + }, + "AttachInternetGatewayRequest":{ + "type":"structure", + "required":[ + "InternetGatewayId", + "VpcId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InternetGatewayId":{ + "shape":"String", + "documentation":"

The ID of the Internet gateway.

", + "locationName":"internetGatewayId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + } + } + }, + "AttachNetworkInterfaceRequest":{ + "type":"structure", + "required":[ + "NetworkInterfaceId", + "InstanceId", + "DeviceIndex" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "DeviceIndex":{ + "shape":"Integer", + "documentation":"

The index of the device for the network interface attachment.

", + "locationName":"deviceIndex" + } + } + }, + "AttachNetworkInterfaceResult":{ + "type":"structure", + "members":{ + "AttachmentId":{ + "shape":"String", + "documentation":"

The ID of the network interface attachment.

", + "locationName":"attachmentId" + } + } + }, + "AttachVolumeRequest":{ + "type":"structure", + "required":[ + "VolumeId", + "InstanceId", + "Device" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone.

" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

" + }, + "Device":{ + "shape":"String", + "documentation":"

The device name to expose to the instance (for example, /dev/sdh or xvdh).

" + } + } + }, + "AttachVpnGatewayRequest":{ + "type":"structure", + "required":[ + "VpnGatewayId", + "VpcId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpnGatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway.

" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

" + } + } + }, + "AttachVpnGatewayResult":{ + "type":"structure", + "members":{ + "VpcAttachment":{ + "shape":"VpcAttachment", + "documentation":"

Information about the attachment.

", + "locationName":"attachment" + } + } + }, + "AttachmentStatus":{ + "type":"string", + "enum":[ + "attaching", + "attached", + "detaching", + "detached" + ] + }, + "AttributeBooleanValue":{ + "type":"structure", + "members":{ + "Value":{ + "shape":"Boolean", + "locationName":"value" + } + } + }, + "AttributeValue":{ + "type":"structure", + "members":{ + "Value":{ + "shape":"String", + "locationName":"value" + } + } + }, + "AuthorizeSecurityGroupEgressRequest":{ + "type":"structure", + "required":["GroupId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

", + "locationName":"groupId" + }, + "SourceSecurityGroupName":{ + "shape":"String", + "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

", + "locationName":"sourceSecurityGroupName" + }, + "SourceSecurityGroupOwnerId":{ + "shape":"String", + "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

", + "locationName":"sourceSecurityGroupOwnerId" + }, + "IpProtocol":{ + "shape":"String", + "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

", + "locationName":"ipProtocol" + }, + "FromPort":{ + "shape":"Integer", + "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

", + "locationName":"fromPort" + }, + "ToPort":{ + "shape":"Integer", + "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

", + "locationName":"toPort" + }, + "CidrIp":{ + "shape":"String", + "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", + "locationName":"cidrIp" + }, + "IpPermissions":{ + "shape":"IpPermissionList", + "documentation":"

", + "locationName":"ipPermissions" + } + } + }, + "AuthorizeSecurityGroupIngressRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupName":{ + "shape":"String", + "documentation":"

[EC2-Classic, default VPC] The name of the security group.

" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

" + }, + "SourceSecurityGroupName":{ + "shape":"String", + "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

" + }, + "SourceSecurityGroupOwnerId":{ + "shape":"String", + "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

" + }, + "IpProtocol":{ + "shape":"String", + "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

" + }, + "FromPort":{ + "shape":"Integer", + "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

" + }, + "ToPort":{ + "shape":"Integer", + "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

" + }, + "CidrIp":{ + "shape":"String", + "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

" + }, + "IpPermissions":{ + "shape":"IpPermissionList", + "documentation":"

" + } + } + }, + "AvailabilityZone":{ + "type":"structure", + "members":{ + "ZoneName":{ + "shape":"String", + "documentation":"

The name of the Availability Zone.

", + "locationName":"zoneName" + }, + "State":{ + "shape":"AvailabilityZoneState", + "documentation":"

The state of the Availability Zone.

", + "locationName":"zoneState" + }, + "RegionName":{ + "shape":"String", + "documentation":"

The name of the region.

", + "locationName":"regionName" + }, + "Messages":{ + "shape":"AvailabilityZoneMessageList", + "documentation":"

Any messages about the Availability Zone.

", + "locationName":"messageSet" + } + }, + "documentation":"

Describes an Availability Zone.

" + }, + "AvailabilityZoneList":{ + "type":"list", + "member":{ + "shape":"AvailabilityZone", + "locationName":"item" + } + }, + "AvailabilityZoneMessage":{ + "type":"structure", + "members":{ + "Message":{ + "shape":"String", + "documentation":"

The message about the Availability Zone.

", + "locationName":"message" + } + }, + "documentation":"

Describes a message about an Availability Zone.

" + }, + "AvailabilityZoneMessageList":{ + "type":"list", + "member":{ + "shape":"AvailabilityZoneMessage", + "locationName":"item" + } + }, + "AvailabilityZoneState":{ + "type":"string", + "enum":["available"] + }, + "BlockDeviceMapping":{ + "type":"structure", + "members":{ + "VirtualName":{ + "shape":"String", + "documentation":"

The virtual device name.

", + "locationName":"virtualName" + }, + "DeviceName":{ + "shape":"String", + "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", + "locationName":"deviceName" + }, + "Ebs":{ + "shape":"EbsBlockDevice", + "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", + "locationName":"ebs" + }, + "NoDevice":{ + "shape":"String", + "documentation":"

Suppresses the specified device included in the block device mapping of the AMI.

", + "locationName":"noDevice" + } + }, + "documentation":"

Describes a block device mapping.

" + }, + "BlockDeviceMappingList":{ + "type":"list", + "member":{ + "shape":"BlockDeviceMapping", + "locationName":"item" + } + }, + "BlockDeviceMappingRequestList":{ + "type":"list", + "member":{ + "shape":"BlockDeviceMapping", + "locationName":"BlockDeviceMapping" + } + }, + "Boolean":{"type":"boolean"}, + "BundleIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"BundleId" + } + }, + "BundleInstanceRequest":{ + "type":"structure", + "required":[ + "InstanceId", + "Storage" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance to bundle.

" + }, + "Storage":{ + "shape":"Storage", + "documentation":"

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

" + } + } + }, + "BundleInstanceResult":{ + "type":"structure", + "members":{ + "BundleTask":{ + "shape":"BundleTask", + "documentation":"

Information about the bundle task.

", + "locationName":"bundleInstanceTask" + } + } + }, + "BundleTask":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance associated with this bundle task.

", + "locationName":"instanceId" + }, + "BundleId":{ + "shape":"String", + "documentation":"

The ID for this bundle task.

", + "locationName":"bundleId" + }, + "State":{ + "shape":"BundleTaskState", + "documentation":"

The state of the task.

", + "locationName":"state" + }, + "StartTime":{ + "shape":"DateTime", + "documentation":"

The time this task started.

", + "locationName":"startTime" + }, + "UpdateTime":{ + "shape":"DateTime", + "documentation":"

The time of the most recent update for the task.

", + "locationName":"updateTime" + }, + "Storage":{ + "shape":"Storage", + "documentation":"

The Amazon S3 storage locations.

", + "locationName":"storage" + }, + "Progress":{ + "shape":"String", + "documentation":"

The level of task completion, as a percent (for example, 20%).

", + "locationName":"progress" + }, + "BundleTaskError":{ + "shape":"BundleTaskError", + "documentation":"

If the task fails, a description of the error.

", + "locationName":"error" + } + }, + "documentation":"

Describes a bundle task.

" + }, + "BundleTaskError":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"String", + "documentation":"

The error code.

", + "locationName":"code" + }, + "Message":{ + "shape":"String", + "documentation":"

The error message.

", + "locationName":"message" + } + }, + "documentation":"

Describes an error for BundleInstance.

" + }, + "BundleTaskList":{ + "type":"list", + "member":{ + "shape":"BundleTask", + "locationName":"item" + } + }, + "BundleTaskState":{ + "type":"string", + "enum":[ + "pending", + "waiting-for-shutdown", + "bundling", + "storing", + "cancelling", + "complete", + "failed" + ] + }, + "CancelBundleTaskRequest":{ + "type":"structure", + "required":["BundleId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "BundleId":{ + "shape":"String", + "documentation":"

The ID of the bundle task.

" + } + } + }, + "CancelBundleTaskResult":{ + "type":"structure", + "members":{ + "BundleTask":{ + "shape":"BundleTask", + "documentation":"

The bundle task.

", + "locationName":"bundleInstanceTask" + } + } + }, + "CancelConversionRequest":{ + "type":"structure", + "required":["ConversionTaskId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ConversionTaskId":{ + "shape":"String", + "documentation":"

The ID of the conversion task.

", + "locationName":"conversionTaskId" + }, + "ReasonMessage":{ + "shape":"String", + "locationName":"reasonMessage" + } + } + }, + "CancelExportTaskRequest":{ + "type":"structure", + "required":["ExportTaskId"], + "members":{ + "ExportTaskId":{ + "shape":"String", + "documentation":"

The ID of the export task. This is the ID returned by CreateInstanceExportTask.

", + "locationName":"exportTaskId" + } + } + }, + "CancelReservedInstancesListingRequest":{ + "type":"structure", + "required":["ReservedInstancesListingId"], + "members":{ + "ReservedInstancesListingId":{ + "shape":"String", + "documentation":"

The ID of the Reserved Instance listing.

", + "locationName":"reservedInstancesListingId" + } + } + }, + "CancelReservedInstancesListingResult":{ + "type":"structure", + "members":{ + "ReservedInstancesListings":{ + "shape":"ReservedInstancesListingList", + "documentation":"

The Reserved Instance listing.

", + "locationName":"reservedInstancesListingsSet" + } + } + }, + "CancelSpotInstanceRequestState":{ + "type":"string", + "enum":[ + "active", + "open", + "closed", + "cancelled", + "completed" + ] + }, + "CancelSpotInstanceRequestsRequest":{ + "type":"structure", + "required":["SpotInstanceRequestIds"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SpotInstanceRequestIds":{ + "shape":"SpotInstanceRequestIdList", + "documentation":"

One or more Spot Instance request IDs.

", + "locationName":"SpotInstanceRequestId" + } + } + }, + "CancelSpotInstanceRequestsResult":{ + "type":"structure", + "members":{ + "CancelledSpotInstanceRequests":{ + "shape":"CancelledSpotInstanceRequestList", + "documentation":"

One or more Spot Instance requests.

", + "locationName":"spotInstanceRequestSet" + } + } + }, + "CancelledSpotInstanceRequest":{ + "type":"structure", + "members":{ + "SpotInstanceRequestId":{ + "shape":"String", + "documentation":"

The ID of the Spot Instance request.

", + "locationName":"spotInstanceRequestId" + }, + "State":{ + "shape":"CancelSpotInstanceRequestState", + "documentation":"

The state of the Spot Instance request.

", + "locationName":"state" + } + }, + "documentation":"

Describes a request to cancel a Spot Instance.

" + }, + "CancelledSpotInstanceRequestList":{ + "type":"list", + "member":{ + "shape":"CancelledSpotInstanceRequest", + "locationName":"item" + } + }, + "ConfirmProductInstanceRequest":{ + "type":"structure", + "required":[ + "ProductCode", + "InstanceId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ProductCode":{ + "shape":"String", + "documentation":"

The product code. This must be an Amazon DevPay product code that you own.

" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

" + } + } + }, + "ConfirmProductInstanceResult":{ + "type":"structure", + "members":{ + "OwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the instance owner. This is only present if the product code is attached to the instance.

", + "locationName":"ownerId" + } + } + }, + "ContainerFormat":{ + "type":"string", + "enum":["ova"] + }, + "ConversionIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"item" + } + }, + "ConversionTask":{ + "type":"structure", + "required":[ + "ConversionTaskId", + "State" + ], + "members":{ + "ConversionTaskId":{ + "shape":"String", + "documentation":"

The ID of the conversion task.

", + "locationName":"conversionTaskId" + }, + "ExpirationTime":{ + "shape":"String", + "documentation":"

The time when the task expires. If the upload isn't complete before the expiration time, we automatically cancel the task.

", + "locationName":"expirationTime" + }, + "ImportInstance":{ + "shape":"ImportInstanceTaskDetails", + "documentation":"

If the task is for importing an instance, this contains information about the import instance task.

", + "locationName":"importInstance" + }, + "ImportVolume":{ + "shape":"ImportVolumeTaskDetails", + "documentation":"

If the task is for importing a volume, this contains information about the import volume task.

", + "locationName":"importVolume" + }, + "State":{ + "shape":"ConversionTaskState", + "documentation":"

The state of the conversion task.

", + "locationName":"state" + }, + "StatusMessage":{ + "shape":"String", + "documentation":"

The status message related to the conversion task.

", + "locationName":"statusMessage" + }, + "Tags":{ + "shape":"TagList", + "locationName":"tagSet" + } + }, + "documentation":"

Describes a conversion task.

" + }, + "ConversionTaskState":{ + "type":"string", + "enum":[ + "active", + "cancelling", + "cancelled", + "completed" + ] + }, + "CopyImageRequest":{ + "type":"structure", + "required":[ + "SourceRegion", + "SourceImageId", + "Name" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SourceRegion":{ + "shape":"String", + "documentation":"

The name of the region that contains the AMI to copy.

" + }, + "SourceImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI to copy.

" + }, + "Name":{ + "shape":"String", + "documentation":"

The name of the new AMI in the destination region.

" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for the new AMI in the destination region.

" + }, + "ClientToken":{ + "shape":"String", + "documentation":"

Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

" + } + } + }, + "CopyImageResult":{ + "type":"structure", + "members":{ + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the new AMI.

", + "locationName":"imageId" + } + } + }, + "CopySnapshotRequest":{ + "type":"structure", + "required":[ + "SourceRegion", + "SourceSnapshotId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SourceRegion":{ + "shape":"String", + "documentation":"

The ID of the region that contains the snapshot to be copied.

" + }, + "SourceSnapshotId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS snapshot to copy.

" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for the new Amazon EBS snapshot.

" + }, + "DestinationRegion":{ + "shape":"String", + "documentation":"

The destination region of the snapshot copy operation. This parameter is required in the PresignedUrl.

", + "locationName":"destinationRegion" + }, + "PresignedUrl":{ + "shape":"String", + "documentation":"

The pre-signed URL that facilitates copying an encrypted snapshot. This parameter is only required when copying an encrypted snapshot with the Amazon EC2 Query API; it is available as an optional parameter in all other cases. The PresignedUrl should use the snapshot source endpoint, the CopySnapshot action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The PresignedUrl must be signed using AWS Signature Version 4. Because Amazon EBS snapshots are stored in Amazon S3, the signing algorithm for this parameter uses the same logic that is described in Authenticating Requests by Using Query Parameters (AWS Signature Version 4) in the Amazon Simple Storage Service API Reference. An invalid or improperly signed PresignedUrl will cause the copy operation to fail asynchronously, and the snapshot will move to an error state.

", + "locationName":"presignedUrl" + } + } + }, + "CopySnapshotResult":{ + "type":"structure", + "members":{ + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the new snapshot.

", + "locationName":"snapshotId" + } + } + }, + "CreateCustomerGatewayRequest":{ + "type":"structure", + "required":[ + "Type", + "PublicIp", + "BgpAsn" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Type":{ + "shape":"GatewayType", + "documentation":"

The type of VPN connection that this customer gateway supports.

" + }, + "PublicIp":{ + "shape":"String", + "documentation":"

The Internet-routable IP address for the customer gateway's outside interface. The address must be static.

", + "locationName":"IpAddress" + }, + "BgpAsn":{ + "shape":"Integer", + "documentation":"

For devices that support BGP, the customer gateway's BGP ASN.

Default: 65000

" + } + } + }, + "CreateCustomerGatewayResult":{ + "type":"structure", + "members":{ + "CustomerGateway":{ + "shape":"CustomerGateway", + "documentation":"

Information about the customer gateway.

", + "locationName":"customerGateway" + } + } + }, + "CreateDhcpOptionsRequest":{ + "type":"structure", + "required":["DhcpConfigurations"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "DhcpConfigurations":{ + "shape":"NewDhcpConfigurationList", + "documentation":"

A DHCP configuration option.

", + "locationName":"dhcpConfiguration" + } + } + }, + "CreateDhcpOptionsResult":{ + "type":"structure", + "members":{ + "DhcpOptions":{ + "shape":"DhcpOptions", + "documentation":"

A set of DHCP options.

", + "locationName":"dhcpOptions" + } + } + }, + "CreateImageRequest":{ + "type":"structure", + "required":[ + "InstanceId", + "Name" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "Name":{ + "shape":"String", + "documentation":"

A name for the new image.

Constraints: 3-128 alphanumeric characters, parenthesis (()), periods (.), slashes (/), dashes (-), or underscores(_)

", + "locationName":"name" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for the new image.

", + "locationName":"description" + }, + "NoReboot":{ + "shape":"Boolean", + "documentation":"

By default, this parameter is set to false, which means Amazon EC2 attempts to shut down the instance cleanly before image creation and then reboots the instance. When the parameter is set to true, Amazon EC2 doesn't shut down the instance before creating the image. When this option is used, file system integrity on the created image can't be guaranteed.

", + "locationName":"noReboot" + }, + "BlockDeviceMappings":{ + "shape":"BlockDeviceMappingRequestList", + "documentation":"

Information about one or more block device mappings.

", + "locationName":"blockDeviceMapping" + } + } + }, + "CreateImageResult":{ + "type":"structure", + "members":{ + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the new AMI.

", + "locationName":"imageId" + } + } + }, + "CreateInstanceExportTaskRequest":{ + "type":"structure", + "required":["InstanceId"], + "members":{ + "Description":{ + "shape":"String", + "documentation":"

A description for the conversion task or the resource being exported. The maximum length is 255 bytes.

", + "locationName":"description" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "TargetEnvironment":{ + "shape":"ExportEnvironment", + "documentation":"

The target virtualization environment.

", + "locationName":"targetEnvironment" + }, + "ExportToS3Task":{ + "shape":"ExportToS3TaskSpecification", + "locationName":"exportToS3" + } + } + }, + "CreateInstanceExportTaskResult":{ + "type":"structure", + "members":{ + "ExportTask":{ + "shape":"ExportTask", + "locationName":"exportTask" + } + } + }, + "CreateInternetGatewayRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + } + } + }, + "CreateInternetGatewayResult":{ + "type":"structure", + "members":{ + "InternetGateway":{ + "shape":"InternetGateway", + "documentation":"

Information about the Internet gateway.

", + "locationName":"internetGateway" + } + } + }, + "CreateKeyPairRequest":{ + "type":"structure", + "required":["KeyName"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "KeyName":{ + "shape":"String", + "documentation":"

A unique name for the key pair.

" + } + } + }, + "CreateNetworkAclEntryRequest":{ + "type":"structure", + "required":[ + "NetworkAclId", + "RuleNumber", + "Protocol", + "RuleAction", + "Egress", + "CidrBlock" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkAclId":{ + "shape":"String", + "documentation":"

The ID of the ACL.

", + "locationName":"networkAclId" + }, + "RuleNumber":{ + "shape":"Integer", + "documentation":"

The rule number for the entry (for example, 100). ACL entries are processed in ascending order by rule number.

Constraints: Positive integer from 1 to 32766

", + "locationName":"ruleNumber" + }, + "Protocol":{ + "shape":"String", + "documentation":"

The protocol. A value of -1 means all protocols.

", + "locationName":"protocol" + }, + "RuleAction":{ + "shape":"RuleAction", + "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", + "locationName":"ruleAction" + }, + "Egress":{ + "shape":"Boolean", + "documentation":"

Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet).

", + "locationName":"egress" + }, + "CidrBlock":{ + "shape":"String", + "documentation":"

The network range to allow or deny, in CIDR notation.

", + "locationName":"cidrBlock" + }, + "IcmpTypeCode":{ + "shape":"IcmpTypeCode", + "documentation":"

ICMP protocol: The ICMP type and code.

", + "locationName":"Icmp" + }, + "PortRange":{ + "shape":"PortRange", + "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", + "locationName":"portRange" + } + } + }, + "CreateNetworkAclRequest":{ + "type":"structure", + "required":["VpcId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + } + } + }, + "CreateNetworkAclResult":{ + "type":"structure", + "members":{ + "NetworkAcl":{ + "shape":"NetworkAcl", + "documentation":"

Information about the network ACL.

", + "locationName":"networkAcl" + } + } + }, + "CreateNetworkInterfaceRequest":{ + "type":"structure", + "required":["SubnetId"], + "members":{ + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet to associate with the network interface.

", + "locationName":"subnetId" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for the network interface.

", + "locationName":"description" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The primary private IP address of the network interface. If you don't specify an IP address, Amazon EC2 selects one for you from the subnet range.

", + "locationName":"privateIpAddress" + }, + "Groups":{ + "shape":"SecurityGroupIdStringList", + "documentation":"

The IDs of one or more security groups.

", + "locationName":"SecurityGroupId" + }, + "PrivateIpAddresses":{ + "shape":"PrivateIpAddressSpecificationList", + "documentation":"

One or more private IP addresses.

", + "locationName":"privateIpAddresses" + }, + "SecondaryPrivateIpAddressCount":{ + "shape":"Integer", + "documentation":"

The number of secondary private IP addresses to assign to a network interface. When you specify a number of secondary IP addresses, Amazon EC2 selects these IP addresses within the subnet range.

The number of IP addresses you can assign to a network interface varies by instance type. For more information, see Private IP Addresses Per ENI Per Instance Type in the Amazon Elastic Compute Cloud User Guide.

", + "locationName":"secondaryPrivateIpAddressCount" + }, + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + } + } + }, + "CreateNetworkInterfaceResult":{ + "type":"structure", + "members":{ + "NetworkInterface":{ + "shape":"NetworkInterface", + "documentation":"

Information about the network interface.

", + "locationName":"networkInterface" + } + } + }, + "CreatePlacementGroupRequest":{ + "type":"structure", + "required":[ + "GroupName", + "Strategy" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupName":{ + "shape":"String", + "documentation":"

A name for the placement group.

Constraints: Up to 255 ASCII characters

", + "locationName":"groupName" + }, + "Strategy":{ + "shape":"PlacementStrategy", + "documentation":"

The placement strategy.

", + "locationName":"strategy" + } + } + }, + "CreateReservedInstancesListingRequest":{ + "type":"structure", + "required":[ + "ReservedInstancesId", + "InstanceCount", + "PriceSchedules", + "ClientToken" + ], + "members":{ + "ReservedInstancesId":{ + "shape":"String", + "documentation":"

The ID of the active Reserved Instance.

", + "locationName":"reservedInstancesId" + }, + "InstanceCount":{ + "shape":"Integer", + "documentation":"

The number of instances that are a part of a Reserved Instance account to be listed in the Reserved Instance Marketplace. This number should be less than or equal to the instance count associated with the Reserved Instance ID specified in this call.

", + "locationName":"instanceCount" + }, + "PriceSchedules":{ + "shape":"PriceScheduleSpecificationList", + "documentation":"

A list specifying the price of the Reserved Instance for each month remaining in the Reserved Instance term.

", + "locationName":"priceSchedules" + }, + "ClientToken":{ + "shape":"String", + "documentation":"

Unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see Ensuring Idempotency in the Amazon Elastic Compute Cloud User Guide.

", + "locationName":"clientToken" + } + } + }, + "CreateReservedInstancesListingResult":{ + "type":"structure", + "members":{ + "ReservedInstancesListings":{ + "shape":"ReservedInstancesListingList", + "documentation":"

Information about the Reserved Instances listing.

", + "locationName":"reservedInstancesListingsSet" + } + } + }, + "CreateRouteRequest":{ + "type":"structure", + "required":[ + "RouteTableId", + "DestinationCidrBlock" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the route table for the route.

", + "locationName":"routeTableId" + }, + "DestinationCidrBlock":{ + "shape":"String", + "documentation":"

The CIDR address block used for the destination match. Routing decisions are based on the most specific match.

", + "locationName":"destinationCidrBlock" + }, + "GatewayId":{ + "shape":"String", + "documentation":"

The ID of an Internet gateway attached to your VPC.

", + "locationName":"gatewayId" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.

", + "locationName":"instanceId" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of a network interface.

", + "locationName":"networkInterfaceId" + }, + "VpcPeeringConnectionId":{ + "shape":"String", + "documentation":"

The ID of a VPC peering connection.

", + "locationName":"vpcPeeringConnectionId" + } + } + }, + "CreateRouteTableRequest":{ + "type":"structure", + "required":["VpcId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + } + } + }, + "CreateRouteTableResult":{ + "type":"structure", + "members":{ + "RouteTable":{ + "shape":"RouteTable", + "documentation":"

Information about the route table.

", + "locationName":"routeTable" + } + } + }, + "CreateSecurityGroupRequest":{ + "type":"structure", + "required":[ + "GroupName", + "Description" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupName":{ + "shape":"String", + "documentation":"

The name of the security group.

Constraints: Up to 255 characters in length

Constraints for EC2-Classic: ASCII characters

Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*

" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for the security group. This is informational only.

", + "locationName":"GroupDescription" + }, + "VpcId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The ID of the VPC.

" + } + } + }, + "CreateSecurityGroupResult":{ + "type":"structure", + "members":{ + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

", + "locationName":"groupId" + } + } + }, + "CreateSnapshotRequest":{ + "type":"structure", + "required":["VolumeId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS volume.

" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for the snapshot.

" + } + } + }, + "CreateSpotDatafeedSubscriptionRequest":{ + "type":"structure", + "required":["Bucket"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Bucket":{ + "shape":"String", + "documentation":"

The Amazon S3 bucket in which to store the Spot Instance datafeed.

Constraints: Must be a valid bucket associated with your AWS account.

", + "locationName":"bucket" + }, + "Prefix":{ + "shape":"String", + "documentation":"

A prefix for the datafeed file names.

", + "locationName":"prefix" + } + } + }, + "CreateSpotDatafeedSubscriptionResult":{ + "type":"structure", + "members":{ + "SpotDatafeedSubscription":{ + "shape":"SpotDatafeedSubscription", + "documentation":"

The Spot Instance datafeed subscription.

", + "locationName":"spotDatafeedSubscription" + } + } + }, + "CreateSubnetRequest":{ + "type":"structure", + "required":[ + "VpcId", + "CidrBlock" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

" + }, + "CidrBlock":{ + "shape":"String", + "documentation":"

The network range for the subnet, in CIDR notation. For example, 10.0.0.0/24.

" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone for the subnet.

Default: Amazon EC2 selects one for you (recommended).

" + } + } + }, + "CreateSubnetResult":{ + "type":"structure", + "members":{ + "Subnet":{ + "shape":"Subnet", + "documentation":"

Information about the subnet.

", + "locationName":"subnet" + } + } + }, + "CreateTagsRequest":{ + "type":"structure", + "required":[ + "Resources", + "Tags" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Resources":{ + "shape":"ResourceIdList", + "documentation":"

The IDs of one or more resources to tag. For example, ami-1a2b3c4d.

", + "locationName":"ResourceId" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

One or more tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string.

", + "locationName":"Tag" + } + } + }, + "CreateVolumePermission":{ + "type":"structure", + "members":{ + "UserId":{ + "shape":"String", + "documentation":"

The specific AWS account ID that is to be added or removed from a volume's list of create volume permissions.

", + "locationName":"userId" + }, + "Group":{ + "shape":"PermissionGroup", + "documentation":"

The specific group that is to be added or removed from a volume's list of create volume permissions.

", + "locationName":"group" + } + } + }, + "CreateVolumePermissionList":{ + "type":"list", + "member":{ + "shape":"CreateVolumePermission", + "locationName":"item" + } + }, + "CreateVolumePermissionModifications":{ + "type":"structure", + "members":{ + "Add":{ + "shape":"CreateVolumePermissionList", + "documentation":"

Adds a specific AWS account ID or group to a volume's list of create volume permissions.

" + }, + "Remove":{ + "shape":"CreateVolumePermissionList", + "documentation":"

Removes a specific AWS account ID or group from a volume's list of create volume permissions.

" + } + } + }, + "CreateVolumeRequest":{ + "type":"structure", + "required":["AvailabilityZone"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Size":{ + "shape":"Integer", + "documentation":"

The size of the volume, in GiBs.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB.

Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.

" + }, + "SnapshotId":{ + "shape":"String", + "documentation":"

The snapshot from which to create the volume.

" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone in which to create the volume. Use DescribeAvailabilityZones to list the Availability Zones that are currently available to you.

" + }, + "VolumeType":{ + "shape":"VolumeType", + "documentation":"

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

Default: standard

" + }, + "Iops":{ + "shape":"Integer", + "documentation":"

The number of I/O operations per second (IOPS) that the volume supports. This parameter is not used with Magnetic or General Purpose (SSD) volumes, but is required when the volume type is io1.

" + }, + "Encrypted":{ + "shape":"Boolean", + "documentation":"

Specifies whether the volume should be encrypted.

", + "locationName":"encrypted" + } + } + }, + "CreateVpcPeeringConnectionRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the requester VPC.

", + "locationName":"vpcId" + }, + "PeerVpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC with which you are creating the VPC peering connection.

", + "locationName":"peerVpcId" + }, + "PeerOwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the owner of the peer VPC.

Default: Your AWS account ID

", + "locationName":"peerOwnerId" + } + } + }, + "CreateVpcPeeringConnectionResult":{ + "type":"structure", + "members":{ + "VpcPeeringConnection":{ + "shape":"VpcPeeringConnection", + "documentation":"

Information about the VPC peering connection.

", + "locationName":"vpcPeeringConnection" + } + } + }, + "CreateVpcRequest":{ + "type":"structure", + "required":["CidrBlock"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "CidrBlock":{ + "shape":"String", + "documentation":"

The network range for the VPC, in CIDR notation. For example, 10.0.0.0/16.

" + }, + "InstanceTenancy":{ + "shape":"Tenancy", + "documentation":"

The supported tenancy options for instances launched into the VPC. A value of default means that instances can be launched with any tenancy; a value of dedicated means all instances launched into the VPC are launched as dedicated tenancy instances regardless of the tenancy assigned to the instance at launch. Dedicated tenancy instances runs on single-tenant hardware.

Default: default

", + "locationName":"instanceTenancy" + } + } + }, + "CreateVpcResult":{ + "type":"structure", + "members":{ + "Vpc":{ + "shape":"Vpc", + "documentation":"

Information about the VPC.

", + "locationName":"vpc" + } + } + }, + "CreateVpnConnectionRequest":{ + "type":"structure", + "required":[ + "Type", + "CustomerGatewayId", + "VpnGatewayId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Type":{ + "shape":"String", + "documentation":"

The type of VPN connection.

" + }, + "CustomerGatewayId":{ + "shape":"String", + "documentation":"

The ID of the customer gateway.

" + }, + "VpnGatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway.

" + }, + "Options":{ + "shape":"VpnConnectionOptionsSpecification", + "documentation":"

Indicates whether the VPN connection requires static routes. If you are creating a VPN connection for a device that does not support BGP, you must specify true.

Default: false

", + "locationName":"options" + } + } + }, + "CreateVpnConnectionResult":{ + "type":"structure", + "members":{ + "VpnConnection":{ + "shape":"VpnConnection", + "documentation":"

Information about the VPN connection.

", + "locationName":"vpnConnection" + } + } + }, + "CreateVpnConnectionRouteRequest":{ + "type":"structure", + "required":[ + "VpnConnectionId", + "DestinationCidrBlock" + ], + "members":{ + "VpnConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPN connection.

" + }, + "DestinationCidrBlock":{ + "shape":"String", + "documentation":"

The CIDR block associated with the local subnet of the customer network.

" + } + } + }, + "CreateVpnGatewayRequest":{ + "type":"structure", + "required":["Type"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Type":{ + "shape":"GatewayType", + "documentation":"

The type of VPN connection this virtual private gateway supports.

" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone for the virtual private gateway.

" + } + } + }, + "CreateVpnGatewayResult":{ + "type":"structure", + "members":{ + "VpnGateway":{ + "shape":"VpnGateway", + "documentation":"

Information about the virtual private gateway.

", + "locationName":"vpnGateway" + } + } + }, + "CurrencyCodeValues":{ + "type":"string", + "enum":["USD"] + }, + "CustomerGateway":{ + "type":"structure", + "members":{ + "CustomerGatewayId":{ + "shape":"String", + "documentation":"

The ID of the customer gateway.

", + "locationName":"customerGatewayId" + }, + "State":{ + "shape":"String", + "documentation":"

The current state of the customer gateway.

", + "locationName":"state" + }, + "Type":{ + "shape":"String", + "documentation":"

The type of VPN connection the customer gateway supports.

", + "locationName":"type" + }, + "IpAddress":{ + "shape":"String", + "documentation":"

The Internet-routable IP address of the customer gateway's outside interface.

", + "locationName":"ipAddress" + }, + "BgpAsn":{ + "shape":"String", + "documentation":"

The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

", + "locationName":"bgpAsn" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the customer gateway.

", + "locationName":"tagSet" + } + }, + "documentation":"

Describes a customer gateway.

" + }, + "CustomerGatewayIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"CustomerGatewayId" + } + }, + "CustomerGatewayList":{ + "type":"list", + "member":{ + "shape":"CustomerGateway", + "locationName":"item" + } + }, + "DatafeedSubscriptionState":{ + "type":"string", + "enum":[ + "Active", + "Inactive" + ] + }, + "DateTime":{"type":"timestamp"}, + "DeleteCustomerGatewayRequest":{ + "type":"structure", + "required":["CustomerGatewayId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "CustomerGatewayId":{ + "shape":"String", + "documentation":"

The ID of the customer gateway.

" + } + } + }, + "DeleteDhcpOptionsRequest":{ + "type":"structure", + "required":["DhcpOptionsId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "DhcpOptionsId":{ + "shape":"String", + "documentation":"

The ID of the DHCP options set.

" + } + } + }, + "DeleteInternetGatewayRequest":{ + "type":"structure", + "required":["InternetGatewayId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InternetGatewayId":{ + "shape":"String", + "documentation":"

The ID of the Internet gateway.

", + "locationName":"internetGatewayId" + } + } + }, + "DeleteKeyPairRequest":{ + "type":"structure", + "required":["KeyName"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "KeyName":{ + "shape":"String", + "documentation":"

The name of the key pair.

" + } + } + }, + "DeleteNetworkAclEntryRequest":{ + "type":"structure", + "required":[ + "NetworkAclId", + "RuleNumber", + "Egress" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkAclId":{ + "shape":"String", + "documentation":"

The ID of the network ACL.

", + "locationName":"networkAclId" + }, + "RuleNumber":{ + "shape":"Integer", + "documentation":"

The rule number of the entry to delete.

", + "locationName":"ruleNumber" + }, + "Egress":{ + "shape":"Boolean", + "documentation":"

Indicates whether the rule is an egress rule.

", + "locationName":"egress" + } + } + }, + "DeleteNetworkAclRequest":{ + "type":"structure", + "required":["NetworkAclId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkAclId":{ + "shape":"String", + "documentation":"

The ID of the network ACL.

", + "locationName":"networkAclId" + } + } + }, + "DeleteNetworkInterfaceRequest":{ + "type":"structure", + "required":["NetworkInterfaceId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + } + } + }, + "DeletePlacementGroupRequest":{ + "type":"structure", + "required":["GroupName"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupName":{ + "shape":"String", + "documentation":"

The name of the placement group.

", + "locationName":"groupName" + } + } + }, + "DeleteRouteRequest":{ + "type":"structure", + "required":[ + "RouteTableId", + "DestinationCidrBlock" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the route table.

", + "locationName":"routeTableId" + }, + "DestinationCidrBlock":{ + "shape":"String", + "documentation":"

The CIDR range for the route. The value you specify must match the CIDR for the route exactly.

", + "locationName":"destinationCidrBlock" + } + } + }, + "DeleteRouteTableRequest":{ + "type":"structure", + "required":["RouteTableId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the route table.

", + "locationName":"routeTableId" + } + } + }, + "DeleteSecurityGroupRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupName":{ + "shape":"String", + "documentation":"

[EC2-Classic, default VPC] The name of the security group.

" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

" + } + } + }, + "DeleteSnapshotRequest":{ + "type":"structure", + "required":["SnapshotId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS snapshot.

" + } + } + }, + "DeleteSpotDatafeedSubscriptionRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + } + } + }, + "DeleteSubnetRequest":{ + "type":"structure", + "required":["SubnetId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

" + } + } + }, + "DeleteTagsRequest":{ + "type":"structure", + "required":["Resources"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Resources":{ + "shape":"ResourceIdList", + "documentation":"

The ID of the resource. For example, ami-1a2b3c4d. You can specify more than one resource ID.

", + "locationName":"resourceId" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

One or more tags to delete. If you omit the value parameter, we delete the tag regardless of its value. If you specify this parameter with an empty string as the value, we delete the key only if its value is an empty string.

", + "locationName":"tag" + } + } + }, + "DeleteVolumeRequest":{ + "type":"structure", + "required":["VolumeId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

" + } + } + }, + "DeleteVpcPeeringConnectionRequest":{ + "type":"structure", + "required":["VpcPeeringConnectionId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcPeeringConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPC peering connection.

", + "locationName":"vpcPeeringConnectionId" + } + } + }, + "DeleteVpcPeeringConnectionResult":{ + "type":"structure", + "members":{ + "Return":{ + "shape":"Boolean", + "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", + "locationName":"return" + } + } + }, + "DeleteVpcRequest":{ + "type":"structure", + "required":["VpcId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

" + } + } + }, + "DeleteVpnConnectionRequest":{ + "type":"structure", + "required":["VpnConnectionId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpnConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPN connection.

" + } + } + }, + "DeleteVpnConnectionRouteRequest":{ + "type":"structure", + "required":[ + "VpnConnectionId", + "DestinationCidrBlock" + ], + "members":{ + "VpnConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPN connection.

" + }, + "DestinationCidrBlock":{ + "shape":"String", + "documentation":"

The CIDR block associated with the local subnet of the customer network.

" + } + } + }, + "DeleteVpnGatewayRequest":{ + "type":"structure", + "required":["VpnGatewayId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpnGatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway.

" + } + } + }, + "DeregisterImageRequest":{ + "type":"structure", + "required":["ImageId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

" + } + } + }, + "DescribeAccountAttributesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "AttributeNames":{ + "shape":"AccountAttributeNameStringList", + "documentation":"

One or more account attribute names.

", + "locationName":"attributeName" + } + } + }, + "DescribeAccountAttributesResult":{ + "type":"structure", + "members":{ + "AccountAttributes":{ + "shape":"AccountAttributeList", + "documentation":"

Information about one or more account attributes.

", + "locationName":"accountAttributeSet" + } + } + }, + "DescribeAddressesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "PublicIps":{ + "shape":"PublicIpStringList", + "documentation":"

[EC2-Classic] One or more Elastic IP addresses.

Default: Describes all your Elastic IP addresses.

", + "locationName":"PublicIp" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • allocation-id - [EC2-VPC] The allocation ID for the address.

  • association-id - [EC2-VPC] The association ID for the address.

  • domain - Indicates whether the address is for use in EC2-Classic (standard) or in a VPC (vpc).

  • instance-id - The ID of the instance the address is associated with, if any.

  • network-interface-id - [EC2-VPC] The ID of the network interface that the address is associated with, if any.

  • network-interface-owner-id - The AWS account ID of the owner.

  • private-ip-address - [EC2-VPC] The private IP address associated with the Elastic IP address.

  • public-ip - The Elastic IP address.

", + "locationName":"Filter" + }, + "AllocationIds":{ + "shape":"AllocationIdList", + "documentation":"

[EC2-VPC] One or more allocation IDs.

Default: Describes all your Elastic IP addresses.

", + "locationName":"AllocationId" + } + } + }, + "DescribeAddressesResult":{ + "type":"structure", + "members":{ + "Addresses":{ + "shape":"AddressList", + "documentation":"

Information about one or more Elastic IP addresses.

", + "locationName":"addressesSet" + } + } + }, + "DescribeAvailabilityZonesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ZoneNames":{ + "shape":"ZoneNameStringList", + "documentation":"

The names of one or more Availability Zones.

", + "locationName":"ZoneName" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • message - Information about the Availability Zone.

  • region-name - The name of the region for the Availability Zone (for example, us-east-1).

  • state - The state of the Availability Zone (available | impaired | unavailable).

  • zone-name - The name of the Availability Zone (for example, us-east-1a).

", + "locationName":"Filter" + } + } + }, + "DescribeAvailabilityZonesResult":{ + "type":"structure", + "members":{ + "AvailabilityZones":{ + "shape":"AvailabilityZoneList", + "documentation":"

Information about one or more Availability Zones.

", + "locationName":"availabilityZoneInfo" + } + } + }, + "DescribeBundleTasksRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "BundleIds":{ + "shape":"BundleIdStringList", + "documentation":"

One or more bundle task IDs.

Default: Describes all your bundle tasks.

", + "locationName":"BundleId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • bundle-id - The ID of the bundle task.

  • error-code - If the task failed, the error code returned.

  • error-message - If the task failed, the error message returned.

  • instance-id - The ID of the instance.

  • progress - The level of task completion, as a percentage (for example, 20%).

  • s3-bucket - The Amazon S3 bucket to store the AMI.

  • s3-prefix - The beginning of the AMI name.

  • start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z).

  • state - The state of the task (pending | waiting-for-shutdown | bundling | storing | cancelling | complete | failed).

  • update-time - The time of the most recent update for the task.

", + "locationName":"Filter" + } + } + }, + "DescribeBundleTasksResult":{ + "type":"structure", + "members":{ + "BundleTasks":{ + "shape":"BundleTaskList", + "documentation":"

Information about one or more bundle tasks.

", + "locationName":"bundleInstanceTasksSet" + } + } + }, + "DescribeConversionTaskList":{ + "type":"list", + "member":{ + "shape":"ConversionTask", + "locationName":"item" + } + }, + "DescribeConversionTasksRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Filters":{ + "shape":"FilterList", + "locationName":"filter" + }, + "ConversionTaskIds":{ + "shape":"ConversionIdStringList", + "documentation":"

One or more conversion task IDs.

", + "locationName":"conversionTaskId" + } + } + }, + "DescribeConversionTasksResult":{ + "type":"structure", + "members":{ + "ConversionTasks":{ + "shape":"DescribeConversionTaskList", + "locationName":"conversionTasks" + } + } + }, + "DescribeCustomerGatewaysRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "CustomerGatewayIds":{ + "shape":"CustomerGatewayIdStringList", + "documentation":"

One or more customer gateway IDs.

Default: Describes all your customer gateways.

", + "locationName":"CustomerGatewayId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

  • customer-gateway-id - The ID of the customer gateway.

  • ip-address - The IP address of the customer gateway's Internet-routable external interface.

  • state - The state of the customer gateway (pending | available | deleting | deleted).

  • type - The type of customer gateway. Currently, the only supported type is ipsec.1.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

", + "locationName":"Filter" + } + } + }, + "DescribeCustomerGatewaysResult":{ + "type":"structure", + "members":{ + "CustomerGateways":{ + "shape":"CustomerGatewayList", + "documentation":"

Information about one or more customer gateways.

", + "locationName":"customerGatewaySet" + } + } + }, + "DescribeDhcpOptionsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "DhcpOptionsIds":{ + "shape":"DhcpOptionsIdStringList", + "documentation":"

The IDs of one or more DHCP options sets.

Default: Describes all your DHCP options sets.

", + "locationName":"DhcpOptionsId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • dhcp-options-id - The ID of a set of DHCP options.

  • key - The key for one of the options (for example, domain-name).

  • value - The value for one of the options.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

", + "locationName":"Filter" + } + } + }, + "DescribeDhcpOptionsResult":{ + "type":"structure", + "members":{ + "DhcpOptions":{ + "shape":"DhcpOptionsList", + "documentation":"

Information about one or more DHCP options sets.

", + "locationName":"dhcpOptionsSet" + } + } + }, + "DescribeExportTasksRequest":{ + "type":"structure", + "members":{ + "ExportTaskIds":{ + "shape":"ExportTaskIdStringList", + "documentation":"

One or more export task IDs.

", + "locationName":"exportTaskId" + } + } + }, + "DescribeExportTasksResult":{ + "type":"structure", + "members":{ + "ExportTasks":{ + "shape":"ExportTaskList", + "locationName":"exportTaskSet" + } + } + }, + "DescribeImageAttributeRequest":{ + "type":"structure", + "required":[ + "ImageId", + "Attribute" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

" + }, + "Attribute":{ + "shape":"ImageAttributeName", + "documentation":"

The AMI attribute.

" + } + } + }, + "DescribeImagesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ImageIds":{ + "shape":"ImageIdStringList", + "documentation":"

One or more image IDs.

Default: Describes all images available to you.

", + "locationName":"ImageId" + }, + "Owners":{ + "shape":"OwnerStringList", + "documentation":"

Filters the images by the owner. Specify an AWS account ID, amazon (owner is Amazon), aws-marketplace (owner is AWS Marketplace), self (owner is the sender of the request), or all (all owners).

", + "locationName":"Owner" + }, + "ExecutableUsers":{ + "shape":"ExecutableByStringList", + "documentation":"

Scopes the images by users with explicit launch permissions. Specify an AWS account ID, self (the sender of the request), or all (public AMIs).

", + "locationName":"ExecutableBy" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • architecture - The image architecture (i386 | x86_64).

  • block-device-mapping.delete-on-termination - A Boolean value that indicates whether the Amazon EBS volume is deleted on instance termination.

  • block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

  • block-device-mapping.volume-size - The volume size of the Amazon EBS volume, in GiB.

  • block-device-mapping.volume-type - The volume type of the Amazon EBS volume (gp2 | standard | io1).

  • description - The description of the image (provided during image creation).

  • hypervisor - The hypervisor type (ovm | xen).

  • image-id - The ID of the image.

  • image-type - The image type (machine | kernel | ramdisk).

  • is-public - A Boolean that indicates whether the image is public.

  • kernel-id - The kernel ID.

  • manifest-location - The location of the image manifest.

  • name - The name of the AMI (provided during image creation).

  • owner-alias - The AWS account alias (for example, amazon).

  • owner-id - The AWS account ID of the image owner.

  • platform - The platform. To only list Windows-based AMIs, use windows.

  • product-code - The product code.

  • product-code.type - The type of the product code (devpay | marketplace).

  • ramdisk-id - The RAM disk ID.

  • root-device-name - The name of the root device volume (for example, /dev/sda1).

  • root-device-type - The type of the root device volume (ebs | instance-store).

  • state - The state of the image (available | pending | failed).

  • state-reason-code - The reason code for the state change.

  • state-reason-message - The message for the state change.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • virtualization-type - The virtualization type (paravirtual | hvm).

", + "locationName":"Filter" + } + } + }, + "DescribeImagesResult":{ + "type":"structure", + "members":{ + "Images":{ + "shape":"ImageList", + "documentation":"

Information about one or more images.

", + "locationName":"imagesSet" + } + } + }, + "DescribeInstanceAttributeRequest":{ + "type":"structure", + "required":[ + "InstanceId", + "Attribute" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "Attribute":{ + "shape":"InstanceAttributeName", + "documentation":"

The instance attribute.

", + "locationName":"attribute" + } + } + }, + "DescribeInstanceStatusRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

Default: Describes all your instances.

Constraints: Maximum 100 explicitly specified instance IDs.

", + "locationName":"InstanceId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • availability-zone - The Availability Zone of the instance.

  • event.code - The code identifying the type of event (instance-reboot | system-reboot | system-maintenance | instance-retirement | instance-stop).

  • event.description - A description of the event.

  • event.not-after - The latest end time for the scheduled event.

  • event.not-before - The earliest start time for the scheduled event.

  • instance-state-code - A code representing the state of the instance, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented. The valid values are 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped).

  • instance-state-name - The state of the instance (pending | running | shutting-down | terminated | stopping | stopped).

  • instance-status.reachability - Filters on instance status where the name is reachability (passed | failed | initializing | insufficient-data).

  • instance-status.status - The status of the instance (ok | impaired | initializing | insufficient-data | not-applicable).

  • system-status.reachability - Filters on system status where the name is reachability (passed | failed | initializing | insufficient-data).

  • system-status.status - The system status of the instance (ok | impaired | initializing | insufficient-data | not-applicable).

", + "locationName":"Filter" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The next paginated set of results to return.

" + }, + "MaxResults":{ + "shape":"Integer", + "documentation":"

The maximum number of paginated instance items per response.

Default: 1000

" + }, + "IncludeAllInstances":{ + "shape":"Boolean", + "documentation":"

When true, includes the health status for all instances. When false, includes the health status for running instances only.

Default: false

", + "locationName":"includeAllInstances" + } + } + }, + "DescribeInstanceStatusResult":{ + "type":"structure", + "members":{ + "InstanceStatuses":{ + "shape":"InstanceStatusList", + "documentation":"

One or more instance status descriptions.

", + "locationName":"instanceStatusSet" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The next paginated set of results to return.

", + "locationName":"nextToken" + } + } + }, + "DescribeInstancesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

Default: Describes all your instances.

", + "locationName":"InstanceId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • architecture - The instance architecture (i386 | x86_64).

  • availability-zone - The Availability Zone of the instance.

  • block-device-mapping.attach-time - The attach time for an Amazon EBS volume mapped to the instance.

  • block-device-mapping.delete-on-termination - A Boolean that indicates whether the Amazon EBS volume is deleted on instance termination.

  • block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • block-device-mapping.status - The status for the Amazon EBS volume (attaching | attached | detaching | detached).

  • block-device-mapping.volume-id - The volume ID of the Amazon EBS volume.

  • client-token - The idempotency token you provided when you launched the instance.

  • dns-name - The public DNS name of the instance.

  • group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use group-name instead.

  • group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use group-id instead.

  • hypervisor - The hypervisor type of the instance (ovm | xen).

  • iam-instance-profile.arn - The instance profile associated with the instance. Specified as an ARN.

  • image-id - The ID of the image used to launch the instance.

  • instance-id - The ID of the instance.

  • instance-lifecycle - Indicates whether this is a Spot Instance (spot).

  • instance-state-code - The state of the instance, as a 16-bit unsigned integer. The high byte is an opaque internal value and should be ignored. The low byte is set based on the state represented. The valid values are: 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped).

  • instance-state-name - The state of the instance (pending | running | shutting-down | terminated | stopping | stopped).

  • instance-type - The type of instance (for example, m1.small).

  • instance.group-id - The ID of the security group for the instance. If the instance is in EC2-Classic or a default VPC, you can use instance.group-name instead.

  • instance.group-name - The name of the security group for the instance. If the instance is in a nondefault VPC, you must use instance.group-id instead.

  • ip-address - The public IP address of the instance.

  • kernel-id - The kernel ID.

  • key-name - The name of the key pair used when the instance was launched.

  • launch-index - When launching multiple instances, this is the index for the instance in the launch group (for example, 0, 1, 2, and so on).

  • launch-time - The time when the instance was launched.

  • monitoring-state - Indicates whether monitoring is enabled for the instance (disabled | enabled).

  • owner-id - The AWS account ID of the instance owner.

  • placement-group-name - The name of the placement group for the instance.

  • platform - The platform. Use windows if you have Windows instances; otherwise, leave blank.

  • private-dns-name - The private DNS name of the instance.

  • private-ip-address - The private IP address of the instance.

  • product-code - The product code associated with the AMI used to launch the instance.

  • product-code.type - The type of product code (devpay | marketplace).

  • ramdisk-id - The RAM disk ID.

  • reason - The reason for the current state of the instance (for example, shows \"User Initiated [date]\" when you stop or terminate the instance). Similar to the state-reason-code filter.

  • requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

  • reservation-id - The ID of the instance's reservation. A reservation ID is created any time you launch an instance. A reservation ID has a one-to-one relationship with an instance launch request, but can be associated with more than one instance if you launch multiple instances using the same launch request. For example, if you launch one instance, you'll get one reservation ID. If you launch ten instances using the same launch request, you'll also get one reservation ID.

  • root-device-name - The name of the root device for the instance (for example, /dev/sda1).

  • root-device-type - The type of root device that the instance uses (ebs | instance-store).

  • source-dest-check - Indicates whether the instance performs source/destination checking. A value of true means that checking is enabled, and false means checking is disabled. The value must be false for the instance to perform network address translation (NAT) in your VPC.

  • spot-instance-request-id - The ID of the Spot Instance request.

  • state-reason-code - The reason code for the state change.

  • state-reason-message - A message that describes the state change.

  • subnet-id - The ID of the subnet for the instance.

  • tag:key=value - The key/value combination of a tag assigned to the resource, where tag:key is the tag's key.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • tenancy - The tenancy of an instance (dedicated | default).

  • virtualization-type - The virtualization type of the instance (paravirtual | hvm).

  • vpc-id - The ID of the VPC that the instance is running in.

  • network-interface.description - The description of the network interface.

  • network-interface.subnet-id - The ID of the subnet for the network interface.

  • network-interface.vpc-id - The ID of the VPC for the network interface.

  • network-interface.network-interface.id - The ID of the network interface.

  • network-interface.owner-id - The ID of the owner of the network interface.

  • network-interface.availability-zone - The Availability Zone for the network interface.

  • network-interface.requester-id - The requester ID for the network interface.

  • network-interface.requester-managed - Indicates whether the network interface is being managed by AWS.

  • network-interface.status - The status of the network interface (available) | in-use).

  • network-interface.mac-address - The MAC address of the network interface.

  • network-interface-private-dns-name - The private DNS name of the network interface.

  • network-interface.source-destination-check - Whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform network address translation (NAT) in your VPC.

  • network-interface.group-id - The ID of a security group associated with the network interface.

  • network-interface.group-name - The name of a security group associated with the network interface.

  • network-interface.attachment.attachment-id - The ID of the interface attachment.

  • network-interface.attachment.instance-id - The ID of the instance to which the network interface is attached.

  • network-interface.attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

  • network-interface.addresses.private-ip-address - The private IP address associated with the network interface.

  • network-interface.attachment.device-index - The device index to which the network interface is attached.

  • network-interface.attachment.status - The status of the attachment (attaching | attached | detaching | detached).

  • network-interface.attachment.attach-time - The time that the network interface was attached to an instance.

  • network-interface.attachment.delete-on-termination - Specifies whether the attachment is deleted when an instance is terminated.

  • network-interface.addresses.primary - Specifies whether the IP address of the network interface is the primary private IP address.

  • network-interface.addresses.association.public-ip - The ID of the association of an Elastic IP address with a network interface.

  • network-interface.addresses.association.ip-owner-id - The owner ID of the private IP address associated with the network interface.

  • association.public-ip - The address of the Elastic IP address bound to the network interface.

  • association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

  • association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

  • association.association-id - The association ID returned when the network interface was associated with an IP address.

", + "locationName":"Filter" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", + "locationName":"nextToken" + }, + "MaxResults":{ + "shape":"Integer", + "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", + "locationName":"maxResults" + } + } + }, + "DescribeInstancesResult":{ + "type":"structure", + "members":{ + "Reservations":{ + "shape":"ReservationList", + "documentation":"

One or more reservations.

", + "locationName":"reservationSet" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", + "locationName":"nextToken" + } + } + }, + "DescribeInternetGatewaysRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InternetGatewayIds":{ + "shape":"ValueStringList", + "documentation":"

One or more Internet gateway IDs.

Default: Describes all your Internet gateways.

", + "locationName":"internetGatewayId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • attachment.state - The current state of the attachment between the gateway and the VPC. Present only if a VPC is attached.

  • attachment.vpc-id - The ID of an attached VPC.

  • internet-gateway-id - The ID of the Internet gateway.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

", + "locationName":"Filter" + } + } + }, + "DescribeInternetGatewaysResult":{ + "type":"structure", + "members":{ + "InternetGateways":{ + "shape":"InternetGatewayList", + "documentation":"

Information about one or more Internet gateways.

", + "locationName":"internetGatewaySet" + } + } + }, + "DescribeKeyPairsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "KeyNames":{ + "shape":"KeyNameStringList", + "documentation":"

One or more key pair names.

Default: Describes all your key pairs.

", + "locationName":"KeyName" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • fingerprint - The fingerprint of the key pair.

  • key-name - The name of the key pair.

", + "locationName":"Filter" + } + } + }, + "DescribeKeyPairsResult":{ + "type":"structure", + "members":{ + "KeyPairs":{ + "shape":"KeyPairList", + "documentation":"

Information about one or more key pairs.

", + "locationName":"keySet" + } + } + }, + "DescribeNetworkAclsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkAclIds":{ + "shape":"ValueStringList", + "documentation":"

One or more network ACL IDs.

Default: Describes all your network ACLs.

", + "locationName":"NetworkAclId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • association.association-id - The ID of an association ID for the ACL.

  • association.network-acl-id - The ID of the network ACL involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • default - Indicates whether the ACL is the default network ACL for the VPC.

  • entry.cidr - The CIDR range specified in the entry.

  • entry.egress - Indicates whether the entry applies to egress traffic.

  • entry.icmp.code - The ICMP code specified in the entry, if any.

  • entry.icmp.type - The ICMP type specified in the entry, if any.

  • entry.port-range.from - The start of the port range specified in the entry.

  • entry.port-range.to - The end of the port range specified in the entry.

  • entry.protocol - The protocol specified in the entry (tcp | udp | icmp or a protocol number).

  • entry.rule-action - Allows or denies the matching traffic (allow | deny).

  • entry.rule-number - The number of an entry (in other words, rule) in the ACL's set of entries.

  • network-acl-id - The ID of the network ACL.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the network ACL.

", + "locationName":"Filter" + } + } + }, + "DescribeNetworkAclsResult":{ + "type":"structure", + "members":{ + "NetworkAcls":{ + "shape":"NetworkAclList", + "documentation":"

Information about one or more network ACLs.

", + "locationName":"networkAclSet" + } + } + }, + "DescribeNetworkInterfaceAttributeRequest":{ + "type":"structure", + "required":["NetworkInterfaceId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "Attribute":{ + "shape":"NetworkInterfaceAttribute", + "documentation":"

The attribute of the network interface.

", + "locationName":"attribute" + } + } + }, + "DescribeNetworkInterfaceAttributeResult":{ + "type":"structure", + "members":{ + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "Description":{ + "shape":"AttributeValue", + "documentation":"

The description of the network interface.

", + "locationName":"description" + }, + "SourceDestCheck":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether source/destination checking is enabled.

", + "locationName":"sourceDestCheck" + }, + "Groups":{ + "shape":"GroupIdentifierList", + "documentation":"

The security groups associated with the network interface.

", + "locationName":"groupSet" + }, + "Attachment":{ + "shape":"NetworkInterfaceAttachment", + "documentation":"

The attachment (if any) of the network interface.

", + "locationName":"attachment" + } + } + }, + "DescribeNetworkInterfacesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkInterfaceIds":{ + "shape":"NetworkInterfaceIdList", + "documentation":"

One or more network interface IDs.

Default: Describes all your network interfaces.

", + "locationName":"NetworkInterfaceId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • addresses.private-ip-address - The private IP addresses associated with the network interface.

  • addresses.primary - Whether the private IP address is the primary IP address associated with the network interface.

  • addresses.association.public-ip - The association ID returned when the network interface was associated with the Elastic IP address.

  • addresses.association.owner-id - The owner ID of the addresses associated with the network interface.

  • association.association-id - The association ID returned when the network interface was associated with an IP address.

  • association.allocation-id - The allocation ID returned when you allocated the Elastic IP address for your network interface.

  • association.ip-owner-id - The owner of the Elastic IP address associated with the network interface.

  • association.public-ip - The address of the Elastic IP address bound to the network interface.

  • association.public-dns-name - The public DNS name for the network interface.

  • attachment.attachment-id - The ID of the interface attachment.

  • attachment.instance-id - The ID of the instance to which the network interface is attached.

  • attachment.instance-owner-id - The owner ID of the instance to which the network interface is attached.

  • attachment.device-index - The device index to which the network interface is attached.

  • attachment.status - The status of the attachment (attaching | attached | detaching | detached).

  • attachment.attach.time - The time that the network interface was attached to an instance.

  • attachment.delete-on-termination - Indicates whether the attachment is deleted when an instance is terminated.

  • availability-zone - The Availability Zone of the network interface.

  • description - The description of the network interface.

  • group-id - The ID of a security group associated with the network interface.

  • group-name - The name of a security group associated with the network interface.

  • mac-address - The MAC address of the network interface.

  • network-interface-id - The ID of the network interface.

  • owner-id - The AWS account ID of the network interface owner.

  • private-ip-address - The private IP address or addresses of the network interface.

  • private-dns-name - The private DNS name of the network interface.

  • requester-id - The ID of the entity that launched the instance on your behalf (for example, AWS Management Console, Auto Scaling, and so on).

  • requester-managed - Indicates whether the network interface is being managed by an AWS service (for example, AWS Management Console, Auto Scaling, and so on).

  • source-desk-check - Indicates whether the network interface performs source/destination checking. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the network interface to perform Network Address Translation (NAT) in your VPC.

  • status - The status of the network interface. If the network interface is not attached to an instance, the status is available; if a network interface is attached to an instance the status is in-use.

  • subnet-id - The ID of the subnet for the network interface.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the network interface.

", + "locationName":"filter" + } + } + }, + "DescribeNetworkInterfacesResult":{ + "type":"structure", + "members":{ + "NetworkInterfaces":{ + "shape":"NetworkInterfaceList", + "documentation":"

Information about one or more network interfaces.

", + "locationName":"networkInterfaceSet" + } + } + }, + "DescribePlacementGroupsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupNames":{ + "shape":"PlacementGroupStringList", + "documentation":"

One or more placement group names.

Default: Describes all your placement groups, or only those otherwise specified.

", + "locationName":"groupName" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • group-name - The name of the placement group.

  • state - The state of the placement group (pending | available | deleting | deleted).

  • strategy - The strategy of the placement group (cluster).

", + "locationName":"Filter" + } + } + }, + "DescribePlacementGroupsResult":{ + "type":"structure", + "members":{ + "PlacementGroups":{ + "shape":"PlacementGroupList", + "documentation":"

One or more placement groups.

", + "locationName":"placementGroupSet" + } + } + }, + "DescribeRegionsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "RegionNames":{ + "shape":"RegionNameStringList", + "documentation":"

The names of one or more regions.

", + "locationName":"RegionName" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • endpoint - The endpoint of the region (for example, ec2.us-east-1.amazonaws.com).

  • region-name - The name of the region (for example, us-east-1).

", + "locationName":"Filter" + } + } + }, + "DescribeRegionsResult":{ + "type":"structure", + "members":{ + "Regions":{ + "shape":"RegionList", + "documentation":"

Information about one or more regions.

", + "locationName":"regionInfo" + } + } + }, + "DescribeReservedInstancesListingsRequest":{ + "type":"structure", + "members":{ + "ReservedInstancesId":{ + "shape":"String", + "documentation":"

One or more Reserved Instance IDs.

", + "locationName":"reservedInstancesId" + }, + "ReservedInstancesListingId":{ + "shape":"String", + "documentation":"

One or more Reserved Instance Listing IDs.

", + "locationName":"reservedInstancesListingId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • reserved-instances-id - The ID of the Reserved Instances.

  • reserved-instances-listing-id - The ID of the Reserved Instances listing.

  • status - The status of the Reserved Instance listing (pending | active | cancelled | closed).

  • status-message - The reason for the status.

", + "locationName":"filters" + } + } + }, + "DescribeReservedInstancesListingsResult":{ + "type":"structure", + "members":{ + "ReservedInstancesListings":{ + "shape":"ReservedInstancesListingList", + "documentation":"

Information about the Reserved Instance listing.

", + "locationName":"reservedInstancesListingsSet" + } + } + }, + "DescribeReservedInstancesModificationsRequest":{ + "type":"structure", + "members":{ + "ReservedInstancesModificationIds":{ + "shape":"ReservedInstancesModificationIdStringList", + "documentation":"

IDs for the submitted modification request.

", + "locationName":"ReservedInstancesModificationId" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token for the next page of data.

", + "locationName":"nextToken" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • client-token - The idempotency token for the modification request.

  • create-date - The time when the modification request was created.

  • effective-date - The time when the modification becomes effective.

  • modification-result.reserved-instances-id - The ID for the Reserved Instances created as part of the modification request. This ID is only available when the status of the modification is fulfilled.

  • modification-result.target-configuration.availability-zone - The Availability Zone for the new Reserved Instances.

  • modification-result.target-configuration.instance-count - The number of new Reserved Instances.

  • modification-result.target-configuration.instance-type - The instance type of the new Reserved Instances.

  • modification-result.target-configuration.platform - The network platform of the new Reserved Instances (EC2-Classic | EC2-VPC).

  • reserved-instances-id - The ID of the Reserved Instances modified.

  • reserved-instances-modification-id - The ID of the modification request.

  • status - The status of the Reserved Instances modification request (processing | fulfilled | failed).

  • status-message - The reason for the status.

  • update-date - The time when the modification request was last updated.

", + "locationName":"Filter" + } + } + }, + "DescribeReservedInstancesModificationsResult":{ + "type":"structure", + "members":{ + "ReservedInstancesModifications":{ + "shape":"ReservedInstancesModificationList", + "documentation":"

The Reserved Instance modification information.

", + "locationName":"reservedInstancesModificationsSet" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token for the next page of data.

", + "locationName":"nextToken" + } + } + }, + "DescribeReservedInstancesOfferingsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ReservedInstancesOfferingIds":{ + "shape":"ReservedInstancesOfferingIdStringList", + "documentation":"

One or more Reserved Instances offering IDs.

", + "locationName":"ReservedInstancesOfferingId" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type on which the Reserved Instance can be used. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone in which the Reserved Instance can be used.

" + }, + "ProductDescription":{ + "shape":"RIProductDescription", + "documentation":"

The Reserved Instance description. Instances that include (Amazon VPC) in the description are for use with Amazon VPC.

" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • availability-zone - The Availability Zone where the Reserved Instance can be used.

  • duration - The duration of the Reserved Instance (for example, one year or three years), in seconds.

  • fixed-price - The purchase price of the Reserved Instance (for example, 9800.0).

  • instance-type - The instance type on which the Reserved Instance can be used.

  • marketplace - Set to true to show only Reserved Instance Marketplace offerings. When this filter is not used, which is the default behavior, all offerings from AWS and Reserved Instance Marketplace are listed.

  • product-description - The description of the Reserved Instance (Linux/UNIX | Linux/UNIX (Amazon VPC) | Windows | Windows (Amazon VPC)).

  • reserved-instances-offering-id - The Reserved Instances offering ID.

  • usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84).

", + "locationName":"Filter" + }, + "InstanceTenancy":{ + "shape":"Tenancy", + "documentation":"

The tenancy of the Reserved Instance offering. A Reserved Instance with dedicated tenancy runs on single-tenant hardware and can only be launched within a VPC.

Default: default

", + "locationName":"instanceTenancy" + }, + "OfferingType":{ + "shape":"OfferingTypeValues", + "documentation":"

The Reserved Instance offering type.

", + "locationName":"offeringType" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use when requesting the next paginated set of offerings.

", + "locationName":"nextToken" + }, + "MaxResults":{ + "shape":"Integer", + "documentation":"

The maximum number of offerings to return.

", + "locationName":"maxResults" + }, + "IncludeMarketplace":{ + "shape":"Boolean", + "documentation":"

Include Marketplace offerings in the response.

" + }, + "MinDuration":{ + "shape":"Long", + "documentation":"

The minimum duration (in seconds) to filter when searching for offerings.

" + }, + "MaxDuration":{ + "shape":"Long", + "documentation":"

The maximum duration (in seconds) to filter when searching for offerings.

" + }, + "MaxInstanceCount":{ + "shape":"Integer", + "documentation":"

The maximum number of instances to filter when searching for offerings.

" + } + } + }, + "DescribeReservedInstancesOfferingsResult":{ + "type":"structure", + "members":{ + "ReservedInstancesOfferings":{ + "shape":"ReservedInstancesOfferingList", + "documentation":"

A list of Reserved Instances offerings.

", + "locationName":"reservedInstancesOfferingsSet" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The next paginated set of results to return.

", + "locationName":"nextToken" + } + } + }, + "DescribeReservedInstancesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ReservedInstancesIds":{ + "shape":"ReservedInstancesIdStringList", + "documentation":"

One or more Reserved Instance IDs.

Default: Describes all your Reserved Instances, or only those otherwise specified.

", + "locationName":"ReservedInstancesId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • availability-zone - The Availability Zone where the Reserved Instance can be used.

  • duration - The duration of the Reserved Instance (one year or three years), in seconds (31536000 | 94608000).

  • end - The time when the Reserved Instance expires.

  • fixed-price - The purchase price of the Reserved Instance (for example, 9800.0).

  • instance-type - The instance type on which the Reserved Instance can be used.

  • product-description - The product description of the Reserved Instance (Linux/UNIX | Linux/UNIX (Amazon VPC) | Windows | Windows (Amazon VPC)).

  • reserved-instances-id - The ID of the Reserved Instance.

  • start - The time at which the Reserved Instance purchase request was placed.

  • state - The state of the Reserved Instance (pending-payment | active | payment-failed | retired).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • usage-price - The usage price of the Reserved Instance, per hour (for example, 0.84).

", + "locationName":"Filter" + }, + "OfferingType":{ + "shape":"OfferingTypeValues", + "documentation":"

The Reserved Instance offering type.

", + "locationName":"offeringType" + } + } + }, + "DescribeReservedInstancesResult":{ + "type":"structure", + "members":{ + "ReservedInstances":{ + "shape":"ReservedInstancesList", + "documentation":"

A list of Reserved Instances.

", + "locationName":"reservedInstancesSet" + } + } + }, + "DescribeRouteTablesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "RouteTableIds":{ + "shape":"ValueStringList", + "documentation":"

One or more route table IDs.

Default: Describes all your route tables.

", + "locationName":"RouteTableId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • association.route-table-association-id - The ID of an association ID for the route table.

  • association.route-table-id - The ID of the route table involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • association.main - Indicates whether the route table is the main route table for the VPC.

  • route-table-id - The ID of the route table.

  • route.destination-cidr-block - The CIDR range specified in a route in the table.

  • route.gateway-id - The ID of a gateway specified in a route in the table.

  • route.instance-id - The ID of an instance specified in a route in the table.

  • route.origin - Describes how the route was created (CreateRouteTable | CreateRoute | EnableVgwRoutePropagation).

  • route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on).

  • route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the route table.

", + "locationName":"Filter" + } + } + }, + "DescribeRouteTablesResult":{ + "type":"structure", + "members":{ + "RouteTables":{ + "shape":"RouteTableList", + "documentation":"

Information about one or more route tables.

", + "locationName":"routeTableSet" + } + } + }, + "DescribeSecurityGroupsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupNames":{ + "shape":"GroupNameStringList", + "documentation":"

[EC2-Classic, default VPC] One or more security group names.

Default: Describes all your security groups.

", + "locationName":"GroupName" + }, + "GroupIds":{ + "shape":"GroupIdStringList", + "documentation":"

One or more security group IDs.

Default: Describes all your security groups.

", + "locationName":"GroupId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • description - The description of the security group.

  • group-id - The ID of the security group.

  • group-name - The name of the security group.

  • ip-permission.cidr - A CIDR range that has been granted permission.

  • ip-permission.from-port - The start of port range for the TCP and UDP protocols, or an ICMP type number.

  • ip-permission.group-id - The ID of a security group that has been granted permission.

  • ip-permission.group-name - The name of a security group that has been granted permission.

  • ip-permission.protocol - The IP protocol for the permission (tcp | udp | icmp or a protocol number).

  • ip-permission.to-port - The end of port range for the TCP and UDP protocols, or an ICMP code.

  • ip-permission.user-id - The ID of an AWS account that has been granted permission.

  • owner-id - The AWS account ID of the owner of the security group.

  • tag-key - The key of a tag assigned to the security group.

  • tag-value - The value of a tag assigned to the security group.

  • vpc-id - The ID of the VPC specified when the security group was created.

", + "locationName":"Filter" + } + } + }, + "DescribeSecurityGroupsResult":{ + "type":"structure", + "members":{ + "SecurityGroups":{ + "shape":"SecurityGroupList", + "documentation":"

Information about one or more security groups.

", + "locationName":"securityGroupInfo" + } + } + }, + "DescribeSnapshotAttributeRequest":{ + "type":"structure", + "required":[ + "SnapshotId", + "Attribute" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS snapshot.

" + }, + "Attribute":{ + "shape":"SnapshotAttributeName", + "documentation":"

The snapshot attribute you would like to view.

" + } + } + }, + "DescribeSnapshotAttributeResult":{ + "type":"structure", + "members":{ + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS snapshot.

", + "locationName":"snapshotId" + }, + "CreateVolumePermissions":{ + "shape":"CreateVolumePermissionList", + "documentation":"

A list of permissions for creating volumes from the snapshot.

", + "locationName":"createVolumePermission" + }, + "ProductCodes":{ + "shape":"ProductCodeList", + "documentation":"

A list of product codes.

", + "locationName":"productCodes" + } + } + }, + "DescribeSnapshotsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SnapshotIds":{ + "shape":"SnapshotIdStringList", + "documentation":"

One or more snapshot IDs.

Default: Describes snapshots for which you have launch permissions.

", + "locationName":"SnapshotId" + }, + "OwnerIds":{ + "shape":"OwnerStringList", + "documentation":"

Returns the snapshots owned by the specified owner. Multiple owners can be specified.

", + "locationName":"Owner" + }, + "RestorableByUserIds":{ + "shape":"RestorableByStringList", + "documentation":"

One or more AWS accounts IDs that can create volumes from the snapshot.

", + "locationName":"RestorableBy" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • description - A description of the snapshot.

  • owner-alias - The AWS account alias (for example, amazon) that owns the snapshot.

  • owner-id - The ID of the AWS account that owns the snapshot.

  • progress - The progress of the snapshot, as a percentage (for example, 80%).

  • snapshot-id - The snapshot ID.

  • start-time - The time stamp when the snapshot was initiated.

  • status - The status of the snapshot (pending | completed | error).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • volume-id - The ID of the volume the snapshot is for.

  • volume-size - The size of the volume, in GiB.

", + "locationName":"Filter" + } + } + }, + "DescribeSnapshotsResult":{ + "type":"structure", + "members":{ + "Snapshots":{ + "shape":"SnapshotList", + "locationName":"snapshotSet" + } + } + }, + "DescribeSpotDatafeedSubscriptionRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + } + } + }, + "DescribeSpotDatafeedSubscriptionResult":{ + "type":"structure", + "members":{ + "SpotDatafeedSubscription":{ + "shape":"SpotDatafeedSubscription", + "documentation":"

The Spot Instance datafeed subscription.

", + "locationName":"spotDatafeedSubscription" + } + } + }, + "DescribeSpotInstanceRequestsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SpotInstanceRequestIds":{ + "shape":"SpotInstanceRequestIdList", + "documentation":"

One or more Spot Instance request IDs.

", + "locationName":"SpotInstanceRequestId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • availability-zone-group - The Availability Zone group.

  • create-time - The time stamp when the Spot Instance request was created.

  • fault-code - The fault code related to the request.

  • fault-message - The fault message related to the request.

  • instance-id - The ID of the instance that fulfilled the request.

  • launch-group - The Spot Instance launch group.

  • launch.block-device-mapping.delete-on-termination - Indicates whether the Amazon EBS volume is deleted on instance termination.

  • launch.block-device-mapping.device-name - The device name for the Amazon EBS volume (for example, /dev/sdh).

  • launch.block-device-mapping.snapshot-id - The ID of the snapshot used for the Amazon EBS volume.

  • launch.block-device-mapping.volume-size - The size of the Amazon EBS volume, in GiB.

  • launch.block-device-mapping.volume-type - The type of the Amazon EBS volume (gp2 | standard | io1).

  • launch.group-id - The security group for the instance.

  • launch.image-id - The ID of the AMI.

  • launch.instance-type - The type of instance (for example, m1.small).

  • launch.kernel-id - The kernel ID.

  • launch.key-name - The name of the key pair the instance launched with.

  • launch.monitoring-enabled - Whether monitoring is enabled for the Spot Instance.

  • launch.ramdisk-id - The RAM disk ID.

  • launch.network-interface.network-interface-id - The ID of the network interface.

  • launch.network-interface.device-index - The index of the device for the network interface attachment on the instance.

  • launch.network-interface.subnet-id - The ID of the subnet for the instance.

  • launch.network-interface.description - A description of the network interface.

  • launch.network-interface.private-ip-address - The primary private IP address of the network interface.

  • launch.network-interface.delete-on-termination - Indicates whether the network interface is deleted when the instance is terminated.

  • launch.network-interface.group-id - The ID of the security group associated with the network interface.

  • launch.network-interface.group-name - The name of the security group associated with the network interface.

  • launch.network-interface.addresses.primary - Indicates whether the IP address is the primary private IP address.

  • product-description - The product description associated with the instance (Linux/UNIX | Windows).

  • spot-instance-request-id - The Spot Instance request ID.

  • spot-price - The maximum hourly price for any Spot Instance launched to fulfill the request.

  • state - The state of the Spot Instance request (open | active | closed | cancelled | failed).

  • status-code - The short code describing the most recent evaluation of your Spot Instance request.

  • status-message - The message explaining the status of the Spot Instance request.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of Spot Instance request (one-time | persistent).

  • launched-availability-zone - The Availability Zone in which the bid is launched.

  • valid-from - The start date of the request.

  • valid-until - The end date of the request.

", + "locationName":"Filter" + } + } + }, + "DescribeSpotInstanceRequestsResult":{ + "type":"structure", + "members":{ + "SpotInstanceRequests":{ + "shape":"SpotInstanceRequestList", + "documentation":"

One or more Spot Instance requests.

", + "locationName":"spotInstanceRequestSet" + } + } + }, + "DescribeSpotPriceHistoryRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "StartTime":{ + "shape":"DateTime", + "documentation":"

The start date and time of the Spot Price history data.

", + "locationName":"startTime" + }, + "EndTime":{ + "shape":"DateTime", + "documentation":"

The end date and time of the Spot Price history data.

", + "locationName":"endTime" + }, + "InstanceTypes":{ + "shape":"InstanceTypeList", + "documentation":"

One or more instance types.

", + "locationName":"InstanceType" + }, + "ProductDescriptions":{ + "shape":"ProductDescriptionList", + "documentation":"

One or more basic product descriptions.

", + "locationName":"ProductDescription" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • availability-zone - The Availability Zone for which prices should be returned.

  • instance-type - The type of instance (for example, m1.small).

  • product-description - The product description for the Spot Price (Linux/UNIX | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) | Windows (Amazon VPC)).

  • spot-price - The Spot Price. The value must match exactly (or use wildcards; greater than or less than comparison is not supported).

  • timestamp - The timestamp of the Spot Price history (for example, 2010-08-16T05:06:11.000Z). You can use wildcards (* and ?). Greater than or less than comparison is not supported.

", + "locationName":"Filter" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone.

", + "locationName":"availabilityZone" + }, + "MaxResults":{ + "shape":"Integer", + "documentation":"

The number of rows to return.

", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The next set of rows to return.

", + "locationName":"nextToken" + } + } + }, + "DescribeSpotPriceHistoryResult":{ + "type":"structure", + "members":{ + "SpotPriceHistory":{ + "shape":"SpotPriceHistoryList", + "documentation":"

The historical Spot Prices.

", + "locationName":"spotPriceHistorySet" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The string marking the next set of results. This is empty if there are no more results.

", + "locationName":"nextToken" + } + } + }, + "DescribeSubnetsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SubnetIds":{ + "shape":"SubnetIdStringList", + "documentation":"

One or more subnet IDs.

Default: Describes all your subnets.

", + "locationName":"SubnetId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • availabilityZone - The Availability Zone for the subnet. You can also use availability-zone as the filter name.

  • available-ip-address-count - The number of IP addresses in the subnet that are available.

  • cidrBlock - The CIDR block of the subnet. The CIDR block you specify must exactly match the subnet's CIDR block for information to be returned for the subnet. You can also use cidr or cidr-block as the filter names.

  • defaultForAz - Indicates whether this is the default subnet for the Availability Zone. You can also use default-for-az as the filter name.

  • state - The state of the subnet (pending | available).

  • subnet-id - The ID of the subnet.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC for the subnet.

", + "locationName":"Filter" + } + } + }, + "DescribeSubnetsResult":{ + "type":"structure", + "members":{ + "Subnets":{ + "shape":"SubnetList", + "documentation":"

Information about one or more subnets.

", + "locationName":"subnetSet" + } + } + }, + "DescribeTagsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • key - The tag key.

  • resource-id - The resource ID.

  • resource-type - The resource type (customer-gateway | dhcp-options | image | instance | internet-gateway | network-acl | network-interface | reserved-instances | route-table | security-group | snapshot | spot-instances-request | subnet | volume | vpc | vpn-connection | vpn-gateway).

  • value - The tag value.

", + "locationName":"Filter" + }, + "MaxResults":{ + "shape":"Integer", + "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", + "locationName":"maxResults" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", + "locationName":"nextToken" + } + } + }, + "DescribeTagsResult":{ + "type":"structure", + "members":{ + "Tags":{ + "shape":"TagDescriptionList", + "documentation":"

A list of tags.

", + "locationName":"tagSet" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", + "locationName":"nextToken" + } + } + }, + "DescribeVolumeAttributeRequest":{ + "type":"structure", + "required":["VolumeId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

" + }, + "Attribute":{ + "shape":"VolumeAttributeName", + "documentation":"

The instance attribute.

" + } + } + }, + "DescribeVolumeAttributeResult":{ + "type":"structure", + "members":{ + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

", + "locationName":"volumeId" + }, + "AutoEnableIO":{ + "shape":"AttributeBooleanValue", + "documentation":"

The state of autoEnableIO attribute.

", + "locationName":"autoEnableIO" + }, + "ProductCodes":{ + "shape":"ProductCodeList", + "documentation":"

A list of product codes.

", + "locationName":"productCodes" + } + } + }, + "DescribeVolumeStatusRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeIds":{ + "shape":"VolumeIdStringList", + "documentation":"

One or more volume IDs.

Default: Describes all your volumes.

", + "locationName":"VolumeId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • action.code - The action code for the event (for example, enable-volume-io).

  • action.description - A description of the action.

  • action.event-id - The event ID associated with the action.

  • availability-zone - The Availability Zone of the instance.

  • event.description - A description of the event.

  • event.event-id - The event ID.

  • event.event-type - The event type (for io-enabled: passed | failed; for io-performance: io-performance:degraded | io-performance:severely-degraded | io-performance:stalled).

  • event.not-after - The latest end time for the event.

  • event.not-before - The earliest start time for the event.

  • volume-status.details-name - The cause for volume-status.status (io-enabled | io-performance).

  • volume-status.details-status - The status of volume-status.details-name (for io-enabled: passed | failed; for io-performance: normal | degraded | severely-degraded | stalled).

  • volume-status.status - The status of the volume (ok | impaired | warning | insufficient-data).

", + "locationName":"Filter" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The next paginated set of results to return using the pagination token returned by a previous call.

" + }, + "MaxResults":{ + "shape":"Integer", + "documentation":"

The maximum number of paginated volume items per response.

" + } + } + }, + "DescribeVolumeStatusResult":{ + "type":"structure", + "members":{ + "VolumeStatuses":{ + "shape":"VolumeStatusList", + "documentation":"

A list of volumes.

", + "locationName":"volumeStatusSet" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The next paginated set of results to return.

", + "locationName":"nextToken" + } + } + }, + "DescribeVolumesRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeIds":{ + "shape":"VolumeIdStringList", + "documentation":"

One or more volume IDs.

", + "locationName":"VolumeId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • attachment.attach-time - The time stamp when the attachment initiated.

  • attachment.delete-on-termination - Whether the volume is deleted on instance termination.

  • attachment.device - The device name that is exposed to the instance (for example, /dev/sda1).

  • attachment.instance-id - The ID of the instance the volume is attached to.

  • attachment.status - The attachment state (attaching | attached | detaching | detached).

  • availability-zone - The Availability Zone in which the volume was created.

  • create-time - The time stamp when the volume was created.

  • encrypted - The encryption status of the volume.

  • size - The size of the volume, in GiB.

  • snapshot-id - The snapshot from which the volume was created.

  • status - The status of the volume (creating | available | in-use | deleting | deleted | error).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • volume-id - The volume ID.

  • volume-type - The Amazon EBS volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

", + "locationName":"Filter" + } + } + }, + "DescribeVolumesResult":{ + "type":"structure", + "members":{ + "Volumes":{ + "shape":"VolumeList", + "locationName":"volumeSet" + } + } + }, + "DescribeVpcAttributeRequest":{ + "type":"structure", + "required":["VpcId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

" + }, + "Attribute":{ + "shape":"VpcAttributeName", + "documentation":"

The VPC attribute.

" + } + } + }, + "DescribeVpcAttributeResult":{ + "type":"structure", + "members":{ + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "EnableDnsSupport":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not.

", + "locationName":"enableDnsSupport" + }, + "EnableDnsHostnames":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.

", + "locationName":"enableDnsHostnames" + } + } + }, + "DescribeVpcPeeringConnectionsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcPeeringConnectionIds":{ + "shape":"ValueStringList", + "documentation":"

One or more VPC peering connection IDs.

Default: Describes all your VPC peering connections.

", + "locationName":"VpcPeeringConnectionId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • accepter-vpc-info.cidr-block - The CIDR block of the peer VPC.

  • accepter-vpc-info.owner-id - The AWS account ID of the owner of the peer VPC.

  • accepter-vpc-info.vpc-id - The ID of the peer VPC.

  • expiration-time - The expiration date and time for the VPC peering connection.

  • requester-vpc-info.cidr-block - The CIDR block of the requester's VPC.

  • requester-vpc-info.owner-id - The AWS account ID of the owner of the requester VPC.

  • requester-vpc-info.vpc-id - The ID of the requester VPC.

  • status-code - The status of the VPC peering connection (pending-acceptance | failed | expired | provisioning | active | deleted | rejected).

  • status-message - A message that provides more information about the status of the VPC peering connection, if applicable.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-peering-connection-id - The ID of the VPC peering connection.

", + "locationName":"Filter" + } + } + }, + "DescribeVpcPeeringConnectionsResult":{ + "type":"structure", + "members":{ + "VpcPeeringConnections":{ + "shape":"VpcPeeringConnectionList", + "documentation":"

Information about the VPC peering connections

", + "locationName":"vpcPeeringConnectionSet" + } + } + }, + "DescribeVpcsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcIds":{ + "shape":"VpcIdStringList", + "documentation":"

One or more VPC IDs.

Default: Describes all your VPCs.

", + "locationName":"VpcId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • cidr - The CIDR block of the VPC. The CIDR block you specify must exactly match the VPC's CIDR block for information to be returned for the VPC.

  • dhcp-options-id - The ID of a set of DHCP options.

  • isDefault - Indicates whether the VPC is the default VPC.

  • state - The state of the VPC (pending | available).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • vpc-id - The ID of the VPC.

", + "locationName":"Filter" + } + } + }, + "DescribeVpcsResult":{ + "type":"structure", + "members":{ + "Vpcs":{ + "shape":"VpcList", + "documentation":"

Information about one or more VPCs.

", + "locationName":"vpcSet" + } + } + }, + "DescribeVpnConnectionsRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpnConnectionIds":{ + "shape":"VpnConnectionIdStringList", + "documentation":"

One or more VPN connection IDs.

Default: Describes your VPN connections.

", + "locationName":"VpnConnectionId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • customer-gateway-configuration - The configuration information for the customer gateway.

  • customer-gateway-id - The ID of a customer gateway associated with the VPN connection.

  • state - The state of the VPN connection (pending | available | deleting | deleted).

  • option.static-routes-only - Indicates whether the connection has static routes only. Used for devices that do not support Border Gateway Protocol (BGP).

  • route.destination-cidr-block - The destination CIDR block. This corresponds to the subnet used in a customer data center.

  • bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP device.

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of VPN connection. Currently the only supported type is ipsec.1.

  • vpn-connection-id - The ID of the VPN connection.

  • vpn-gateway-id - The ID of a virtual private gateway associated with the VPN connection.

", + "locationName":"Filter" + } + } + }, + "DescribeVpnConnectionsResult":{ + "type":"structure", + "members":{ + "VpnConnections":{ + "shape":"VpnConnectionList", + "documentation":"

Information about one or more VPN connections.

", + "locationName":"vpnConnectionSet" + } + } + }, + "DescribeVpnGatewaysRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpnGatewayIds":{ + "shape":"VpnGatewayIdStringList", + "documentation":"

One or more virtual private gateway IDs.

Default: Describes all your virtual private gateways.

", + "locationName":"VpnGatewayId" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

One or more filters.

  • attachment.state - The current state of the attachment between the gateway and the VPC (attaching | attached | detaching | detached).

  • attachment.vpc-id - The ID of an attached VPC.

  • availability-zone - The Availability Zone for the virtual private gateway.

  • state - The state of the virtual private gateway (pending | available | deleting | deleted).

  • tag:key=value - The key/value combination of a tag assigned to the resource.

  • tag-key - The key of a tag assigned to the resource. This filter is independent of the tag-value filter. For example, if you use both the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you get any resources assigned both the tag key Purpose (regardless of what the tag's value is), and the tag value X (regardless of what the tag's key is). If you want to list only resources where Purpose is X, see the tag:key=value filter.

  • tag-value - The value of a tag assigned to the resource. This filter is independent of the tag-key filter.

  • type - The type of virtual private gateway. Currently the only supported type is ipsec.1.

  • vpn-gateway-id - The ID of the virtual private gateway.

", + "locationName":"Filter" + } + } + }, + "DescribeVpnGatewaysResult":{ + "type":"structure", + "members":{ + "VpnGateways":{ + "shape":"VpnGatewayList", + "documentation":"

Information about one or more virtual private gateways.

", + "locationName":"vpnGatewaySet" + } + } + }, + "DetachInternetGatewayRequest":{ + "type":"structure", + "required":[ + "InternetGatewayId", + "VpcId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InternetGatewayId":{ + "shape":"String", + "documentation":"

The ID of the Internet gateway.

", + "locationName":"internetGatewayId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + } + } + }, + "DetachNetworkInterfaceRequest":{ + "type":"structure", + "required":["AttachmentId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "AttachmentId":{ + "shape":"String", + "documentation":"

The ID of the attachment.

", + "locationName":"attachmentId" + }, + "Force":{ + "shape":"Boolean", + "documentation":"

Specifies whether to force a detachment.

", + "locationName":"force" + } + } + }, + "DetachVolumeRequest":{ + "type":"structure", + "required":["VolumeId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

" + }, + "Device":{ + "shape":"String", + "documentation":"

The device name.

" + }, + "Force":{ + "shape":"Boolean", + "documentation":"

Forces detachment if the previous detachment attempt did not occur cleanly (for example, logging into an instance, unmounting the volume, and detaching normally). This option can lead to data loss or a corrupted file system. Use this option only as a last resort to detach a volume from a failed instance. The instance won't have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures.

" + } + } + }, + "DetachVpnGatewayRequest":{ + "type":"structure", + "required":[ + "VpnGatewayId", + "VpcId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpnGatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway.

" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

" + } + } + }, + "DeviceType":{ + "type":"string", + "enum":[ + "ebs", + "instance-store" + ] + }, + "DhcpConfiguration":{ + "type":"structure", + "members":{ + "Key":{ + "shape":"String", + "documentation":"

The name of a DHCP option.

", + "locationName":"key" + }, + "Values":{ + "shape":"DhcpConfigurationValueList", + "documentation":"

One or more values for the DHCP option.

", + "locationName":"valueSet" + } + }, + "documentation":"

Describes a DHCP configuration option.

" + }, + "DhcpConfigurationList":{ + "type":"list", + "member":{ + "shape":"DhcpConfiguration", + "locationName":"item" + } + }, + "DhcpOptions":{ + "type":"structure", + "members":{ + "DhcpOptionsId":{ + "shape":"String", + "documentation":"

The ID of the set of DHCP options.

", + "locationName":"dhcpOptionsId" + }, + "DhcpConfigurations":{ + "shape":"DhcpConfigurationList", + "documentation":"

One or more DHCP options in the set.

", + "locationName":"dhcpConfigurationSet" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the DHCP options set.

", + "locationName":"tagSet" + } + }, + "documentation":"

Describes a set of DHCP options.

" + }, + "DhcpOptionsIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"DhcpOptionsId" + } + }, + "DhcpOptionsList":{ + "type":"list", + "member":{ + "shape":"DhcpOptions", + "locationName":"item" + } + }, + "DisableVgwRoutePropagationRequest":{ + "type":"structure", + "required":[ + "RouteTableId", + "GatewayId" + ], + "members":{ + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the routing table.

" + }, + "GatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway.

" + } + } + }, + "DisassociateAddressRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "PublicIp":{ + "shape":"String", + "documentation":"

[EC2-Classic] The Elastic IP address.

" + }, + "AssociationId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The association ID.

" + } + } + }, + "DisassociateRouteTableRequest":{ + "type":"structure", + "required":["AssociationId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "AssociationId":{ + "shape":"String", + "documentation":"

The association ID representing the current association between the route table and subnet.

", + "locationName":"associationId" + } + } + }, + "DiskImage":{ + "type":"structure", + "members":{ + "Image":{"shape":"DiskImageDetail"}, + "Description":{"shape":"String"}, + "Volume":{"shape":"VolumeDetail"} + }, + "documentation":"

Describes a disk image.

" + }, + "DiskImageDescription":{ + "type":"structure", + "required":[ + "Format", + "Size", + "ImportManifestUrl" + ], + "members":{ + "Format":{ + "shape":"DiskImageFormat", + "documentation":"

The disk image format.

", + "locationName":"format" + }, + "Size":{ + "shape":"Long", + "documentation":"

The size of the disk image.

", + "locationName":"size" + }, + "ImportManifestUrl":{ + "shape":"String", + "documentation":"

A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the \"Query String Request Authentication Alternative\" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

", + "locationName":"importManifestUrl" + }, + "Checksum":{ + "shape":"String", + "documentation":"

The checksum computed for the disk image.

", + "locationName":"checksum" + } + } + }, + "DiskImageDetail":{ + "type":"structure", + "required":[ + "Format", + "Bytes", + "ImportManifestUrl" + ], + "members":{ + "Format":{ + "shape":"DiskImageFormat", + "documentation":"

The disk image format.

", + "locationName":"format" + }, + "Bytes":{ + "shape":"Long", + "locationName":"bytes" + }, + "ImportManifestUrl":{ + "shape":"String", + "documentation":"

A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the \"Query String Request Authentication Alternative\" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

", + "locationName":"importManifestUrl" + } + } + }, + "DiskImageFormat":{ + "type":"string", + "enum":[ + "VMDK", + "RAW", + "VHD" + ] + }, + "DiskImageList":{ + "type":"list", + "member":{"shape":"DiskImage"} + }, + "DiskImageVolumeDescription":{ + "type":"structure", + "required":["Id"], + "members":{ + "Size":{ + "shape":"Long", + "documentation":"

The size of the volume.

", + "locationName":"size" + }, + "Id":{ + "shape":"String", + "documentation":"

The volume identifier.

", + "locationName":"id" + } + } + }, + "DomainType":{ + "type":"string", + "enum":[ + "vpc", + "standard" + ] + }, + "Double":{"type":"double"}, + "EbsBlockDevice":{ + "type":"structure", + "members":{ + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the snapshot.

", + "locationName":"snapshotId" + }, + "VolumeSize":{ + "shape":"Integer", + "documentation":"

The size of the volume, in GiB.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB.

Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.

", + "locationName":"volumeSize" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", + "locationName":"deleteOnTermination" + }, + "VolumeType":{ + "shape":"VolumeType", + "documentation":"

The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, and standard for Magnetic volumes.

Default: standard

", + "locationName":"volumeType" + }, + "Iops":{ + "shape":"Integer", + "documentation":"

The number of I/O operations per second (IOPS) that the volume supports.

Constraint: Range is 100 to 4000.

Condition: Required when the volume type is io1; not used with standard or gp2 volumes.

", + "locationName":"iops" + }, + "Encrypted":{ + "shape":"Boolean", + "documentation":"

Indicates whether the Amazon EBS volume is encrypted.

", + "locationName":"encrypted" + } + }, + "documentation":"

Describes an Amazon EBS block device.

" + }, + "EbsInstanceBlockDevice":{ + "type":"structure", + "members":{ + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS volume.

", + "locationName":"volumeId" + }, + "Status":{ + "shape":"AttachmentStatus", + "documentation":"

The attachment state.

", + "locationName":"status" + }, + "AttachTime":{ + "shape":"DateTime", + "documentation":"

The time stamp when the attachment initiated.

", + "locationName":"attachTime" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

Indicates whether the volume is deleted on instance termination.

", + "locationName":"deleteOnTermination" + } + }, + "documentation":"

Describes a parameter used to set up an Amazon EBS volume in a block device mapping.

" + }, + "EbsInstanceBlockDeviceSpecification":{ + "type":"structure", + "members":{ + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the Amazon EBS volume.

", + "locationName":"volumeId" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

Indicates whether the volume is deleted on instance termination.

", + "locationName":"deleteOnTermination" + } + } + }, + "EnableVgwRoutePropagationRequest":{ + "type":"structure", + "required":[ + "RouteTableId", + "GatewayId" + ], + "members":{ + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the routing table.

" + }, + "GatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway.

" + } + } + }, + "EnableVolumeIORequest":{ + "type":"structure", + "required":["VolumeId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

", + "locationName":"volumeId" + } + } + }, + "EventCode":{ + "type":"string", + "enum":[ + "instance-reboot", + "system-reboot", + "system-maintenance", + "instance-retirement", + "instance-stop" + ] + }, + "ExecutableByStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ExecutableBy" + } + }, + "ExportEnvironment":{ + "type":"string", + "enum":[ + "citrix", + "vmware", + "microsoft" + ] + }, + "ExportTask":{ + "type":"structure", + "members":{ + "ExportTaskId":{ + "shape":"String", + "documentation":"

The ID of the export task.

", + "locationName":"exportTaskId" + }, + "Description":{ + "shape":"String", + "documentation":"

A description of the resource being exported.

", + "locationName":"description" + }, + "State":{ + "shape":"ExportTaskState", + "documentation":"

The state of the conversion task.

", + "locationName":"state" + }, + "StatusMessage":{ + "shape":"String", + "documentation":"

The status message related to the export task.

", + "locationName":"statusMessage" + }, + "InstanceExportDetails":{ + "shape":"InstanceExportDetails", + "documentation":"

The instance being exported.

", + "locationName":"instanceExport" + }, + "ExportToS3Task":{ + "shape":"ExportToS3Task", + "locationName":"exportToS3" + } + }, + "documentation":"

Describes an export task.

" + }, + "ExportTaskIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ExportTaskId" + } + }, + "ExportTaskList":{ + "type":"list", + "member":{ + "shape":"ExportTask", + "locationName":"item" + } + }, + "ExportTaskState":{ + "type":"string", + "enum":[ + "active", + "cancelling", + "cancelled", + "completed" + ] + }, + "ExportToS3Task":{ + "type":"structure", + "members":{ + "DiskImageFormat":{ + "shape":"DiskImageFormat", + "documentation":"

The format for the exported image.

", + "locationName":"diskImageFormat" + }, + "ContainerFormat":{ + "shape":"ContainerFormat", + "documentation":"

The container format used to combine disk images with metadata (such as OVF). If absent, only the disk image is exported.

", + "locationName":"containerFormat" + }, + "S3Bucket":{ + "shape":"String", + "documentation":"

The Amazon S3 bucket for the destination image. The destination bucket must exist and grant WRITE and READ_ACL permissions to the AWS account vm-import-export@amazon.com.

", + "locationName":"s3Bucket" + }, + "S3Key":{ + "shape":"String", + "locationName":"s3Key" + } + } + }, + "ExportToS3TaskSpecification":{ + "type":"structure", + "members":{ + "DiskImageFormat":{ + "shape":"DiskImageFormat", + "locationName":"diskImageFormat" + }, + "ContainerFormat":{ + "shape":"ContainerFormat", + "locationName":"containerFormat" + }, + "S3Bucket":{ + "shape":"String", + "locationName":"s3Bucket" + }, + "S3Prefix":{ + "shape":"String", + "documentation":"

The image is written to a single object in the Amazon S3 bucket at the S3 key s3prefix + exportTaskId + '.' + diskImageFormat.

", + "locationName":"s3Prefix" + } + } + }, + "Filter":{ + "type":"structure", + "members":{ + "Name":{ + "shape":"String", + "documentation":"

The name of the filter.

" + }, + "Values":{ + "shape":"ValueStringList", + "documentation":"

One or more filter values.

", + "locationName":"Value" + } + } + }, + "FilterList":{ + "type":"list", + "member":{ + "shape":"Filter", + "locationName":"Filter" + } + }, + "Float":{"type":"float"}, + "GatewayType":{ + "type":"string", + "enum":["ipsec.1"] + }, + "GetConsoleOutputRequest":{ + "type":"structure", + "required":["InstanceId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

" + } + } + }, + "GetConsoleOutputResult":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "Timestamp":{ + "shape":"DateTime", + "documentation":"

The time the output was last updated.

", + "locationName":"timestamp" + }, + "Output":{ + "shape":"String", + "documentation":"

The console output, Base64 encoded.

", + "locationName":"output" + } + } + }, + "GetPasswordDataRequest":{ + "type":"structure", + "required":["InstanceId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the Windows instance.

" + } + } + }, + "GetPasswordDataResult":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the Windows instance.

", + "locationName":"instanceId" + }, + "Timestamp":{ + "shape":"DateTime", + "documentation":"

The time the data was last updated.

", + "locationName":"timestamp" + }, + "PasswordData":{ + "shape":"String", + "documentation":"

The password of the instance.

", + "locationName":"passwordData" + } + } + }, + "GroupIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"groupId" + } + }, + "GroupIdentifier":{ + "type":"structure", + "members":{ + "GroupName":{ + "shape":"String", + "documentation":"

The name of the security group.

", + "locationName":"groupName" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

", + "locationName":"groupId" + } + }, + "documentation":"

Describes a security group.

" + }, + "GroupIdentifierList":{ + "type":"list", + "member":{ + "shape":"GroupIdentifier", + "locationName":"item" + } + }, + "GroupNameStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"GroupName" + } + }, + "HypervisorType":{ + "type":"string", + "enum":[ + "ovm", + "xen" + ] + }, + "IamInstanceProfile":{ + "type":"structure", + "members":{ + "Arn":{ + "shape":"String", + "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", + "locationName":"arn" + }, + "Id":{ + "shape":"String", + "documentation":"

The ID of the instance profile.

", + "locationName":"id" + } + }, + "documentation":"

Describes an IAM instance profile.

" + }, + "IamInstanceProfileSpecification":{ + "type":"structure", + "members":{ + "Arn":{ + "shape":"String", + "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", + "locationName":"arn" + }, + "Name":{ + "shape":"String", + "documentation":"

The name of the instance profile.

", + "locationName":"name" + } + }, + "documentation":"

Describes an IAM instance profile.

" + }, + "IcmpTypeCode":{ + "type":"structure", + "members":{ + "Type":{ + "shape":"Integer", + "documentation":"

The ICMP code. A value of -1 means all codes for the specified ICMP type.

", + "locationName":"type" + }, + "Code":{ + "shape":"Integer", + "documentation":"

The ICMP type. A value of -1 means all types.

", + "locationName":"code" + } + }, + "documentation":"

Describes the ICMP type and code.

" + }, + "Image":{ + "type":"structure", + "members":{ + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

", + "locationName":"imageId" + }, + "ImageLocation":{ + "shape":"String", + "documentation":"

The location of the AMI.

", + "locationName":"imageLocation" + }, + "State":{ + "shape":"ImageState", + "documentation":"

The current state of the AMI. If the state is available, the image is successfully registered and can be used to launch an instance.

", + "locationName":"imageState" + }, + "OwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the image owner.

", + "locationName":"imageOwnerId" + }, + "Public":{ + "shape":"Boolean", + "documentation":"

Indicates whether the image has public launch permissions. The value is true if this image has public launch permissions or false if it has only implicit and explicit launch permissions.

", + "locationName":"isPublic" + }, + "ProductCodes":{ + "shape":"ProductCodeList", + "documentation":"

Any product codes associated with the AMI.

", + "locationName":"productCodes" + }, + "Architecture":{ + "shape":"ArchitectureValues", + "documentation":"

The architecture of the image.

", + "locationName":"architecture" + }, + "ImageType":{ + "shape":"ImageTypeValues", + "documentation":"

The type of image.

", + "locationName":"imageType" + }, + "KernelId":{ + "shape":"String", + "documentation":"

The kernel associated with the image, if any. Only applicable for machine images.

", + "locationName":"kernelId" + }, + "RamdiskId":{ + "shape":"String", + "documentation":"

The RAM disk associated with the image, if any. Only applicable for machine images.

", + "locationName":"ramdiskId" + }, + "Platform":{ + "shape":"PlatformValues", + "documentation":"

The value is Windows for Windows AMIs; otherwise blank.

", + "locationName":"platform" + }, + "SriovNetSupport":{ + "shape":"String", + "documentation":"

Specifies whether enhanced networking is enabled.

", + "locationName":"sriovNetSupport" + }, + "StateReason":{ + "shape":"StateReason", + "documentation":"

The reason for the state change.

", + "locationName":"stateReason" + }, + "ImageOwnerAlias":{ + "shape":"String", + "documentation":"

The AWS account alias (for example, amazon, self) or the AWS account ID of the AMI owner.

", + "locationName":"imageOwnerAlias" + }, + "Name":{ + "shape":"String", + "documentation":"

The name of the AMI that was provided during image creation.

", + "locationName":"name" + }, + "Description":{ + "shape":"String", + "documentation":"

The description of the AMI that was provided during image creation.

", + "locationName":"description" + }, + "RootDeviceType":{ + "shape":"DeviceType", + "documentation":"

The type of root device used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

", + "locationName":"rootDeviceType" + }, + "RootDeviceName":{ + "shape":"String", + "documentation":"

The device name of the root device (for example, /dev/sda1 or xvda).

", + "locationName":"rootDeviceName" + }, + "BlockDeviceMappings":{ + "shape":"BlockDeviceMappingList", + "documentation":"

Any block device mapping entries.

", + "locationName":"blockDeviceMapping" + }, + "VirtualizationType":{ + "shape":"VirtualizationType", + "documentation":"

The type of virtualization of the AMI.

", + "locationName":"virtualizationType" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the image.

", + "locationName":"tagSet" + }, + "Hypervisor":{ + "shape":"HypervisorType", + "documentation":"

The hypervisor type of the image.

", + "locationName":"hypervisor" + } + }, + "documentation":"

Describes an image.

" + }, + "ImageAttribute":{ + "type":"structure", + "members":{ + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

", + "locationName":"imageId" + }, + "LaunchPermissions":{ + "shape":"LaunchPermissionList", + "documentation":"

One or more launch permissions.

", + "locationName":"launchPermission" + }, + "ProductCodes":{ + "shape":"ProductCodeList", + "documentation":"

One or more product codes.

", + "locationName":"productCodes" + }, + "KernelId":{ + "shape":"AttributeValue", + "documentation":"

The kernel ID.

", + "locationName":"kernel" + }, + "RamdiskId":{ + "shape":"AttributeValue", + "documentation":"

The RAM disk ID.

", + "locationName":"ramdisk" + }, + "Description":{ + "shape":"AttributeValue", + "documentation":"

A description for the AMI.

", + "locationName":"description" + }, + "SriovNetSupport":{ + "shape":"AttributeValue", + "locationName":"sriovNetSupport" + }, + "BlockDeviceMappings":{ + "shape":"BlockDeviceMappingList", + "documentation":"

One or more block device mapping entries.

", + "locationName":"blockDeviceMapping" + } + }, + "documentation":"

Describes an image attribute.

" + }, + "ImageAttributeName":{ + "type":"string", + "enum":[ + "description", + "kernel", + "ramdisk", + "launchPermission", + "productCodes", + "blockDeviceMapping" + ] + }, + "ImageIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ImageId" + } + }, + "ImageList":{ + "type":"list", + "member":{ + "shape":"Image", + "locationName":"item" + } + }, + "ImageState":{ + "type":"string", + "enum":[ + "available", + "deregistered" + ] + }, + "ImageTypeValues":{ + "type":"string", + "enum":[ + "machine", + "kernel", + "ramdisk" + ] + }, + "ImportInstanceLaunchSpecification":{ + "type":"structure", + "members":{ + "Architecture":{ + "shape":"ArchitectureValues", + "documentation":"

The architecture of the instance.

", + "locationName":"architecture" + }, + "GroupNames":{ + "shape":"SecurityGroupStringList", + "documentation":"

One or more security group names.

", + "locationName":"GroupName" + }, + "AdditionalInfo":{ + "shape":"String", + "locationName":"additionalInfo" + }, + "UserData":{ + "shape":"String", + "documentation":"

User data to be made available to the instance.

", + "locationName":"userData" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

", + "locationName":"instanceType" + }, + "Placement":{ + "shape":"Placement", + "locationName":"placement" + }, + "Monitoring":{ + "shape":"Boolean", + "locationName":"monitoring" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance into.

", + "locationName":"subnetId" + }, + "InstanceInitiatedShutdownBehavior":{ + "shape":"ShutdownBehavior", + "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", + "locationName":"instanceInitiatedShutdownBehavior" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

[EC2-VPC] Optionally, you can use this parameter to assign the instance a specific available IP address from the IP address range of the subnet.

", + "locationName":"privateIpAddress" + } + } + }, + "ImportInstanceRequest":{ + "type":"structure", + "required":["Platform"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for the instance being imported.

", + "locationName":"description" + }, + "LaunchSpecification":{ + "shape":"ImportInstanceLaunchSpecification", + "documentation":"

", + "locationName":"launchSpecification" + }, + "DiskImages":{ + "shape":"DiskImageList", + "locationName":"diskImage" + }, + "Platform":{ + "shape":"PlatformValues", + "documentation":"

The instance operating system.

", + "locationName":"platform" + } + } + }, + "ImportInstanceResult":{ + "type":"structure", + "members":{ + "ConversionTask":{ + "shape":"ConversionTask", + "locationName":"conversionTask" + } + } + }, + "ImportInstanceTaskDetails":{ + "type":"structure", + "required":["Volumes"], + "members":{ + "Volumes":{ + "shape":"ImportInstanceVolumeDetailSet", + "locationName":"volumes" + }, + "InstanceId":{ + "shape":"String", + "locationName":"instanceId" + }, + "Platform":{ + "shape":"PlatformValues", + "documentation":"

The instance operating system.

", + "locationName":"platform" + }, + "Description":{ + "shape":"String", + "locationName":"description" + } + } + }, + "ImportInstanceVolumeDetailItem":{ + "type":"structure", + "required":[ + "BytesConverted", + "AvailabilityZone", + "Image", + "Volume", + "Status" + ], + "members":{ + "BytesConverted":{ + "shape":"Long", + "documentation":"

The number of bytes converted so far.

", + "locationName":"bytesConverted" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone where the resulting instance will reside.

", + "locationName":"availabilityZone" + }, + "Image":{ + "shape":"DiskImageDescription", + "documentation":"

The image.

", + "locationName":"image" + }, + "Volume":{ + "shape":"DiskImageVolumeDescription", + "documentation":"

The volume.

", + "locationName":"volume" + }, + "Status":{ + "shape":"String", + "documentation":"

The status of the import of this particular disk image.

", + "locationName":"status" + }, + "StatusMessage":{ + "shape":"String", + "documentation":"

The status information or errors related to the disk image.

", + "locationName":"statusMessage" + }, + "Description":{ + "shape":"String", + "locationName":"description" + } + }, + "documentation":"

Describes an import volume task.

" + }, + "ImportInstanceVolumeDetailSet":{ + "type":"list", + "member":{ + "shape":"ImportInstanceVolumeDetailItem", + "locationName":"item" + } + }, + "ImportKeyPairRequest":{ + "type":"structure", + "required":[ + "KeyName", + "PublicKeyMaterial" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "KeyName":{ + "shape":"String", + "documentation":"

A unique name for the key pair.

", + "locationName":"keyName" + }, + "PublicKeyMaterial":{ + "shape":"Blob", + "documentation":"

The public key. You must base64 encode the public key material before sending it to AWS.

", + "locationName":"publicKeyMaterial" + } + } + }, + "ImportKeyPairResult":{ + "type":"structure", + "members":{ + "KeyName":{ + "shape":"String", + "documentation":"

The key pair name you provided.

", + "locationName":"keyName" + }, + "KeyFingerprint":{ + "shape":"String", + "documentation":"

The MD5 public key fingerprint as specified in section 4 of RFC 4716.

", + "locationName":"keyFingerprint" + } + } + }, + "ImportVolumeRequest":{ + "type":"structure", + "required":[ + "AvailabilityZone", + "Image", + "Volume" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone for the resulting Amazon EBS volume.

", + "locationName":"availabilityZone" + }, + "Image":{ + "shape":"DiskImageDetail", + "locationName":"image" + }, + "Description":{ + "shape":"String", + "documentation":"

An optional description for the volume being imported.

", + "locationName":"description" + }, + "Volume":{ + "shape":"VolumeDetail", + "locationName":"volume" + } + } + }, + "ImportVolumeResult":{ + "type":"structure", + "members":{ + "ConversionTask":{ + "shape":"ConversionTask", + "locationName":"conversionTask" + } + } + }, + "ImportVolumeTaskDetails":{ + "type":"structure", + "required":[ + "BytesConverted", + "AvailabilityZone", + "Image", + "Volume" + ], + "members":{ + "BytesConverted":{ + "shape":"Long", + "documentation":"

The number of bytes converted so far.

", + "locationName":"bytesConverted" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone where the resulting volume will reside.

", + "locationName":"availabilityZone" + }, + "Description":{ + "shape":"String", + "documentation":"

The description you provided when starting the import volume task.

", + "locationName":"description" + }, + "Image":{ + "shape":"DiskImageDescription", + "documentation":"

The image.

", + "locationName":"image" + }, + "Volume":{ + "shape":"DiskImageVolumeDescription", + "documentation":"

The volume.

", + "locationName":"volume" + } + }, + "documentation":"

Describes an import volume task.

" + }, + "Instance":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI used to launch the instance.

", + "locationName":"imageId" + }, + "State":{ + "shape":"InstanceState", + "documentation":"

The current state of the instance.

", + "locationName":"instanceState" + }, + "PrivateDnsName":{ + "shape":"String", + "documentation":"

The private DNS name assigned to the instance. This DNS name can only be used inside the Amazon EC2 network. This name is not available until the instance enters the running state.

", + "locationName":"privateDnsName" + }, + "PublicDnsName":{ + "shape":"String", + "documentation":"

The public DNS name assigned to the instance. This name is not available until the instance enters the running state.

", + "locationName":"dnsName" + }, + "StateTransitionReason":{ + "shape":"String", + "documentation":"

The reason for the most recent state transition. This might be an empty string.

", + "locationName":"reason" + }, + "KeyName":{ + "shape":"String", + "documentation":"

The name of the key pair, if this instance was launched with an associated key pair.

", + "locationName":"keyName" + }, + "AmiLaunchIndex":{ + "shape":"Integer", + "documentation":"

The AMI launch index, which can be used to find this instance in the launch group.

", + "locationName":"amiLaunchIndex" + }, + "ProductCodes":{ + "shape":"ProductCodeList", + "documentation":"

The product codes attached to this instance.

", + "locationName":"productCodes" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type.

", + "locationName":"instanceType" + }, + "LaunchTime":{ + "shape":"DateTime", + "documentation":"

The time the instance was launched.

", + "locationName":"launchTime" + }, + "Placement":{ + "shape":"Placement", + "documentation":"

The location where the instance launched.

", + "locationName":"placement" + }, + "KernelId":{ + "shape":"String", + "documentation":"

The kernel associated with this instance.

", + "locationName":"kernelId" + }, + "RamdiskId":{ + "shape":"String", + "documentation":"

The RAM disk associated with this instance.

", + "locationName":"ramdiskId" + }, + "Platform":{ + "shape":"PlatformValues", + "documentation":"

The value is Windows for Windows instances; otherwise blank.

", + "locationName":"platform" + }, + "Monitoring":{ + "shape":"Monitoring", + "documentation":"

The monitoring information for the instance.

", + "locationName":"monitoring" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet in which the instance is running.

", + "locationName":"subnetId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC in which the instance is running.

", + "locationName":"vpcId" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The private IP address assigned to the instance.

", + "locationName":"privateIpAddress" + }, + "PublicIpAddress":{ + "shape":"String", + "documentation":"

The public IP address assigned to the instance.

", + "locationName":"ipAddress" + }, + "StateReason":{ + "shape":"StateReason", + "documentation":"

The reason for the most recent state transition.

", + "locationName":"stateReason" + }, + "Architecture":{ + "shape":"ArchitectureValues", + "documentation":"

The architecture of the image.

", + "locationName":"architecture" + }, + "RootDeviceType":{ + "shape":"DeviceType", + "documentation":"

The root device type used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

", + "locationName":"rootDeviceType" + }, + "RootDeviceName":{ + "shape":"String", + "documentation":"

The root device name (for example, /dev/sda1).

", + "locationName":"rootDeviceName" + }, + "BlockDeviceMappings":{ + "shape":"InstanceBlockDeviceMappingList", + "documentation":"

Any block device mapping entries for the instance.

", + "locationName":"blockDeviceMapping" + }, + "VirtualizationType":{ + "shape":"VirtualizationType", + "documentation":"

The virtualization type of the instance.

", + "locationName":"virtualizationType" + }, + "InstanceLifecycle":{ + "shape":"InstanceLifecycleType", + "documentation":"

Indicates whether this is a Spot Instance.

", + "locationName":"instanceLifecycle" + }, + "SpotInstanceRequestId":{ + "shape":"String", + "documentation":"

The ID of the Spot Instance request.

", + "locationName":"spotInstanceRequestId" + }, + "ClientToken":{ + "shape":"String", + "documentation":"

The idempotency token you provided when you launched the instance.

", + "locationName":"clientToken" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the instance.

", + "locationName":"tagSet" + }, + "SecurityGroups":{ + "shape":"GroupIdentifierList", + "documentation":"

One or more security groups for the instance.

", + "locationName":"groupSet" + }, + "SourceDestCheck":{ + "shape":"Boolean", + "documentation":"

Specifies whether to enable an instance launched in a VPC to perform NAT. This controls whether source/destination checking is enabled on the instance. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

", + "locationName":"sourceDestCheck" + }, + "Hypervisor":{ + "shape":"HypervisorType", + "documentation":"

The hypervisor type of the instance.

", + "locationName":"hypervisor" + }, + "NetworkInterfaces":{ + "shape":"InstanceNetworkInterfaceList", + "documentation":"

[EC2-VPC] One or more network interfaces for the instance.

", + "locationName":"networkInterfaceSet" + }, + "IamInstanceProfile":{ + "shape":"IamInstanceProfile", + "documentation":"

The IAM instance profile associated with the instance.

", + "locationName":"iamInstanceProfile" + }, + "EbsOptimized":{ + "shape":"Boolean", + "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

", + "locationName":"ebsOptimized" + }, + "SriovNetSupport":{ + "shape":"String", + "documentation":"

Specifies whether enhanced networking is enabled.

", + "locationName":"sriovNetSupport" + } + }, + "documentation":"

Describes an instance.

" + }, + "InstanceAttribute":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "InstanceType":{ + "shape":"AttributeValue", + "documentation":"

The instance type.

", + "locationName":"instanceType" + }, + "KernelId":{ + "shape":"AttributeValue", + "documentation":"

The kernel ID.

", + "locationName":"kernel" + }, + "RamdiskId":{ + "shape":"AttributeValue", + "documentation":"

The RAM disk ID.

", + "locationName":"ramdisk" + }, + "UserData":{ + "shape":"AttributeValue", + "documentation":"

The Base64-encoded MIME user data.

", + "locationName":"userData" + }, + "DisableApiTermination":{ + "shape":"AttributeBooleanValue", + "documentation":"

If the value is true, you can't terminate the instance through the Amazon EC2 console, CLI, or API; otherwise, you can.

", + "locationName":"disableApiTermination" + }, + "InstanceInitiatedShutdownBehavior":{ + "shape":"AttributeValue", + "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", + "locationName":"instanceInitiatedShutdownBehavior" + }, + "RootDeviceName":{ + "shape":"AttributeValue", + "documentation":"

The name of the root device (for example, /dev/sda1).

", + "locationName":"rootDeviceName" + }, + "BlockDeviceMappings":{ + "shape":"InstanceBlockDeviceMappingList", + "documentation":"

The block device mapping of the instance.

", + "locationName":"blockDeviceMapping" + }, + "ProductCodes":{ + "shape":"ProductCodeList", + "documentation":"

A list of product codes.

", + "locationName":"productCodes" + }, + "EbsOptimized":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether the instance is optimized for EBS I/O.

", + "locationName":"ebsOptimized" + }, + "SriovNetSupport":{ + "shape":"AttributeValue", + "locationName":"sriovNetSupport" + }, + "SourceDestCheck":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

", + "locationName":"sourceDestCheck" + }, + "Groups":{ + "shape":"GroupIdentifierList", + "locationName":"groupSet" + } + }, + "documentation":"

Describes an instance attribute.

" + }, + "InstanceAttributeName":{ + "type":"string", + "enum":[ + "instanceType", + "kernel", + "ramdisk", + "userData", + "disableApiTermination", + "instanceInitiatedShutdownBehavior", + "rootDeviceName", + "blockDeviceMapping", + "productCodes", + "sourceDestCheck", + "groupSet", + "ebsOptimized", + "sriovNetSupport" + ] + }, + "InstanceBlockDeviceMapping":{ + "type":"structure", + "members":{ + "DeviceName":{ + "shape":"String", + "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", + "locationName":"deviceName" + }, + "Ebs":{ + "shape":"EbsInstanceBlockDevice", + "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", + "locationName":"ebs" + } + }, + "documentation":"

Describes a block device mapping.

" + }, + "InstanceBlockDeviceMappingList":{ + "type":"list", + "member":{ + "shape":"InstanceBlockDeviceMapping", + "locationName":"item" + } + }, + "InstanceBlockDeviceMappingSpecification":{ + "type":"structure", + "members":{ + "DeviceName":{ + "shape":"String", + "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", + "locationName":"deviceName" + }, + "Ebs":{ + "shape":"EbsInstanceBlockDeviceSpecification", + "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", + "locationName":"ebs" + }, + "VirtualName":{ + "shape":"String", + "documentation":"

The virtual device name.

", + "locationName":"virtualName" + }, + "NoDevice":{ + "shape":"String", + "documentation":"

suppress the specified device included in the block device mapping.

", + "locationName":"noDevice" + } + }, + "documentation":"

Describes a block device mapping entry.

" + }, + "InstanceBlockDeviceMappingSpecificationList":{ + "type":"list", + "member":{ + "shape":"InstanceBlockDeviceMappingSpecification", + "locationName":"item" + } + }, + "InstanceCount":{ + "type":"structure", + "members":{ + "State":{ + "shape":"ListingState", + "documentation":"

The states of the listed Reserved Instances.

", + "locationName":"state" + }, + "InstanceCount":{ + "shape":"Integer", + "documentation":"

he number of listed Reserved Instances in the state specified by the state.

", + "locationName":"instanceCount" + } + }, + "documentation":"

Describes a Reserved Instance listing state.

" + }, + "InstanceCountList":{ + "type":"list", + "member":{ + "shape":"InstanceCount", + "locationName":"item" + } + }, + "InstanceExportDetails":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the resource being exported.

", + "locationName":"instanceId" + }, + "TargetEnvironment":{ + "shape":"ExportEnvironment", + "documentation":"

The target virtualization environment.

", + "locationName":"targetEnvironment" + } + }, + "documentation":"

Describes an instance export task.

" + }, + "InstanceIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"InstanceId" + } + }, + "InstanceLifecycleType":{ + "type":"string", + "enum":["spot"] + }, + "InstanceList":{ + "type":"list", + "member":{ + "shape":"Instance", + "locationName":"item" + } + }, + "InstanceMonitoring":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "Monitoring":{ + "shape":"Monitoring", + "documentation":"

The monitoring information.

", + "locationName":"monitoring" + } + }, + "documentation":"

Describes the monitoring information of the instance.

" + }, + "InstanceMonitoringList":{ + "type":"list", + "member":{ + "shape":"InstanceMonitoring", + "locationName":"item" + } + }, + "InstanceNetworkInterface":{ + "type":"structure", + "members":{ + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

", + "locationName":"subnetId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "Description":{ + "shape":"String", + "documentation":"

The description.

", + "locationName":"description" + }, + "OwnerId":{ + "shape":"String", + "documentation":"

The ID of the AWS account that created the network interface.

", + "locationName":"ownerId" + }, + "Status":{ + "shape":"NetworkInterfaceStatus", + "documentation":"

The status of the network interface.

", + "locationName":"status" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The IP address of the network interface within the subnet.

", + "locationName":"privateIpAddress" + }, + "PrivateDnsName":{ + "shape":"String", + "documentation":"

The private DNS name.

", + "locationName":"privateDnsName" + }, + "SourceDestCheck":{ + "shape":"Boolean", + "documentation":"

Indicates whether to validate network traffic to or from this network interface.

", + "locationName":"sourceDestCheck" + }, + "Groups":{ + "shape":"GroupIdentifierList", + "documentation":"

One or more security groups.

", + "locationName":"groupSet" + }, + "Attachment":{ + "shape":"InstanceNetworkInterfaceAttachment", + "documentation":"

The network interface attachment.

", + "locationName":"attachment" + }, + "Association":{ + "shape":"InstanceNetworkInterfaceAssociation", + "documentation":"

The association information for an Elastic IP associated with the network interface.

", + "locationName":"association" + }, + "PrivateIpAddresses":{ + "shape":"InstancePrivateIpAddressList", + "documentation":"

The private IP addresses associated with the network interface.

", + "locationName":"privateIpAddressesSet" + } + }, + "documentation":"

Describes a network interface.

" + }, + "InstanceNetworkInterfaceAssociation":{ + "type":"structure", + "members":{ + "PublicIp":{ + "shape":"String", + "documentation":"

The address of the Elastic IP address bound to the network interface.

", + "locationName":"publicIp" + }, + "PublicDnsName":{ + "shape":"String", + "documentation":"

The public DNS name.

", + "locationName":"publicDnsName" + }, + "IpOwnerId":{ + "shape":"String", + "documentation":"

The ID of the owner of the Elastic IP address.

", + "locationName":"ipOwnerId" + } + }, + "documentation":"

Describes association information for an Elastic IP address.

" + }, + "InstanceNetworkInterfaceAttachment":{ + "type":"structure", + "members":{ + "AttachmentId":{ + "shape":"String", + "documentation":"

The ID of the network interface attachment.

", + "locationName":"attachmentId" + }, + "DeviceIndex":{ + "shape":"Integer", + "documentation":"

The index of the device on the instance for the network interface attachment.

", + "locationName":"deviceIndex" + }, + "Status":{ + "shape":"AttachmentStatus", + "documentation":"

The attachment state.

", + "locationName":"status" + }, + "AttachTime":{ + "shape":"DateTime", + "documentation":"

The time stamp when the attachment initiated.

", + "locationName":"attachTime" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", + "locationName":"deleteOnTermination" + } + }, + "documentation":"

Describes a network interface attachment.

" + }, + "InstanceNetworkInterfaceList":{ + "type":"list", + "member":{ + "shape":"InstanceNetworkInterface", + "locationName":"item" + } + }, + "InstanceNetworkInterfaceSpecification":{ + "type":"structure", + "members":{ + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "DeviceIndex":{ + "shape":"Integer", + "documentation":"

The index of the device on the instance for the network interface attachment.

", + "locationName":"deviceIndex" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet associated with the network string.

", + "locationName":"subnetId" + }, + "Description":{ + "shape":"String", + "documentation":"

The description of the network interface.

", + "locationName":"description" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The private IP address of the network interface.

", + "locationName":"privateIpAddress" + }, + "Groups":{ + "shape":"SecurityGroupIdStringList", + "documentation":"

The IDs of the security groups for the network interface.

", + "locationName":"SecurityGroupId" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

If set to true, the interface is deleted when the instance is terminated.

", + "locationName":"deleteOnTermination" + }, + "PrivateIpAddresses":{ + "shape":"PrivateIpAddressSpecificationList", + "documentation":"

One or more private IP addresses to assign to the network interface.

", + "locationName":"privateIpAddressesSet", + "queryName":"PrivateIpAddresses" + }, + "SecondaryPrivateIpAddressCount":{ + "shape":"Integer", + "documentation":"

The number of secondary private IP addresses.

", + "locationName":"secondaryPrivateIpAddressCount" + }, + "AssociatePublicIpAddress":{ + "shape":"Boolean", + "documentation":"

Indicates whether to auto-assign a public IP address to an instance in a VPC. This public IP address can be assigned to the network interface for eth0 only when you launch the instance. You must create the network interface instead of using an existing network interface for eth0, and you must not specify more than one network interface.

", + "locationName":"associatePublicIpAddress" + } + }, + "documentation":"

Describes a network interface.

" + }, + "InstanceNetworkInterfaceSpecificationList":{ + "type":"list", + "member":{ + "shape":"InstanceNetworkInterfaceSpecification", + "locationName":"item" + } + }, + "InstancePrivateIpAddress":{ + "type":"structure", + "members":{ + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The private IP address of the network interface.

", + "locationName":"privateIpAddress" + }, + "PrivateDnsName":{ + "shape":"String", + "documentation":"

The private DNS name.

", + "locationName":"privateDnsName" + }, + "Primary":{ + "shape":"Boolean", + "documentation":"

Indicates whether this IP address is the primary private IP address of the network interface.

", + "locationName":"primary" + }, + "Association":{ + "shape":"InstanceNetworkInterfaceAssociation", + "documentation":"

The association information for an Elastic IP address for the network interface.

", + "locationName":"association" + } + }, + "documentation":"

Describes a private IP address.

" + }, + "InstancePrivateIpAddressList":{ + "type":"list", + "member":{ + "shape":"InstancePrivateIpAddress", + "locationName":"item" + } + }, + "InstanceState":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"Integer", + "documentation":"

The low byte represents the state. The high byte is an opaque internal value and should be ignored.

  • 0 : pending

  • 16 : running

  • 32 : shutting-down

  • 48 : terminated

  • 64 : stopping

  • 80 : stopped

", + "locationName":"code" + }, + "Name":{ + "shape":"InstanceStateName", + "documentation":"

The current state of the instance.

", + "locationName":"name" + } + }, + "documentation":"

Describes the current state of the instance.

" + }, + "InstanceStateChange":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "CurrentState":{ + "shape":"InstanceState", + "documentation":"

The current state of the instance.

", + "locationName":"currentState" + }, + "PreviousState":{ + "shape":"InstanceState", + "documentation":"

The previous state of the instance.

", + "locationName":"previousState" + } + }, + "documentation":"

Describes an instance state change.

" + }, + "InstanceStateChangeList":{ + "type":"list", + "member":{ + "shape":"InstanceStateChange", + "locationName":"item" + } + }, + "InstanceStateName":{ + "type":"string", + "enum":[ + "pending", + "running", + "shutting-down", + "terminated", + "stopping", + "stopped" + ] + }, + "InstanceStatus":{ + "type":"structure", + "members":{ + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone of the instance.

", + "locationName":"availabilityZone" + }, + "Events":{ + "shape":"InstanceStatusEventList", + "documentation":"

Extra information regarding events associated with the instance.

", + "locationName":"eventsSet" + }, + "InstanceState":{ + "shape":"InstanceState", + "documentation":"

The intended state of the instance. DescribeInstanceStatus requires that an instance be in the running state.

", + "locationName":"instanceState" + }, + "SystemStatus":{ + "shape":"InstanceStatusSummary", + "documentation":"

Reports impaired functionality that stems from issues related to the systems that support an instance, such as hardware failures and network connectivity problems.

", + "locationName":"systemStatus" + }, + "InstanceStatus":{ + "shape":"InstanceStatusSummary", + "documentation":"

Reports impaired functionality that stems from issues internal to the instance, such as impaired reachability.

", + "locationName":"instanceStatus" + } + }, + "documentation":"

Describes the status of an instance.

" + }, + "InstanceStatusDetails":{ + "type":"structure", + "members":{ + "Name":{ + "shape":"StatusName", + "documentation":"

The type of instance status.

", + "locationName":"name" + }, + "Status":{ + "shape":"StatusType", + "documentation":"

The status.

", + "locationName":"status" + }, + "ImpairedSince":{ + "shape":"DateTime", + "documentation":"

The time when a status check failed. For an instance that was launched and impaired, this is the time when the instance was launched.

", + "locationName":"impairedSince" + } + }, + "documentation":"

Describes the instance status.

" + }, + "InstanceStatusDetailsList":{ + "type":"list", + "member":{ + "shape":"InstanceStatusDetails", + "locationName":"item" + } + }, + "InstanceStatusEvent":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"EventCode", + "documentation":"

The associated code of the event.

", + "locationName":"code" + }, + "Description":{ + "shape":"String", + "documentation":"

A description of the event.

", + "locationName":"description" + }, + "NotBefore":{ + "shape":"DateTime", + "documentation":"

The earliest scheduled start time for the event.

", + "locationName":"notBefore" + }, + "NotAfter":{ + "shape":"DateTime", + "documentation":"

The latest scheduled end time for the event.

", + "locationName":"notAfter" + } + }, + "documentation":"

Describes an instance event.

" + }, + "InstanceStatusEventList":{ + "type":"list", + "member":{ + "shape":"InstanceStatusEvent", + "locationName":"item" + } + }, + "InstanceStatusList":{ + "type":"list", + "member":{ + "shape":"InstanceStatus", + "locationName":"item" + } + }, + "InstanceStatusSummary":{ + "type":"structure", + "members":{ + "Status":{ + "shape":"SummaryStatus", + "documentation":"

The status.

", + "locationName":"status" + }, + "Details":{ + "shape":"InstanceStatusDetailsList", + "documentation":"

The system instance health or application instance health.

", + "locationName":"details" + } + }, + "documentation":"

Describes the status of an instance.

" + }, + "InstanceType":{ + "type":"string", + "enum":[ + "t1.micro", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "t2.micro", + "t2.small", + "t2.medium", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "cr1.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "cc1.4xlarge", + "cc2.8xlarge", + "g2.2xlarge", + "cg1.4xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge" + ] + }, + "InstanceTypeList":{ + "type":"list", + "member":{"shape":"InstanceType"} + }, + "Integer":{"type":"integer"}, + "InternetGateway":{ + "type":"structure", + "members":{ + "InternetGatewayId":{ + "shape":"String", + "documentation":"

The ID of the Internet gateway.

", + "locationName":"internetGatewayId" + }, + "Attachments":{ + "shape":"InternetGatewayAttachmentList", + "documentation":"

Any VPCs attached to the Internet gateway.

", + "locationName":"attachmentSet" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the Internet gateway.

", + "locationName":"tagSet" + } + }, + "documentation":"

Describes an Internet gateway.

" + }, + "InternetGatewayAttachment":{ + "type":"structure", + "members":{ + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "State":{ + "shape":"AttachmentStatus", + "documentation":"

The current state of the attachment.

", + "locationName":"state" + } + }, + "documentation":"

Describes the attachment of a VPC to an Internet gateway.

" + }, + "InternetGatewayAttachmentList":{ + "type":"list", + "member":{ + "shape":"InternetGatewayAttachment", + "locationName":"item" + } + }, + "InternetGatewayList":{ + "type":"list", + "member":{ + "shape":"InternetGateway", + "locationName":"item" + } + }, + "IpPermission":{ + "type":"structure", + "members":{ + "IpProtocol":{ + "shape":"String", + "documentation":"

The protocol.

When you call DescribeSecurityGroups, the protocol value returned is the number. Exception: For TCP, UDP, and ICMP, the value returned is the name (for example, tcp, udp, or icmp). For a list of protocol numbers, see Protocol Numbers.

", + "locationName":"ipProtocol" + }, + "FromPort":{ + "shape":"Integer", + "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. A value of -1 indicates all ICMP types.

", + "locationName":"fromPort" + }, + "ToPort":{ + "shape":"Integer", + "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code. A value of -1 indicates all ICMP codes for the specified ICMP type.

", + "locationName":"toPort" + }, + "UserIdGroupPairs":{ + "shape":"UserIdGroupPairList", + "documentation":"

One or more security group and AWS account ID pairs.

", + "locationName":"groups" + }, + "IpRanges":{ + "shape":"IpRangeList", + "documentation":"

One or more IP ranges.

", + "locationName":"ipRanges" + } + }, + "documentation":"

Describes a security group rule.

" + }, + "IpPermissionList":{ + "type":"list", + "member":{ + "shape":"IpPermission", + "locationName":"item" + } + }, + "IpRange":{ + "type":"structure", + "members":{ + "CidrIp":{ + "shape":"String", + "documentation":"

The CIDR range. You can either specify a CIDR range or a source security group, not both.

", + "locationName":"cidrIp" + } + }, + "documentation":"

Describes an IP range.

" + }, + "IpRangeList":{ + "type":"list", + "member":{ + "shape":"IpRange", + "locationName":"item" + } + }, + "KeyNameStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"KeyName" + } + }, + "KeyPair":{ + "type":"structure", + "members":{ + "KeyName":{ + "shape":"String", + "documentation":"

The name of the key pair.

", + "locationName":"keyName" + }, + "KeyFingerprint":{ + "shape":"String", + "documentation":"

The SHA-1 digest of the DER encoded private key.

", + "locationName":"keyFingerprint" + }, + "KeyMaterial":{ + "shape":"String", + "documentation":"

An unencrypted PEM encoded RSA private key.

", + "locationName":"keyMaterial" + } + }, + "documentation":"

Describes a key pair.

" + }, + "KeyPairInfo":{ + "type":"structure", + "members":{ + "KeyName":{ + "shape":"String", + "documentation":"

The name of the key pair.

", + "locationName":"keyName" + }, + "KeyFingerprint":{ + "shape":"String", + "documentation":"

If you used CreateKeyPair to create the key pair, this is the SHA-1 digest of the DER encoded private key. If you used ImportKeyPair to provide AWS the public key, this is the MD5 public key fingerprint as specified in section 4 of RFC4716.

", + "locationName":"keyFingerprint" + } + }, + "documentation":"

Describes a key pair.

" + }, + "KeyPairList":{ + "type":"list", + "member":{ + "shape":"KeyPairInfo", + "locationName":"item" + } + }, + "LaunchPermission":{ + "type":"structure", + "members":{ + "UserId":{ + "shape":"String", + "documentation":"

The AWS account ID.

", + "locationName":"userId" + }, + "Group":{ + "shape":"PermissionGroup", + "documentation":"

The name of the group.

", + "locationName":"group" + } + }, + "documentation":"

Describes a launch permission.

" + }, + "LaunchPermissionList":{ + "type":"list", + "member":{ + "shape":"LaunchPermission", + "locationName":"item" + } + }, + "LaunchPermissionModifications":{ + "type":"structure", + "members":{ + "Add":{ + "shape":"LaunchPermissionList", + "documentation":"

The AWS account ID to add to the list of launch permissions for the AMI.

" + }, + "Remove":{ + "shape":"LaunchPermissionList", + "documentation":"

The AWS account ID to remove from the list of launch permissions for the AMI.

" + } + }, + "documentation":"

Describes a launch permission modification.

" + }, + "LaunchSpecification":{ + "type":"structure", + "members":{ + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

", + "locationName":"imageId" + }, + "KeyName":{ + "shape":"String", + "documentation":"

The name of the key pair.

", + "locationName":"keyName" + }, + "SecurityGroups":{ + "shape":"GroupIdentifierList", + "documentation":"

One or more security groups.

", + "locationName":"groupSet" + }, + "UserData":{ + "shape":"String", + "documentation":"

The Base64-encoded MIME user data to make available to the instances.

", + "locationName":"userData" + }, + "AddressingType":{ + "shape":"String", + "documentation":"

", + "locationName":"addressingType" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type.

", + "locationName":"instanceType" + }, + "Placement":{ + "shape":"SpotPlacement", + "documentation":"

The placement information for the instance.

", + "locationName":"placement" + }, + "KernelId":{ + "shape":"String", + "documentation":"

The ID of the kernel.

", + "locationName":"kernelId" + }, + "RamdiskId":{ + "shape":"String", + "documentation":"

The ID of the RAM disk.

", + "locationName":"ramdiskId" + }, + "BlockDeviceMappings":{ + "shape":"BlockDeviceMappingList", + "documentation":"

One or more block device mapping entries.

", + "locationName":"blockDeviceMapping" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet in which to launch the Spot Instance.

", + "locationName":"subnetId" + }, + "NetworkInterfaces":{ + "shape":"InstanceNetworkInterfaceSpecificationList", + "documentation":"

One or more network interfaces.

", + "locationName":"networkInterfaceSet" + }, + "IamInstanceProfile":{ + "shape":"IamInstanceProfileSpecification", + "documentation":"

The IAM instance profile.

", + "locationName":"iamInstanceProfile" + }, + "EbsOptimized":{ + "shape":"Boolean", + "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

", + "locationName":"ebsOptimized" + }, + "Monitoring":{ + "shape":"RunInstancesMonitoringEnabled", + "locationName":"monitoring" + } + }, + "documentation":"

Describes the launch specification of a Spot Instance.

" + }, + "ListingState":{ + "type":"string", + "enum":[ + "available", + "sold", + "cancelled", + "pending" + ] + }, + "ListingStatus":{ + "type":"string", + "enum":[ + "active", + "pending", + "cancelled", + "closed" + ] + }, + "Long":{"type":"long"}, + "ModifyImageAttributeRequest":{ + "type":"structure", + "required":["ImageId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

" + }, + "Attribute":{ + "shape":"String", + "documentation":"

The name of the attribute to modify.

" + }, + "OperationType":{ + "shape":"String", + "documentation":"

The operation type.

" + }, + "UserIds":{ + "shape":"UserIdStringList", + "documentation":"

One or more AWS account IDs. This is only valid when modifying the launchPermission attribute.

", + "locationName":"UserId" + }, + "UserGroups":{ + "shape":"UserGroupStringList", + "documentation":"

One or more user groups. This is only valid when modifying the launchPermission attribute.

", + "locationName":"UserGroup" + }, + "ProductCodes":{ + "shape":"ProductCodeStringList", + "documentation":"

One or more product codes. After you add a product code to an AMI, it can't be removed. This is only valid when modifying the productCodes attribute.

", + "locationName":"ProductCode" + }, + "Value":{ + "shape":"String", + "documentation":"

The value of the attribute being modified. This is only valid when modifying the description attribute.

" + }, + "LaunchPermission":{ + "shape":"LaunchPermissionModifications", + "documentation":"

" + }, + "Description":{ + "shape":"AttributeValue", + "documentation":"

A description for the AMI.

" + } + } + }, + "ModifyInstanceAttributeRequest":{ + "type":"structure", + "required":["InstanceId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "Attribute":{ + "shape":"InstanceAttributeName", + "documentation":"

The name of the attribute.

", + "locationName":"attribute" + }, + "Value":{ + "shape":"String", + "documentation":"

A new value for the attribute. Use only with the kernel, ramdisk, userData, disableApiTermination, or intanceInitiateShutdownBehavior attribute.

", + "locationName":"value" + }, + "BlockDeviceMappings":{ + "shape":"InstanceBlockDeviceMappingSpecificationList", + "documentation":"

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Updating the Block Device Mapping when Launching an Instance in the Amazon Elastic Compute Cloud User Guide.

", + "locationName":"blockDeviceMapping" + }, + "SourceDestCheck":{ + "shape":"AttributeBooleanValue", + "documentation":"

Specifies whether source/destination checking is enabled. A value of true means that checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

" + }, + "DisableApiTermination":{ + "shape":"AttributeBooleanValue", + "documentation":"

Specifies whether to disable the ability to terminate the instance using the Amazon EC2 console, CLI, and API.

", + "locationName":"disableApiTermination" + }, + "InstanceType":{ + "shape":"AttributeValue", + "documentation":"

Changes the instance type to the specified value. For more information, see Instance Types. If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.

", + "locationName":"instanceType" + }, + "Kernel":{ + "shape":"AttributeValue", + "documentation":"

Changes the instance's kernel to the specified value.

", + "locationName":"kernel" + }, + "Ramdisk":{ + "shape":"AttributeValue", + "documentation":"

Changes the instance's RAM disk to the specified value.

", + "locationName":"ramdisk" + }, + "UserData":{ + "shape":"BlobAttributeValue", + "documentation":"

Changes the instance's user data to the specified value.

", + "locationName":"userData" + }, + "InstanceInitiatedShutdownBehavior":{ + "shape":"AttributeValue", + "documentation":"

Specifies whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", + "locationName":"instanceInitiatedShutdownBehavior" + }, + "Groups":{ + "shape":"GroupIdStringList", + "documentation":"

[EC2-VPC] Changes the security groups of the instance. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name.

For example, if you want the instance to be in sg-1a1a1a1a and sg-9b9b9b9b, specify GroupId.1=sg-1a1a1a1a and GroupId.2=sg-9b9b9b9b.

", + "locationName":"GroupId" + }, + "EbsOptimized":{ + "shape":"AttributeBooleanValue", + "documentation":"

Specifies whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

", + "locationName":"ebsOptimized" + }, + "SriovNetSupport":{ + "shape":"AttributeValue", + "documentation":"

Set to simple to enable enhanced networking for the instance.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM instances. Specifying this option with a PV instance can make it unreachable.

", + "locationName":"sriovNetSupport" + } + } + }, + "ModifyNetworkInterfaceAttributeRequest":{ + "type":"structure", + "required":["NetworkInterfaceId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "Description":{ + "shape":"AttributeValue", + "documentation":"

A description for the network interface.

", + "locationName":"description" + }, + "SourceDestCheck":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

", + "locationName":"sourceDestCheck" + }, + "Groups":{ + "shape":"SecurityGroupIdStringList", + "documentation":"

Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it's just the default security group in the VPC. You must specify the ID of the security group, not the name.

", + "locationName":"SecurityGroupId" + }, + "Attachment":{ + "shape":"NetworkInterfaceAttachmentChanges", + "documentation":"

The ID of the interface attachment.

", + "locationName":"attachment" + } + } + }, + "ModifyReservedInstancesRequest":{ + "type":"structure", + "required":[ + "ReservedInstancesIds", + "TargetConfigurations" + ], + "members":{ + "ClientToken":{ + "shape":"String", + "documentation":"

A unique, case-sensitive token you provide to ensure idempotency of your modification request.

", + "locationName":"clientToken" + }, + "ReservedInstancesIds":{ + "shape":"ReservedInstancesIdStringList", + "documentation":"

The IDs of the Reserved Instances to modify.

", + "locationName":"ReservedInstancesId" + }, + "TargetConfigurations":{ + "shape":"ReservedInstancesConfigurationList", + "documentation":"

The configuration settings for the Reserved Instances to modify.

", + "locationName":"ReservedInstancesConfigurationSetItemType" + } + } + }, + "ModifyReservedInstancesResult":{ + "type":"structure", + "members":{ + "ReservedInstancesModificationId":{ + "shape":"String", + "documentation":"

The ID for the modification.

", + "locationName":"reservedInstancesModificationId" + } + } + }, + "ModifySnapshotAttributeRequest":{ + "type":"structure", + "required":["SnapshotId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the snapshot.

" + }, + "Attribute":{ + "shape":"SnapshotAttributeName", + "documentation":"

The snapshot attribute to modify.

" + }, + "OperationType":{ + "shape":"String", + "documentation":"

The type of operation to perform to the attribute.

" + }, + "UserIds":{ + "shape":"UserIdStringList", + "documentation":"

The account ID to modify for the snapshot.

", + "locationName":"UserId" + }, + "GroupNames":{ + "shape":"GroupNameStringList", + "documentation":"

The group to modify for the snapshot.

", + "locationName":"UserGroup" + }, + "CreateVolumePermission":{ + "shape":"CreateVolumePermissionModifications", + "documentation":"

A JSON representation of the snapshot attribute modification.

" + } + } + }, + "ModifySubnetAttributeRequest":{ + "type":"structure", + "required":["SubnetId"], + "members":{ + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

", + "locationName":"subnetId" + }, + "MapPublicIpOnLaunch":{"shape":"AttributeBooleanValue"} + } + }, + "ModifyVolumeAttributeRequest":{ + "type":"structure", + "required":["VolumeId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

" + }, + "AutoEnableIO":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether the volume should be auto-enabled for I/O operations.

" + } + } + }, + "ModifyVpcAttributeRequest":{ + "type":"structure", + "required":["VpcId"], + "members":{ + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "EnableDnsSupport":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether the DNS resolution is supported for the VPC. If this attribute is false, the Amazon provided DNS service in the VPC that resolves public DNS hostnames to IP addresses is not enabled. If this attribute is true, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC network range \"plus two\" will succeed.

" + }, + "EnableDnsHostnames":{ + "shape":"AttributeBooleanValue", + "documentation":"

Indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.

You can only set enableDnsHostnames to true if you also set the EnableDnsSupport attribute to true.

" + } + } + }, + "MonitorInstancesRequest":{ + "type":"structure", + "required":["InstanceIds"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

", + "locationName":"InstanceId" + } + } + }, + "MonitorInstancesResult":{ + "type":"structure", + "members":{ + "InstanceMonitorings":{ + "shape":"InstanceMonitoringList", + "documentation":"

Monitoring information for one or more instances.

", + "locationName":"instancesSet" + } + } + }, + "Monitoring":{ + "type":"structure", + "members":{ + "State":{ + "shape":"MonitoringState", + "documentation":"

Indicates whether monitoring is enabled for the instance.

", + "locationName":"state" + } + }, + "documentation":"

Describes the monitoring for the instance.

" + }, + "MonitoringState":{ + "type":"string", + "enum":[ + "disabled", + "enabled", + "pending" + ] + }, + "NetworkAcl":{ + "type":"structure", + "members":{ + "NetworkAclId":{ + "shape":"String", + "documentation":"

The ID of the network ACL.

", + "locationName":"networkAclId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC for the network ACL.

", + "locationName":"vpcId" + }, + "IsDefault":{ + "shape":"Boolean", + "documentation":"

Indicates whether this is the default network ACL for the VPC.

", + "locationName":"default" + }, + "Entries":{ + "shape":"NetworkAclEntryList", + "documentation":"

One or more entries (rules) in the network ACL.

", + "locationName":"entrySet" + }, + "Associations":{ + "shape":"NetworkAclAssociationList", + "documentation":"

Any associations between the network ACL and one or more subnets

", + "locationName":"associationSet" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the network ACL.

", + "locationName":"tagSet" + } + }, + "documentation":"

Describes a network ACL.

" + }, + "NetworkAclAssociation":{ + "type":"structure", + "members":{ + "NetworkAclAssociationId":{ + "shape":"String", + "documentation":"

The ID of the association between a network ACL and a subnet.

", + "locationName":"networkAclAssociationId" + }, + "NetworkAclId":{ + "shape":"String", + "documentation":"

The ID of the network ACL.

", + "locationName":"networkAclId" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

", + "locationName":"subnetId" + } + }, + "documentation":"

Describes an association between a network ACL and a subnet.

" + }, + "NetworkAclAssociationList":{ + "type":"list", + "member":{ + "shape":"NetworkAclAssociation", + "locationName":"item" + } + }, + "NetworkAclEntry":{ + "type":"structure", + "members":{ + "RuleNumber":{ + "shape":"Integer", + "documentation":"

The rule number for the entry. ACL entries are processed in ascending order by rule number.

", + "locationName":"ruleNumber" + }, + "Protocol":{ + "shape":"String", + "documentation":"

The protocol. A value of -1 means all protocols.

", + "locationName":"protocol" + }, + "RuleAction":{ + "shape":"RuleAction", + "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", + "locationName":"ruleAction" + }, + "Egress":{ + "shape":"Boolean", + "documentation":"

Indicates whether the rule is an egress rule (applied to traffic leaving the subnet).

", + "locationName":"egress" + }, + "CidrBlock":{ + "shape":"String", + "documentation":"

The network range to allow or deny, in CIDR notation.

", + "locationName":"cidrBlock" + }, + "IcmpTypeCode":{ + "shape":"IcmpTypeCode", + "documentation":"

ICMP protocol: The ICMP type and code.

", + "locationName":"icmpTypeCode" + }, + "PortRange":{ + "shape":"PortRange", + "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", + "locationName":"portRange" + } + }, + "documentation":"

Describes an entry in a network ACL.

" + }, + "NetworkAclEntryList":{ + "type":"list", + "member":{ + "shape":"NetworkAclEntry", + "locationName":"item" + } + }, + "NetworkAclList":{ + "type":"list", + "member":{ + "shape":"NetworkAcl", + "locationName":"item" + } + }, + "NetworkInterface":{ + "type":"structure", + "members":{ + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

", + "locationName":"subnetId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone.

", + "locationName":"availabilityZone" + }, + "Description":{ + "shape":"String", + "documentation":"

A description.

", + "locationName":"description" + }, + "OwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the owner of the network interface.

", + "locationName":"ownerId" + }, + "RequesterId":{ + "shape":"String", + "documentation":"

The ID of the entity that launched the instance on your behalf (for example, AWS Management Console or Auto Scaling).

", + "locationName":"requesterId" + }, + "RequesterManaged":{ + "shape":"Boolean", + "documentation":"

Indicates whether the network interface is being managed by AWS.

", + "locationName":"requesterManaged" + }, + "Status":{ + "shape":"NetworkInterfaceStatus", + "documentation":"

The status of the network interface.

", + "locationName":"status" + }, + "MacAddress":{ + "shape":"String", + "documentation":"

The MAC address.

", + "locationName":"macAddress" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The IP address of the network interface within the subnet.

", + "locationName":"privateIpAddress" + }, + "PrivateDnsName":{ + "shape":"String", + "documentation":"

The private DNS name.

", + "locationName":"privateDnsName" + }, + "SourceDestCheck":{ + "shape":"Boolean", + "documentation":"

Indicates whether traffic to or from the instance is validated.

", + "locationName":"sourceDestCheck" + }, + "Groups":{ + "shape":"GroupIdentifierList", + "documentation":"

Any security groups for the network interface.

", + "locationName":"groupSet" + }, + "Attachment":{ + "shape":"NetworkInterfaceAttachment", + "documentation":"

The network interface attachment.

", + "locationName":"attachment" + }, + "Association":{ + "shape":"NetworkInterfaceAssociation", + "documentation":"

The association information for an Elastic IP associated with the network interface.

", + "locationName":"association" + }, + "TagSet":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the network interface.

", + "locationName":"tagSet" + }, + "PrivateIpAddresses":{ + "shape":"NetworkInterfacePrivateIpAddressList", + "documentation":"

The private IP addresses associated with the network interface.

", + "locationName":"privateIpAddressesSet" + } + }, + "documentation":"

Describes a network interface.

" + }, + "NetworkInterfaceAssociation":{ + "type":"structure", + "members":{ + "PublicIp":{ + "shape":"String", + "documentation":"

The address of the Elastic IP address bound to the network interface.

", + "locationName":"publicIp" + }, + "PublicDnsName":{ + "shape":"String", + "documentation":"

The public DNS name.

", + "locationName":"publicDnsName" + }, + "IpOwnerId":{ + "shape":"String", + "documentation":"

The ID of the Elastic IP address owner.

", + "locationName":"ipOwnerId" + }, + "AllocationId":{ + "shape":"String", + "documentation":"

The allocation ID.

", + "locationName":"allocationId" + }, + "AssociationId":{ + "shape":"String", + "documentation":"

The association ID.

", + "locationName":"associationId" + } + }, + "documentation":"

Describes association information for an Elastic IP address.

" + }, + "NetworkInterfaceAttachment":{ + "type":"structure", + "members":{ + "AttachmentId":{ + "shape":"String", + "documentation":"

The ID of the network interface attachment.

", + "locationName":"attachmentId" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "InstanceOwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the owner of the instance.

", + "locationName":"instanceOwnerId" + }, + "DeviceIndex":{ + "shape":"Integer", + "documentation":"

The device index of the network interface attachment on the instance.

", + "locationName":"deviceIndex" + }, + "Status":{ + "shape":"AttachmentStatus", + "documentation":"

The attachment state.

", + "locationName":"status" + }, + "AttachTime":{ + "shape":"DateTime", + "documentation":"

The timestamp indicating when the attachment initiated.

", + "locationName":"attachTime" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", + "locationName":"deleteOnTermination" + } + }, + "documentation":"

Describes a network interface attachment.

" + }, + "NetworkInterfaceAttachmentChanges":{ + "type":"structure", + "members":{ + "AttachmentId":{ + "shape":"String", + "documentation":"

The ID of the network interface attachment.

", + "locationName":"attachmentId" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", + "locationName":"deleteOnTermination" + } + }, + "documentation":"

Describes an attachment change.

" + }, + "NetworkInterfaceAttribute":{ + "type":"string", + "enum":[ + "description", + "groupSet", + "sourceDestCheck", + "attachment" + ] + }, + "NetworkInterfaceIdList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"item" + } + }, + "NetworkInterfaceList":{ + "type":"list", + "member":{ + "shape":"NetworkInterface", + "locationName":"item" + } + }, + "NetworkInterfacePrivateIpAddress":{ + "type":"structure", + "members":{ + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The private IP address.

", + "locationName":"privateIpAddress" + }, + "PrivateDnsName":{ + "shape":"String", + "documentation":"

The private DNS name.

", + "locationName":"privateDnsName" + }, + "Primary":{ + "shape":"Boolean", + "documentation":"

Indicates whether this IP address is the primary private IP address of the network interface.

", + "locationName":"primary" + }, + "Association":{ + "shape":"NetworkInterfaceAssociation", + "documentation":"

The association information for an Elastic IP address associated with the network interface.

", + "locationName":"association" + } + }, + "documentation":"

Describes the private IP address of a network interface.

" + }, + "NetworkInterfacePrivateIpAddressList":{ + "type":"list", + "member":{ + "shape":"NetworkInterfacePrivateIpAddress", + "locationName":"item" + } + }, + "NetworkInterfaceStatus":{ + "type":"string", + "enum":[ + "available", + "attaching", + "in-use", + "detaching" + ] + }, + "OfferingTypeValues":{ + "type":"string", + "enum":[ + "Heavy Utilization", + "Medium Utilization", + "Light Utilization" + ] + }, + "OwnerStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"Owner" + } + }, + "PermissionGroup":{ + "type":"string", + "enum":["all"] + }, + "Placement":{ + "type":"structure", + "members":{ + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone of the instance.

", + "locationName":"availabilityZone" + }, + "GroupName":{ + "shape":"String", + "documentation":"

The name of the placement group the instance is in (for cluster compute instances).

", + "locationName":"groupName" + }, + "Tenancy":{ + "shape":"Tenancy", + "documentation":"

The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.

", + "locationName":"tenancy" + } + }, + "documentation":"

Describes the placement for the instance.

" + }, + "PlacementGroup":{ + "type":"structure", + "members":{ + "GroupName":{ + "shape":"String", + "documentation":"

The name of the placement group.

", + "locationName":"groupName" + }, + "Strategy":{ + "shape":"PlacementStrategy", + "documentation":"

The placement strategy.

", + "locationName":"strategy" + }, + "State":{ + "shape":"PlacementGroupState", + "documentation":"

The state of the placement group.

", + "locationName":"state" + } + }, + "documentation":"

Describes a placement group.

" + }, + "PlacementGroupList":{ + "type":"list", + "member":{ + "shape":"PlacementGroup", + "locationName":"item" + } + }, + "PlacementGroupState":{ + "type":"string", + "enum":[ + "pending", + "available", + "deleting", + "deleted" + ] + }, + "PlacementGroupStringList":{ + "type":"list", + "member":{"shape":"String"} + }, + "PlacementStrategy":{ + "type":"string", + "enum":["cluster"] + }, + "PlatformValues":{ + "type":"string", + "enum":["Windows"] + }, + "PortRange":{ + "type":"structure", + "members":{ + "From":{ + "shape":"Integer", + "documentation":"

The first port in the range.

", + "locationName":"from" + }, + "To":{ + "shape":"Integer", + "documentation":"

The last port in the range.

", + "locationName":"to" + } + }, + "documentation":"

Describes a range of ports.

" + }, + "PriceSchedule":{ + "type":"structure", + "members":{ + "Term":{ + "shape":"Long", + "documentation":"

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

", + "locationName":"term" + }, + "Price":{ + "shape":"Double", + "documentation":"

The fixed price for the term.

", + "locationName":"price" + }, + "CurrencyCode":{ + "shape":"CurrencyCodeValues", + "documentation":"

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

", + "locationName":"currencyCode" + }, + "Active":{ + "shape":"Boolean", + "documentation":"

The current price schedule, as determined by the term remaining for the Reserved Instance in the listing.

A specific price schedule is always in effect, but only one price schedule can be active at any time. Take, for example, a Reserved Instance listing that has five months remaining in its term. When you specify price schedules for five months and two months, this means that schedule 1, covering the first three months of the remaining term, will be active during months 5, 4, and 3. Then schedule 2, covering the last two months of the term, will be active for months 2 and 1.

", + "locationName":"active" + } + }, + "documentation":"

Describes the price for a Reserved Instance.

" + }, + "PriceScheduleList":{ + "type":"list", + "member":{ + "shape":"PriceSchedule", + "locationName":"item" + } + }, + "PriceScheduleSpecification":{ + "type":"structure", + "members":{ + "Term":{ + "shape":"Long", + "documentation":"

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

", + "locationName":"term" + }, + "Price":{ + "shape":"Double", + "documentation":"

The fixed price for the term.

", + "locationName":"price" + }, + "CurrencyCode":{ + "shape":"CurrencyCodeValues", + "documentation":"

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

", + "locationName":"currencyCode" + } + }, + "documentation":"

Describes the price for a Reserved Instance.

" + }, + "PriceScheduleSpecificationList":{ + "type":"list", + "member":{ + "shape":"PriceScheduleSpecification", + "locationName":"item" + } + }, + "PricingDetail":{ + "type":"structure", + "members":{ + "Price":{ + "shape":"Double", + "documentation":"

The price per instance.

", + "locationName":"price" + }, + "Count":{ + "shape":"Integer", + "documentation":"

The number of instances available for the price.

", + "locationName":"count" + } + }, + "documentation":"

Describes a Reserved Instance offering.

" + }, + "PricingDetailsList":{ + "type":"list", + "member":{ + "shape":"PricingDetail", + "locationName":"item" + } + }, + "PrivateIpAddressSpecification":{ + "type":"structure", + "required":["PrivateIpAddress"], + "members":{ + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

The private IP addresses.

", + "locationName":"privateIpAddress" + }, + "Primary":{ + "shape":"Boolean", + "documentation":"

Indicates whether the private IP address is the primary private IP address.

", + "locationName":"primary" + } + }, + "documentation":"

Describes a secondary private IP address for a network interface.

" + }, + "PrivateIpAddressSpecificationList":{ + "type":"list", + "member":{ + "shape":"PrivateIpAddressSpecification", + "locationName":"item" + } + }, + "PrivateIpAddressStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"PrivateIpAddress" + } + }, + "ProductCode":{ + "type":"structure", + "members":{ + "ProductCodeId":{ + "shape":"String", + "documentation":"

The product code.

", + "locationName":"productCode" + }, + "ProductCodeType":{ + "shape":"ProductCodeValues", + "documentation":"

The type of product code.

", + "locationName":"type" + } + }, + "documentation":"

Describes a product code.

" + }, + "ProductCodeList":{ + "type":"list", + "member":{ + "shape":"ProductCode", + "locationName":"item" + } + }, + "ProductCodeStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ProductCode" + } + }, + "ProductCodeValues":{ + "type":"string", + "enum":[ + "devpay", + "marketplace" + ] + }, + "ProductDescriptionList":{ + "type":"list", + "member":{"shape":"String"} + }, + "PropagatingVgw":{ + "type":"structure", + "members":{ + "GatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway (VGW).

", + "locationName":"gatewayId" + } + }, + "documentation":"

Describes a virtual private gateway propagating route.

" + }, + "PropagatingVgwList":{ + "type":"list", + "member":{ + "shape":"PropagatingVgw", + "locationName":"item" + } + }, + "PublicIpStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"PublicIp" + } + }, + "PurchaseReservedInstancesOfferingRequest":{ + "type":"structure", + "required":[ + "ReservedInstancesOfferingId", + "InstanceCount" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ReservedInstancesOfferingId":{ + "shape":"String", + "documentation":"

The ID of the Reserved Instance offering to purchase.

" + }, + "InstanceCount":{ + "shape":"Integer", + "documentation":"

The number of Reserved Instances to purchase.

" + }, + "LimitPrice":{ + "shape":"ReservedInstanceLimitPrice", + "documentation":"

Specified for Reserved Instance Marketplace offerings to limit the total order and ensure that the Reserved Instances are not purchased at unexpected prices.

", + "locationName":"limitPrice" + } + } + }, + "PurchaseReservedInstancesOfferingResult":{ + "type":"structure", + "members":{ + "ReservedInstancesId":{ + "shape":"String", + "documentation":"

The IDs of the purchased Reserved Instances.

", + "locationName":"reservedInstancesId" + } + } + }, + "RIProductDescription":{ + "type":"string", + "enum":[ + "Linux/UNIX", + "Linux/UNIX (Amazon VPC)", + "Windows", + "Windows (Amazon VPC)" + ] + }, + "ReasonCodesList":{ + "type":"list", + "member":{ + "shape":"ReportInstanceReasonCodes", + "locationName":"item" + } + }, + "RebootInstancesRequest":{ + "type":"structure", + "required":["InstanceIds"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

", + "locationName":"InstanceId" + } + } + }, + "RecurringCharge":{ + "type":"structure", + "members":{ + "Frequency":{ + "shape":"RecurringChargeFrequency", + "documentation":"

The frequency of the recurring charge.

", + "locationName":"frequency" + }, + "Amount":{ + "shape":"Double", + "documentation":"

The amount of the recurring charge.

", + "locationName":"amount" + } + }, + "documentation":"

Describes a recurring charge.

" + }, + "RecurringChargeFrequency":{ + "type":"string", + "enum":["Hourly"] + }, + "RecurringChargesList":{ + "type":"list", + "member":{ + "shape":"RecurringCharge", + "locationName":"item" + } + }, + "Region":{ + "type":"structure", + "members":{ + "RegionName":{ + "shape":"String", + "documentation":"

The name of the region.

", + "locationName":"regionName" + }, + "Endpoint":{ + "shape":"String", + "documentation":"

The region service endpoint.

", + "locationName":"regionEndpoint" + } + }, + "documentation":"

Describes a region.

" + }, + "RegionList":{ + "type":"list", + "member":{ + "shape":"Region", + "locationName":"item" + } + }, + "RegionNameStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"RegionName" + } + }, + "RegisterImageRequest":{ + "type":"structure", + "required":["Name"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ImageLocation":{ + "shape":"String", + "documentation":"

The full path to your AMI manifest in Amazon S3 storage.

" + }, + "Name":{ + "shape":"String", + "documentation":"

A name for your AMI.

Constraints: 3-128 alphanumeric characters, parenthesis (()), commas (,), slashes (/), dashes (-), or underscores (_)

", + "locationName":"name" + }, + "Description":{ + "shape":"String", + "documentation":"

A description for your AMI.

", + "locationName":"description" + }, + "Architecture":{ + "shape":"ArchitectureValues", + "documentation":"

The architecture of the AMI.

Default: For Amazon EBS-backed AMIs, i386. For instance store-backed AMIs, the architecture specified in the manifest file.

", + "locationName":"architecture" + }, + "KernelId":{ + "shape":"String", + "documentation":"

The ID of the kernel.

", + "locationName":"kernelId" + }, + "RamdiskId":{ + "shape":"String", + "documentation":"

The ID of the RAM disk.

", + "locationName":"ramdiskId" + }, + "RootDeviceName":{ + "shape":"String", + "documentation":"

The name of the root device (for example, /dev/sda1, or xvda).

", + "locationName":"rootDeviceName" + }, + "BlockDeviceMappings":{ + "shape":"BlockDeviceMappingRequestList", + "documentation":"

One or more block device mapping entries.

", + "locationName":"BlockDeviceMapping" + }, + "VirtualizationType":{ + "shape":"String", + "documentation":"

The type of virtualization.

Default: paravirtual

", + "locationName":"virtualizationType" + }, + "SriovNetSupport":{ + "shape":"String", + "documentation":"

Set to simple to enable enhanced networking for the AMI and any instances that you launch from the AMI.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM AMIs. Specifying this option with a PV AMI can make instances launched from the AMI unreachable.

", + "locationName":"sriovNetSupport" + } + } + }, + "RegisterImageResult":{ + "type":"structure", + "members":{ + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the newly registered AMI.

", + "locationName":"imageId" + } + } + }, + "RejectVpcPeeringConnectionRequest":{ + "type":"structure", + "required":["VpcPeeringConnectionId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "VpcPeeringConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPC peering connection.

", + "locationName":"vpcPeeringConnectionId" + } + } + }, + "RejectVpcPeeringConnectionResult":{ + "type":"structure", + "members":{ + "Return":{ + "shape":"Boolean", + "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", + "locationName":"return" + } + } + }, + "ReleaseAddressRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "PublicIp":{ + "shape":"String", + "documentation":"

[EC2-Classic] The Elastic IP address.

" + }, + "AllocationId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The allocation ID.

" + } + } + }, + "ReplaceNetworkAclAssociationRequest":{ + "type":"structure", + "required":[ + "AssociationId", + "NetworkAclId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "AssociationId":{ + "shape":"String", + "documentation":"

The ID of the current association between the original network ACL and the subnet.

", + "locationName":"associationId" + }, + "NetworkAclId":{ + "shape":"String", + "documentation":"

The ID of the new ACL to associate with the subnet.

", + "locationName":"networkAclId" + } + } + }, + "ReplaceNetworkAclAssociationResult":{ + "type":"structure", + "members":{ + "NewAssociationId":{ + "shape":"String", + "documentation":"

The ID of the new association.

", + "locationName":"newAssociationId" + } + } + }, + "ReplaceNetworkAclEntryRequest":{ + "type":"structure", + "required":[ + "NetworkAclId", + "RuleNumber", + "Protocol", + "RuleAction", + "Egress", + "CidrBlock" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkAclId":{ + "shape":"String", + "documentation":"

The ID of the ACL.

", + "locationName":"networkAclId" + }, + "RuleNumber":{ + "shape":"Integer", + "documentation":"

The rule number of the entry to replace.

", + "locationName":"ruleNumber" + }, + "Protocol":{ + "shape":"String", + "documentation":"

The IP protocol. You can specify all or -1 to mean all protocols.

", + "locationName":"protocol" + }, + "RuleAction":{ + "shape":"RuleAction", + "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", + "locationName":"ruleAction" + }, + "Egress":{ + "shape":"Boolean", + "documentation":"

Indicates whether to replace the egress rule.

Default: If no value is specified, we replace the ingress rule.

", + "locationName":"egress" + }, + "CidrBlock":{ + "shape":"String", + "documentation":"

The network range to allow or deny, in CIDR notation.

", + "locationName":"cidrBlock" + }, + "IcmpTypeCode":{ + "shape":"IcmpTypeCode", + "documentation":"

ICMP protocol: The ICMP type and code.

", + "locationName":"Icmp" + }, + "PortRange":{ + "shape":"PortRange", + "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", + "locationName":"portRange" + } + } + }, + "ReplaceRouteRequest":{ + "type":"structure", + "required":[ + "RouteTableId", + "DestinationCidrBlock" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the route table.

", + "locationName":"routeTableId" + }, + "DestinationCidrBlock":{ + "shape":"String", + "documentation":"

The CIDR address block used for the destination match. The value you provide must match the CIDR of an existing route in the table.

", + "locationName":"destinationCidrBlock" + }, + "GatewayId":{ + "shape":"String", + "documentation":"

The ID of an Internet gateway attached to your VPC.

", + "locationName":"gatewayId" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of a NAT instance in your VPC.

", + "locationName":"instanceId" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of a network interface.

", + "locationName":"networkInterfaceId" + }, + "VpcPeeringConnectionId":{ + "shape":"String", + "documentation":"

The ID of a VPC peering connection.

", + "locationName":"vpcPeeringConnectionId" + } + } + }, + "ReplaceRouteTableAssociationRequest":{ + "type":"structure", + "required":[ + "AssociationId", + "RouteTableId" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "AssociationId":{ + "shape":"String", + "documentation":"

The association ID.

", + "locationName":"associationId" + }, + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the new route table to associate with the subnet.

", + "locationName":"routeTableId" + } + } + }, + "ReplaceRouteTableAssociationResult":{ + "type":"structure", + "members":{ + "NewAssociationId":{ + "shape":"String", + "documentation":"

The ID of the new association.

", + "locationName":"newAssociationId" + } + } + }, + "ReportInstanceReasonCodes":{ + "type":"string", + "enum":[ + "instance-stuck-in-state", + "unresponsive", + "not-accepting-credentials", + "password-not-available", + "performance-network", + "performance-instance-store", + "performance-ebs-volume", + "performance-other", + "other" + ] + }, + "ReportInstanceStatusRequest":{ + "type":"structure", + "required":[ + "Instances", + "Status", + "ReasonCodes" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "Instances":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instances.

", + "locationName":"instanceId" + }, + "Status":{ + "shape":"ReportStatusType", + "documentation":"

The status of all instances listed.

", + "locationName":"status" + }, + "StartTime":{ + "shape":"DateTime", + "documentation":"

The time at which the reported instance health state began.

", + "locationName":"startTime" + }, + "EndTime":{ + "shape":"DateTime", + "documentation":"

The time at which the reported instance health state ended.

", + "locationName":"endTime" + }, + "ReasonCodes":{ + "shape":"ReasonCodesList", + "documentation":"

One or more reason codes that describes the health state of your instance.

  • instance-stuck-in-state: My instance is stuck in a state.

  • unresponsive: My instance is unresponsive.

  • not-accepting-credentials: My instance is not accepting my credentials.

  • password-not-available: A password is not available for my instance.

  • performance-network: My instance is experiencing performance problems which I believe are network related.

  • performance-instance-store: My instance is experiencing performance problems which I believe are related to the instance stores.

  • performance-ebs-volume: My instance is experiencing performance problems which I believe are related to an EBS volume.

  • performance-other: My instance is experiencing performance problems.

  • other: [explain using the description parameter]

", + "locationName":"reasonCode" + }, + "Description":{ + "shape":"String", + "documentation":"

Descriptive text about the health state of your instance.

", + "locationName":"description" + } + } + }, + "ReportStatusType":{ + "type":"string", + "enum":[ + "ok", + "impaired" + ] + }, + "RequestSpotInstancesRequest":{ + "type":"structure", + "required":["SpotPrice"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SpotPrice":{ + "shape":"String", + "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", + "locationName":"spotPrice" + }, + "InstanceCount":{ + "shape":"Integer", + "documentation":"

The maximum number of Spot Instances to launch.

Default: 1

", + "locationName":"instanceCount" + }, + "Type":{ + "shape":"SpotInstanceType", + "documentation":"

The Spot Instance request type.

Default: one-time

", + "locationName":"type" + }, + "ValidFrom":{ + "shape":"DateTime", + "documentation":"

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

Default: The request is effective indefinitely.

", + "locationName":"validFrom" + }, + "ValidUntil":{ + "shape":"DateTime", + "documentation":"

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date and time is reached.

Default: The request is effective indefinitely.

", + "locationName":"validUntil" + }, + "LaunchGroup":{ + "shape":"String", + "documentation":"

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

Default: Instances are launched and terminated individually

", + "locationName":"launchGroup" + }, + "AvailabilityZoneGroup":{ + "shape":"String", + "documentation":"

The user-specified name for a logical grouping of bids.

When you specify an Availability Zone group in a Spot Instance request, all Spot Instances in the request are launched in the same Availability Zone. Instance proximity is maintained with this parameter, but the choice of Availability Zone is not. The group applies only to bids for Spot Instances of the same instance type. Any additional Spot Instance requests that are specified with the same Availability Zone group name are launched in that same Availability Zone, as long as at least one instance from the group is still active.

If there is no active instance running in the Availability Zone group that you specify for a new Spot Instance request (all instances are terminated, the bid is expired, or the bid falls below current market), then Amazon EC2 launches the instance in any Availability Zone where the constraint can be met. Consequently, the subsequent set of Spot Instances could be placed in a different zone from the original request, even if you specified the same Availability Zone group.

Default: Instances are launched in any available Availability Zone.

", + "locationName":"availabilityZoneGroup" + }, + "LaunchSpecification":{"shape":"RequestSpotLaunchSpecification"} + } + }, + "RequestSpotInstancesResult":{ + "type":"structure", + "members":{ + "SpotInstanceRequests":{ + "shape":"SpotInstanceRequestList", + "documentation":"

Information about the Spot Instance request.

", + "locationName":"spotInstanceRequestSet" + } + } + }, + "Reservation":{ + "type":"structure", + "members":{ + "ReservationId":{ + "shape":"String", + "documentation":"

The ID of the reservation.

", + "locationName":"reservationId" + }, + "OwnerId":{ + "shape":"String", + "documentation":"

The ID of the AWS account that owns the reservation.

", + "locationName":"ownerId" + }, + "RequesterId":{ + "shape":"String", + "documentation":"

The ID of the requester that launched the instances on your behalf (for example, AWS Management Console or Auto Scaling).

", + "locationName":"requesterId" + }, + "Groups":{ + "shape":"GroupIdentifierList", + "documentation":"

One or more security groups.

", + "locationName":"groupSet" + }, + "Instances":{ + "shape":"InstanceList", + "documentation":"

One or more instances.

", + "locationName":"instancesSet" + } + }, + "documentation":"

Describes a reservation.

" + }, + "ReservationList":{ + "type":"list", + "member":{ + "shape":"Reservation", + "locationName":"item" + } + }, + "ReservedInstanceLimitPrice":{ + "type":"structure", + "members":{ + "Amount":{ + "shape":"Double", + "documentation":"

Used for Reserved Instance Marketplace offerings. Specifies the limit price on the total order (instanceCount * price).

", + "locationName":"amount" + }, + "CurrencyCode":{ + "shape":"CurrencyCodeValues", + "documentation":"

The currency in which the limitPrice amount is specified. At this time, the only supported currency is USD.

", + "locationName":"currencyCode" + } + }, + "documentation":"

Describes the limit price of a Reserved Instance offering.

" + }, + "ReservedInstanceState":{ + "type":"string", + "enum":[ + "payment-pending", + "active", + "payment-failed", + "retired" + ] + }, + "ReservedInstances":{ + "type":"structure", + "members":{ + "ReservedInstancesId":{ + "shape":"String", + "documentation":"

The ID of the Reserved Instance.

", + "locationName":"reservedInstancesId" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type on which the Reserved Instance can be used.

", + "locationName":"instanceType" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", + "locationName":"availabilityZone" + }, + "Start":{ + "shape":"DateTime", + "documentation":"

The date and time the Reserved Instance started.

", + "locationName":"start" + }, + "End":{ + "shape":"DateTime", + "documentation":"

The time when the Reserved Instance expires.

", + "locationName":"end" + }, + "Duration":{ + "shape":"Long", + "documentation":"

The duration of the Reserved Instance, in seconds.

", + "locationName":"duration" + }, + "UsagePrice":{ + "shape":"Float", + "documentation":"

The usage price of the Reserved Instance, per hour.

", + "locationName":"usagePrice" + }, + "FixedPrice":{ + "shape":"Float", + "documentation":"

The purchase price of the Reserved Instance.

", + "locationName":"fixedPrice" + }, + "InstanceCount":{ + "shape":"Integer", + "documentation":"

The number of Reserved Instances purchased.

", + "locationName":"instanceCount" + }, + "ProductDescription":{ + "shape":"RIProductDescription", + "documentation":"

The Reserved Instance description.

", + "locationName":"productDescription" + }, + "State":{ + "shape":"ReservedInstanceState", + "documentation":"

The state of the Reserved Instance purchase.

", + "locationName":"state" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the resource.

", + "locationName":"tagSet" + }, + "InstanceTenancy":{ + "shape":"Tenancy", + "documentation":"

The tenancy of the reserved instance.

", + "locationName":"instanceTenancy" + }, + "CurrencyCode":{ + "shape":"CurrencyCodeValues", + "documentation":"

The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

", + "locationName":"currencyCode" + }, + "OfferingType":{ + "shape":"OfferingTypeValues", + "documentation":"

The Reserved Instance offering type.

", + "locationName":"offeringType" + }, + "RecurringCharges":{ + "shape":"RecurringChargesList", + "documentation":"

The recurring charge tag assigned to the resource.

", + "locationName":"recurringCharges" + } + }, + "documentation":"

Describes a Reserved Instance.

" + }, + "ReservedInstancesConfiguration":{ + "type":"structure", + "members":{ + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone for the modified Reserved Instances.

", + "locationName":"availabilityZone" + }, + "Platform":{ + "shape":"String", + "documentation":"

The network platform of the modified Reserved Instances, which is either EC2-Classic or EC2-VPC.

", + "locationName":"platform" + }, + "InstanceCount":{ + "shape":"Integer", + "documentation":"

The number of modified Reserved Instances.

", + "locationName":"instanceCount" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type for the modified Reserved Instances.

", + "locationName":"instanceType" + } + }, + "documentation":"

Describes the configuration settings for the modified Reserved Instances.

" + }, + "ReservedInstancesConfigurationList":{ + "type":"list", + "member":{ + "shape":"ReservedInstancesConfiguration", + "locationName":"item" + } + }, + "ReservedInstancesId":{ + "type":"structure", + "members":{ + "ReservedInstancesId":{ + "shape":"String", + "documentation":"

The ID of the Reserved Instance.

", + "locationName":"reservedInstancesId" + } + }, + "documentation":"

Describes the ID of a Reserved Instance.

" + }, + "ReservedInstancesIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ReservedInstancesId" + } + }, + "ReservedInstancesList":{ + "type":"list", + "member":{ + "shape":"ReservedInstances", + "locationName":"item" + } + }, + "ReservedInstancesListing":{ + "type":"structure", + "members":{ + "ReservedInstancesListingId":{ + "shape":"String", + "documentation":"

The ID of the Reserved Instance listing.

", + "locationName":"reservedInstancesListingId" + }, + "ReservedInstancesId":{ + "shape":"String", + "documentation":"

The ID of the Reserved Instance.

", + "locationName":"reservedInstancesId" + }, + "CreateDate":{ + "shape":"DateTime", + "documentation":"

The time the listing was created.

", + "locationName":"createDate" + }, + "UpdateDate":{ + "shape":"DateTime", + "documentation":"

The last modified timestamp of the listing.

", + "locationName":"updateDate" + }, + "Status":{ + "shape":"ListingStatus", + "documentation":"

The status of the Reserved Instance listing.

", + "locationName":"status" + }, + "StatusMessage":{ + "shape":"String", + "documentation":"

The reason for the current status of the Reserved Instance listing. The response can be blank.

", + "locationName":"statusMessage" + }, + "InstanceCounts":{ + "shape":"InstanceCountList", + "documentation":"

The number of instances in this state.

", + "locationName":"instanceCounts" + }, + "PriceSchedules":{ + "shape":"PriceScheduleList", + "documentation":"

The price of the Reserved Instance listing.

", + "locationName":"priceSchedules" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the resource.

", + "locationName":"tagSet" + }, + "ClientToken":{ + "shape":"String", + "documentation":"

The idempotency token you provided when you created the listing.

", + "locationName":"clientToken" + } + }, + "documentation":"

Describes a Reserved Instance listing.

" + }, + "ReservedInstancesListingList":{ + "type":"list", + "member":{ + "shape":"ReservedInstancesListing", + "locationName":"item" + } + }, + "ReservedInstancesModification":{ + "type":"structure", + "members":{ + "ReservedInstancesModificationId":{ + "shape":"String", + "documentation":"

A unique ID for the Reserved Instance modification.

", + "locationName":"reservedInstancesModificationId" + }, + "ReservedInstancesIds":{ + "shape":"ReservedIntancesIds", + "documentation":"

The IDs of one or more Reserved Instances.

", + "locationName":"reservedInstancesSet" + }, + "ModificationResults":{ + "shape":"ReservedInstancesModificationResultList", + "documentation":"

Contains target configurations along with their corresponding new Reserved Instance IDs.

", + "locationName":"modificationResultSet" + }, + "CreateDate":{ + "shape":"DateTime", + "documentation":"

The time when the modification request was created.

", + "locationName":"createDate" + }, + "UpdateDate":{ + "shape":"DateTime", + "documentation":"

The time when the modification request was last updated.

", + "locationName":"updateDate" + }, + "EffectiveDate":{ + "shape":"DateTime", + "documentation":"

The time for the modification to become effective.

", + "locationName":"effectiveDate" + }, + "Status":{ + "shape":"String", + "documentation":"

The status of the Reserved Instances modification request.

", + "locationName":"status" + }, + "StatusMessage":{ + "shape":"String", + "documentation":"

The reason for the status.

", + "locationName":"statusMessage" + }, + "ClientToken":{ + "shape":"String", + "documentation":"

A unique, case-sensitive key supplied by the client to ensure that the modification request is idempotent.

", + "locationName":"clientToken" + } + }, + "documentation":"

Describes a Reserved Instance modification.

" + }, + "ReservedInstancesModificationIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ReservedInstancesModificationId" + } + }, + "ReservedInstancesModificationList":{ + "type":"list", + "member":{ + "shape":"ReservedInstancesModification", + "locationName":"item" + } + }, + "ReservedInstancesModificationResult":{ + "type":"structure", + "members":{ + "ReservedInstancesId":{ + "shape":"String", + "documentation":"

The ID for the Reserved Instances that were created as part of the modification request. This field is only available when the modification is fulfilled.

", + "locationName":"reservedInstancesId" + }, + "TargetConfiguration":{ + "shape":"ReservedInstancesConfiguration", + "documentation":"

The target Reserved Instances configurations supplied as part of the modification request.

", + "locationName":"targetConfiguration" + } + } + }, + "ReservedInstancesModificationResultList":{ + "type":"list", + "member":{ + "shape":"ReservedInstancesModificationResult", + "locationName":"item" + } + }, + "ReservedInstancesOffering":{ + "type":"structure", + "members":{ + "ReservedInstancesOfferingId":{ + "shape":"String", + "documentation":"

The ID of the Reserved Instance offering.

", + "locationName":"reservedInstancesOfferingId" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type on which the Reserved Instance can be used.

", + "locationName":"instanceType" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", + "locationName":"availabilityZone" + }, + "Duration":{ + "shape":"Long", + "documentation":"

The duration of the Reserved Instance, in seconds.

", + "locationName":"duration" + }, + "UsagePrice":{ + "shape":"Float", + "documentation":"

The usage price of the Reserved Instance, per hour.

", + "locationName":"usagePrice" + }, + "FixedPrice":{ + "shape":"Float", + "documentation":"

The purchase price of the Reserved Instance.

", + "locationName":"fixedPrice" + }, + "ProductDescription":{ + "shape":"RIProductDescription", + "documentation":"

The Reserved Instance description.

", + "locationName":"productDescription" + }, + "InstanceTenancy":{ + "shape":"Tenancy", + "documentation":"

The tenancy of the reserved instance.

", + "locationName":"instanceTenancy" + }, + "CurrencyCode":{ + "shape":"CurrencyCodeValues", + "documentation":"

The currency of the Reserved Instance offering you are purchasing. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

", + "locationName":"currencyCode" + }, + "OfferingType":{ + "shape":"OfferingTypeValues", + "documentation":"

The Reserved Instance offering type.

", + "locationName":"offeringType" + }, + "RecurringCharges":{ + "shape":"RecurringChargesList", + "documentation":"

The recurring charge tag assigned to the resource.

", + "locationName":"recurringCharges" + }, + "Marketplace":{ + "shape":"Boolean", + "documentation":"

Indicates whether the offering is available through the Reserved Instance Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering, this is true.

", + "locationName":"marketplace" + }, + "PricingDetails":{ + "shape":"PricingDetailsList", + "documentation":"

The pricing details of the Reserved Instance offering.

", + "locationName":"pricingDetailsSet" + } + }, + "documentation":"

Describes a Reserved Instance offering.

" + }, + "ReservedInstancesOfferingIdStringList":{ + "type":"list", + "member":{"shape":"String"} + }, + "ReservedInstancesOfferingList":{ + "type":"list", + "member":{ + "shape":"ReservedInstancesOffering", + "locationName":"item" + } + }, + "ReservedIntancesIds":{ + "type":"list", + "member":{ + "shape":"ReservedInstancesId", + "locationName":"item" + } + }, + "ResetImageAttributeName":{ + "type":"string", + "enum":["launchPermission"] + }, + "ResetImageAttributeRequest":{ + "type":"structure", + "required":[ + "ImageId", + "Attribute" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

" + }, + "Attribute":{ + "shape":"ResetImageAttributeName", + "documentation":"

The attribute to reset (currently you can only reset the launch permission attribute).

" + } + } + }, + "ResetInstanceAttributeRequest":{ + "type":"structure", + "required":[ + "InstanceId", + "Attribute" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "Attribute":{ + "shape":"InstanceAttributeName", + "documentation":"

The attribute to reset.

", + "locationName":"attribute" + } + } + }, + "ResetNetworkInterfaceAttributeRequest":{ + "type":"structure", + "required":["NetworkInterfaceId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "SourceDestCheck":{ + "shape":"String", + "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

", + "locationName":"sourceDestCheck" + } + } + }, + "ResetSnapshotAttributeRequest":{ + "type":"structure", + "required":[ + "SnapshotId", + "Attribute" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the snapshot.

" + }, + "Attribute":{ + "shape":"SnapshotAttributeName", + "documentation":"

The attribute to reset (currently only the attribute for permission to create volumes can be reset).

" + } + } + }, + "ResourceIdList":{ + "type":"list", + "member":{"shape":"String"} + }, + "ResourceType":{ + "type":"string", + "enum":[ + "customer-gateway", + "dhcp-options", + "image", + "instance", + "internet-gateway", + "network-acl", + "network-interface", + "reserved-instances", + "route-table", + "snapshot", + "spot-instances-request", + "subnet", + "security-group", + "volume", + "vpc", + "vpn-connection", + "vpn-gateway" + ] + }, + "RestorableByStringList":{ + "type":"list", + "member":{"shape":"String"} + }, + "RevokeSecurityGroupEgressRequest":{ + "type":"structure", + "required":["GroupId"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

", + "locationName":"groupId" + }, + "SourceSecurityGroupName":{ + "shape":"String", + "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

", + "locationName":"sourceSecurityGroupName" + }, + "SourceSecurityGroupOwnerId":{ + "shape":"String", + "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

", + "locationName":"sourceSecurityGroupOwnerId" + }, + "IpProtocol":{ + "shape":"String", + "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

", + "locationName":"ipProtocol" + }, + "FromPort":{ + "shape":"Integer", + "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

", + "locationName":"fromPort" + }, + "ToPort":{ + "shape":"Integer", + "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

", + "locationName":"toPort" + }, + "CidrIp":{ + "shape":"String", + "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", + "locationName":"cidrIp" + }, + "IpPermissions":{ + "shape":"IpPermissionList", + "documentation":"

", + "locationName":"ipPermissions" + } + } + }, + "RevokeSecurityGroupIngressRequest":{ + "type":"structure", + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "GroupName":{ + "shape":"String", + "documentation":"

[EC2-Classic, default VPC] The name of the security group.

" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

" + }, + "SourceSecurityGroupName":{ + "shape":"String", + "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

" + }, + "SourceSecurityGroupOwnerId":{ + "shape":"String", + "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

" + }, + "IpProtocol":{ + "shape":"String", + "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

" + }, + "FromPort":{ + "shape":"Integer", + "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

" + }, + "ToPort":{ + "shape":"Integer", + "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

" + }, + "CidrIp":{ + "shape":"String", + "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

" + }, + "IpPermissions":{ + "shape":"IpPermissionList", + "documentation":"

" + } + } + }, + "Route":{ + "type":"structure", + "members":{ + "DestinationCidrBlock":{ + "shape":"String", + "documentation":"

The CIDR block used for the destination match.

", + "locationName":"destinationCidrBlock" + }, + "GatewayId":{ + "shape":"String", + "documentation":"

The ID of a gateway attached to your VPC.

", + "locationName":"gatewayId" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of a NAT instance in your VPC.

", + "locationName":"instanceId" + }, + "InstanceOwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the owner of the instance.

", + "locationName":"instanceOwnerId" + }, + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "VpcPeeringConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPC peering connection.

", + "locationName":"vpcPeeringConnectionId" + }, + "State":{ + "shape":"RouteState", + "documentation":"

The state of the route. The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, or the specified NAT instance has been terminated).

", + "locationName":"state" + }, + "Origin":{ + "shape":"RouteOrigin", + "documentation":"

Describes how the route was created.

  • CreateRouteTable indicates that route was automatically created when the route table was created.
  • CreateRoute indicates that the route was manually added to the route table.
  • EnableVgwRoutePropagation indicates that the route was propagated by route propagation.
", + "locationName":"origin" + } + }, + "documentation":"

Describes a route in a route table.

" + }, + "RouteList":{ + "type":"list", + "member":{ + "shape":"Route", + "locationName":"item" + } + }, + "RouteOrigin":{ + "type":"string", + "enum":[ + "CreateRouteTable", + "CreateRoute", + "EnableVgwRoutePropagation" + ] + }, + "RouteState":{ + "type":"string", + "enum":[ + "active", + "blackhole" + ] + }, + "RouteTable":{ + "type":"structure", + "members":{ + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the route table.

", + "locationName":"routeTableId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "Routes":{ + "shape":"RouteList", + "documentation":"

The routes in the route table.

", + "locationName":"routeSet" + }, + "Associations":{ + "shape":"RouteTableAssociationList", + "documentation":"

The associations between the route table and one or more subnets.

", + "locationName":"associationSet" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the route table.

", + "locationName":"tagSet" + }, + "PropagatingVgws":{ + "shape":"PropagatingVgwList", + "documentation":"

Any virtual private gateway (VGW) propagating routes.

", + "locationName":"propagatingVgwSet" + } + }, + "documentation":"

Describes a route table.

" + }, + "RouteTableAssociation":{ + "type":"structure", + "members":{ + "RouteTableAssociationId":{ + "shape":"String", + "documentation":"

The ID of the association between a route table and a subnet.

", + "locationName":"routeTableAssociationId" + }, + "RouteTableId":{ + "shape":"String", + "documentation":"

The ID of the route table.

", + "locationName":"routeTableId" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

", + "locationName":"subnetId" + }, + "Main":{ + "shape":"Boolean", + "documentation":"

Indicates whether this is the main route table.

", + "locationName":"main" + } + }, + "documentation":"

Describes an association between a route table and a subnet.

" + }, + "RouteTableAssociationList":{ + "type":"list", + "member":{ + "shape":"RouteTableAssociation", + "locationName":"item" + } + }, + "RouteTableList":{ + "type":"list", + "member":{ + "shape":"RouteTable", + "locationName":"item" + } + }, + "RuleAction":{ + "type":"string", + "enum":[ + "allow", + "deny" + ] + }, + "RunInstancesMonitoringEnabled":{ + "type":"structure", + "required":["Enabled"], + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

Indicates whether monitoring is enabled for the instance.

", + "locationName":"enabled" + } + }, + "documentation":"

Describes the monitoring for the instance.

" + }, + "RunInstancesRequest":{ + "type":"structure", + "required":[ + "ImageId", + "MinCount", + "MaxCount" + ], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI, which you can get by calling DescribeImages.

" + }, + "MinCount":{ + "shape":"Integer", + "documentation":"

The minimum number of instances to launch. If you specify a minimum that is more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches no instances.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

" + }, + "MaxCount":{ + "shape":"Integer", + "documentation":"

The maximum number of instances to launch. If you specify more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches the largest possible number of instances above MinCount.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

" + }, + "KeyName":{ + "shape":"String", + "documentation":"

The name of the key pair. You can create a key pair using CreateKeyPair or ImportKeyPair.

If you launch an instance without specifying a key pair, you can't connect to the instance.

" + }, + "SecurityGroups":{ + "shape":"SecurityGroupStringList", + "documentation":"

[EC2-Classic, default VPC] One or more security group names. For a nondefault VPC, you must use security group IDs instead.

Default: Amazon EC2 uses the default security group.

", + "locationName":"SecurityGroup" + }, + "SecurityGroupIds":{ + "shape":"SecurityGroupIdStringList", + "documentation":"

One or more security group IDs. You can create a security group using CreateSecurityGroup.

Default: Amazon EC2 uses the default security group.

", + "locationName":"SecurityGroupId" + }, + "UserData":{ + "shape":"String", + "documentation":"

The Base64-encoded MIME user data for the instances.

" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

Default: m1.small

" + }, + "Placement":{ + "shape":"Placement", + "documentation":"

The placement for the instance.

" + }, + "KernelId":{ + "shape":"String", + "documentation":"

The ID of the kernel.

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB: A New Amazon Kernel Image in the Amazon Elastic Compute Cloud User Guide.

" + }, + "RamdiskId":{ + "shape":"String", + "documentation":"

The ID of the RAM disk.

" + }, + "BlockDeviceMappings":{ + "shape":"BlockDeviceMappingRequestList", + "documentation":"

The block device mapping.

", + "locationName":"BlockDeviceMapping" + }, + "Monitoring":{ + "shape":"RunInstancesMonitoringEnabled", + "documentation":"

The monitoring for the instance.

" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance into.

" + }, + "DisableApiTermination":{ + "shape":"Boolean", + "documentation":"

If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. If you set this parameter to true and then later want to be able to terminate the instance, you must first change the value of the disableApiTermination attribute to false using ModifyInstanceAttribute. Alternatively, if you set InstanceInitiatedShutdownBehavior to terminate, you can terminate the instance by running the shutdown command from the instance.

Default: false

", + "locationName":"disableApiTermination" + }, + "InstanceInitiatedShutdownBehavior":{ + "shape":"ShutdownBehavior", + "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

Default: stop

", + "locationName":"instanceInitiatedShutdownBehavior" + }, + "PrivateIpAddress":{ + "shape":"String", + "documentation":"

[EC2-VPC] The primary IP address. You must specify a value from the IP address range of the subnet.

Only one private IP address can be designated as primary. Therefore, you can't specify this parameter if PrivateIpAddresses.n.Primary is set to true and PrivateIpAddresses.n.PrivateIpAddress is set to an IP address.

Default: We select an IP address from the IP address range of the subnet.

", + "locationName":"privateIpAddress" + }, + "ClientToken":{ + "shape":"String", + "documentation":"

Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

Constraints: Maximum 64 ASCII characters

", + "locationName":"clientToken" + }, + "AdditionalInfo":{ + "shape":"String", + "documentation":"

Reserved.

", + "locationName":"additionalInfo" + }, + "NetworkInterfaces":{ + "shape":"InstanceNetworkInterfaceSpecificationList", + "documentation":"

One or more network interfaces.

", + "locationName":"networkInterface" + }, + "IamInstanceProfile":{ + "shape":"IamInstanceProfileSpecification", + "documentation":"

The IAM instance profile.

", + "locationName":"iamInstanceProfile" + }, + "EbsOptimized":{ + "shape":"Boolean", + "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.

Default: false

", + "locationName":"ebsOptimized" + } + } + }, + "S3Storage":{ + "type":"structure", + "members":{ + "Bucket":{ + "shape":"String", + "documentation":"

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

", + "locationName":"bucket" + }, + "Prefix":{ + "shape":"String", + "documentation":"

The beginning of the file name of the AMI.

", + "locationName":"prefix" + }, + "AWSAccessKeyId":{ + "shape":"String", + "documentation":"

The access key ID of the owner of the bucket. Before you specify a value for your access key ID, review and follow the guidance in Best Practices for Managing AWS Access Keys.

" + }, + "UploadPolicy":{ + "shape":"Blob", + "documentation":"

A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission to upload items into Amazon S3 on your behalf.

", + "locationName":"uploadPolicy" + }, + "UploadPolicySignature":{ + "shape":"String", + "documentation":"

The signature of the Base64 encoded JSON document.

", + "locationName":"uploadPolicySignature" + } + }, + "documentation":"

Describes the S3 bucket for an instance store-backed AMI.

" + }, + "SecurityGroup":{ + "type":"structure", + "members":{ + "OwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the owner of the security group.

", + "locationName":"ownerId" + }, + "GroupName":{ + "shape":"String", + "documentation":"

The name of the security group.

", + "locationName":"groupName" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The ID of the security group.

", + "locationName":"groupId" + }, + "Description":{ + "shape":"String", + "documentation":"

A description of the security group.

", + "locationName":"groupDescription" + }, + "IpPermissions":{ + "shape":"IpPermissionList", + "documentation":"

One or more inbound rules associated with the security group.

", + "locationName":"ipPermissions" + }, + "IpPermissionsEgress":{ + "shape":"IpPermissionList", + "documentation":"

[EC2-VPC] One or more outbound rules associated with the security group.

", + "locationName":"ipPermissionsEgress" + }, + "VpcId":{ + "shape":"String", + "documentation":"

[EC2-VPC] The ID of the VPC for the security group.

", + "locationName":"vpcId" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the security group.

", + "locationName":"tagSet" + } + }, + "documentation":"

Describes a security group

" + }, + "SecurityGroupIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"SecurityGroupId" + } + }, + "SecurityGroupList":{ + "type":"list", + "member":{ + "shape":"SecurityGroup", + "locationName":"item" + } + }, + "SecurityGroupStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"SecurityGroup" + } + }, + "ShutdownBehavior":{ + "type":"string", + "enum":[ + "stop", + "terminate" + ] + }, + "Snapshot":{ + "type":"structure", + "members":{ + "SnapshotId":{ + "shape":"String", + "documentation":"

The ID of the snapshot.

", + "locationName":"snapshotId" + }, + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

", + "locationName":"volumeId" + }, + "State":{ + "shape":"SnapshotState", + "documentation":"

The snapshot state.

", + "locationName":"status" + }, + "StartTime":{ + "shape":"DateTime", + "documentation":"

The time stamp when the snapshot was initiated.

", + "locationName":"startTime" + }, + "Progress":{ + "shape":"String", + "documentation":"

The progress of the snapshot, as a percentage.

", + "locationName":"progress" + }, + "OwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the Amazon EBS snapshot owner.

", + "locationName":"ownerId" + }, + "Description":{ + "shape":"String", + "documentation":"

The description for the snapshot.

", + "locationName":"description" + }, + "VolumeSize":{ + "shape":"Integer", + "documentation":"

The size of the volume, in GiB.

", + "locationName":"volumeSize" + }, + "OwnerAlias":{ + "shape":"String", + "documentation":"

The AWS account alias (for example, amazon, self) or AWS account ID that owns the snapshot.

", + "locationName":"ownerAlias" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the snapshot.

", + "locationName":"tagSet" + }, + "Encrypted":{ + "shape":"Boolean", + "documentation":"

Indicates whether the snapshot is encrypted.

", + "locationName":"encrypted" + } + }, + "documentation":"

Describes a snapshot.

" + }, + "SnapshotAttributeName":{ + "type":"string", + "enum":[ + "productCodes", + "createVolumePermission" + ] + }, + "SnapshotIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"SnapshotId" + } + }, + "SnapshotList":{ + "type":"list", + "member":{ + "shape":"Snapshot", + "locationName":"item" + } + }, + "SnapshotState":{ + "type":"string", + "enum":[ + "pending", + "completed", + "error" + ] + }, + "SpotDatafeedSubscription":{ + "type":"structure", + "members":{ + "OwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the account.

", + "locationName":"ownerId" + }, + "Bucket":{ + "shape":"String", + "documentation":"

The Amazon S3 bucket where the Spot Instance datafeed is located.

", + "locationName":"bucket" + }, + "Prefix":{ + "shape":"String", + "documentation":"

The prefix that is prepended to datafeed files.

", + "locationName":"prefix" + }, + "State":{ + "shape":"DatafeedSubscriptionState", + "documentation":"

The state of the Spot Instance datafeed subscription.

", + "locationName":"state" + }, + "Fault":{ + "shape":"SpotInstanceStateFault", + "documentation":"

The fault codes for the Spot Instance request, if any.

", + "locationName":"fault" + } + }, + "documentation":"

Describes the datafeed for a Spot Instance.

" + }, + "SpotInstanceRequest":{ + "type":"structure", + "members":{ + "SpotInstanceRequestId":{ + "shape":"String", + "documentation":"

The ID of the Spot Instance request.

", + "locationName":"spotInstanceRequestId" + }, + "SpotPrice":{ + "shape":"String", + "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", + "locationName":"spotPrice" + }, + "Type":{ + "shape":"SpotInstanceType", + "documentation":"

The Spot Instance request type.

", + "locationName":"type" + }, + "State":{ + "shape":"SpotInstanceState", + "documentation":"

The state of the Spot Instance request. Spot bid status information can help you track your Spot Instance requests. For information, see Tracking Spot Requests with Bid Status Codes in the Amazon Elastic Compute Cloud User Guide.

", + "locationName":"state" + }, + "Fault":{ + "shape":"SpotInstanceStateFault", + "documentation":"

The fault codes for the Spot Instance request, if any.

", + "locationName":"fault" + }, + "Status":{ + "shape":"SpotInstanceStatus", + "documentation":"

The status code and status message describing the Spot Instance request.

", + "locationName":"status" + }, + "ValidFrom":{ + "shape":"DateTime", + "documentation":"

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

", + "locationName":"validFrom" + }, + "ValidUntil":{ + "shape":"DateTime", + "documentation":"

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date is reached.

", + "locationName":"validUntil" + }, + "LaunchGroup":{ + "shape":"String", + "documentation":"

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

", + "locationName":"launchGroup" + }, + "AvailabilityZoneGroup":{ + "shape":"String", + "documentation":"

The Availability Zone group. If you specify the same Availability Zone group for all Spot Instance requests, all Spot Instances are launched in the same Availability Zone.

", + "locationName":"availabilityZoneGroup" + }, + "LaunchSpecification":{ + "shape":"LaunchSpecification", + "documentation":"

Additional information for launching instances.

", + "locationName":"launchSpecification" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The instance ID, if an instance has been launched to fulfill the Spot Instance request.

", + "locationName":"instanceId" + }, + "CreateTime":{ + "shape":"DateTime", + "documentation":"

The time stamp when the Spot Instance request was created.

", + "locationName":"createTime" + }, + "ProductDescription":{ + "shape":"RIProductDescription", + "documentation":"

The product description associated with the Spot Instance.

", + "locationName":"productDescription" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the resource.

", + "locationName":"tagSet" + }, + "LaunchedAvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone in which the bid is launched.

", + "locationName":"launchedAvailabilityZone" + } + }, + "documentation":"

Describe a Spot Instance request.

" + }, + "SpotInstanceRequestIdList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"SpotInstanceRequestId" + } + }, + "SpotInstanceRequestList":{ + "type":"list", + "member":{ + "shape":"SpotInstanceRequest", + "locationName":"item" + } + }, + "SpotInstanceState":{ + "type":"string", + "enum":[ + "open", + "active", + "closed", + "cancelled", + "failed" + ] + }, + "SpotInstanceStateFault":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"String", + "documentation":"

The reason code for the Spot Instance state change.

", + "locationName":"code" + }, + "Message":{ + "shape":"String", + "documentation":"

The message for the Spot Instance state change.

", + "locationName":"message" + } + }, + "documentation":"

Describes a Spot Instance state change.

" + }, + "SpotInstanceStatus":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"String", + "documentation":"

The status code of the request.

", + "locationName":"code" + }, + "UpdateTime":{ + "shape":"DateTime", + "documentation":"

The time of the most recent status update.

", + "locationName":"updateTime" + }, + "Message":{ + "shape":"String", + "documentation":"

The description for the status code for the Spot request.

", + "locationName":"message" + } + }, + "documentation":"

Describes a Spot Instance request.

" + }, + "SpotInstanceType":{ + "type":"string", + "enum":[ + "one-time", + "persistent" + ] + }, + "SpotPlacement":{ + "type":"structure", + "members":{ + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone.

", + "locationName":"availabilityZone" + }, + "GroupName":{ + "shape":"String", + "documentation":"

The Availability Zone group name.

", + "locationName":"groupName" + } + }, + "documentation":"

Describes Spot Instance placement.

" + }, + "SpotPrice":{ + "type":"structure", + "members":{ + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type.

", + "locationName":"instanceType" + }, + "ProductDescription":{ + "shape":"RIProductDescription", + "documentation":"

A general description of the AMI.

", + "locationName":"productDescription" + }, + "SpotPrice":{ + "shape":"String", + "documentation":"

The maximum price you will pay to launch one or more Spot Instances.

", + "locationName":"spotPrice" + }, + "Timestamp":{ + "shape":"DateTime", + "documentation":"

The date and time the request was created.

", + "locationName":"timestamp" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone.

", + "locationName":"availabilityZone" + } + }, + "documentation":"

Describes the Spot Price.

" + }, + "SpotPriceHistoryList":{ + "type":"list", + "member":{ + "shape":"SpotPrice", + "locationName":"item" + } + }, + "StartInstancesRequest":{ + "type":"structure", + "required":["InstanceIds"], + "members":{ + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

", + "locationName":"InstanceId" + }, + "AdditionalInfo":{ + "shape":"String", + "documentation":"

Reserved.

", + "locationName":"additionalInfo" + }, + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + } + } + }, + "StartInstancesResult":{ + "type":"structure", + "members":{ + "StartingInstances":{ + "shape":"InstanceStateChangeList", + "documentation":"

Information about one or more started instances.

", + "locationName":"instancesSet" + } + } + }, + "StateReason":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"String", + "documentation":"

The reason code for the state change.

", + "locationName":"code" + }, + "Message":{ + "shape":"String", + "documentation":"

The message for the state change.

  • Server.SpotInstanceTermination: A Spot Instance was terminated due to an increase in the market price.

  • Server.InternalError: An internal error occurred during instance launch, resulting in termination.

  • Server.InsufficientInstanceCapacity: There was insufficient instance capacity to satisfy the launch request.

  • Client.InternalError: A client error caused the instance to terminate on launch.

  • Client.InstanceInitiatedShutdown: The instance was shut down using the shutdown -h command from the instance.

  • Client.UserInitiatedShutdown: The instance was shut down using the Amazon EC2 API.

  • Client.VolumeLimitExceeded: The volume limit was exceeded.

  • Client.InvalidSnapshot.NotFound: The specified snapshot was not found.

", + "locationName":"message" + } + }, + "documentation":"

Describes a state change.

" + }, + "StatusName":{ + "type":"string", + "enum":["reachability"] + }, + "StatusType":{ + "type":"string", + "enum":[ + "passed", + "failed", + "insufficient-data" + ] + }, + "StopInstancesRequest":{ + "type":"structure", + "required":["InstanceIds"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

", + "locationName":"InstanceId" + }, + "Force":{ + "shape":"Boolean", + "documentation":"

Forces the instances to stop. The instances do not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances.

Default: false

", + "locationName":"force" + } + } + }, + "StopInstancesResult":{ + "type":"structure", + "members":{ + "StoppingInstances":{ + "shape":"InstanceStateChangeList", + "documentation":"

Information about one or more stopped instances.

", + "locationName":"instancesSet" + } + } + }, + "Storage":{ + "type":"structure", + "members":{ + "S3":{ + "shape":"S3Storage", + "documentation":"

An Amazon S3 storage location.

" + } + }, + "documentation":"

Describes the storage location for an instance store-backed AMI.

" + }, + "String":{"type":"string"}, + "Subnet":{ + "type":"structure", + "members":{ + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet.

", + "locationName":"subnetId" + }, + "State":{ + "shape":"SubnetState", + "documentation":"

The current state of the subnet.

", + "locationName":"state" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC the subnet is in.

", + "locationName":"vpcId" + }, + "CidrBlock":{ + "shape":"String", + "documentation":"

The CIDR block assigned to the subnet.

", + "locationName":"cidrBlock" + }, + "AvailableIpAddressCount":{ + "shape":"Integer", + "documentation":"

The number of unused IP addresses in the subnet. Note that the IP addresses for any stopped instances are considered unavailable.

", + "locationName":"availableIpAddressCount" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone of the subnet.

", + "locationName":"availabilityZone" + }, + "DefaultForAz":{ + "shape":"Boolean", + "documentation":"

Indicates whether this is the default subnet for the Availability Zone.

", + "locationName":"defaultForAz" + }, + "MapPublicIpOnLaunch":{ + "shape":"Boolean", + "documentation":"

Indicates whether instances launched in this subnet receive a public IP address.

", + "locationName":"mapPublicIpOnLaunch" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the subnet.

", + "locationName":"tagSet" + } + }, + "documentation":"

Describes a subnet.

" + }, + "SubnetIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"SubnetId" + } + }, + "SubnetList":{ + "type":"list", + "member":{ + "shape":"Subnet", + "locationName":"item" + } + }, + "SubnetState":{ + "type":"string", + "enum":[ + "pending", + "available" + ] + }, + "SummaryStatus":{ + "type":"string", + "enum":[ + "ok", + "impaired", + "insufficient-data", + "not-applicable" + ] + }, + "Tag":{ + "type":"structure", + "members":{ + "Key":{ + "shape":"String", + "documentation":"

The key of the tag.

Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:

", + "locationName":"key" + }, + "Value":{ + "shape":"String", + "documentation":"

The value of the tag.

Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.

", + "locationName":"value" + } + }, + "documentation":"

Describes a tag.

" + }, + "TagDescription":{ + "type":"structure", + "members":{ + "ResourceId":{ + "shape":"String", + "documentation":"

The ID of the resource. For example, ami-1a2b3c4d.

", + "locationName":"resourceId" + }, + "ResourceType":{ + "shape":"ResourceType", + "documentation":"

The type of resource.

", + "locationName":"resourceType" + }, + "Key":{ + "shape":"String", + "documentation":"

The key of the tag.

", + "locationName":"key" + }, + "Value":{ + "shape":"String", + "documentation":"

The value of the tag.

", + "locationName":"value" + } + }, + "documentation":"

Describes a tag.

" + }, + "TagDescriptionList":{ + "type":"list", + "member":{ + "shape":"TagDescription", + "locationName":"item" + } + }, + "TagList":{ + "type":"list", + "member":{ + "shape":"Tag", + "locationName":"item" + } + }, + "TelemetryStatus":{ + "type":"string", + "enum":[ + "UP", + "DOWN" + ] + }, + "Tenancy":{ + "type":"string", + "enum":[ + "default", + "dedicated" + ] + }, + "TerminateInstancesRequest":{ + "type":"structure", + "required":["InstanceIds"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

", + "locationName":"InstanceId" + } + } + }, + "TerminateInstancesResult":{ + "type":"structure", + "members":{ + "TerminatingInstances":{ + "shape":"InstanceStateChangeList", + "documentation":"

Information about one or more terminated instances.

", + "locationName":"instancesSet" + } + } + }, + "UnassignPrivateIpAddressesRequest":{ + "type":"structure", + "required":[ + "NetworkInterfaceId", + "PrivateIpAddresses" + ], + "members":{ + "NetworkInterfaceId":{ + "shape":"String", + "documentation":"

The ID of the network interface.

", + "locationName":"networkInterfaceId" + }, + "PrivateIpAddresses":{ + "shape":"PrivateIpAddressStringList", + "documentation":"

The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address.

", + "locationName":"privateIpAddress" + } + } + }, + "UnmonitorInstancesRequest":{ + "type":"structure", + "required":["InstanceIds"], + "members":{ + "DryRun":{ + "shape":"Boolean", + "locationName":"dryRun" + }, + "InstanceIds":{ + "shape":"InstanceIdStringList", + "documentation":"

One or more instance IDs.

", + "locationName":"InstanceId" + } + } + }, + "UnmonitorInstancesResult":{ + "type":"structure", + "members":{ + "InstanceMonitorings":{ + "shape":"InstanceMonitoringList", + "documentation":"

Monitoring information for one or more instances.

", + "locationName":"instancesSet" + } + } + }, + "UserGroupStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"UserGroup" + } + }, + "UserIdGroupPair":{ + "type":"structure", + "members":{ + "UserId":{ + "shape":"String", + "documentation":"

The ID of an AWS account.

", + "locationName":"userId" + }, + "GroupName":{ + "shape":"String", + "documentation":"

The ID of the security group owned by the specified AWS account.

", + "locationName":"groupName" + }, + "GroupId":{ + "shape":"String", + "documentation":"

The name of the security group in the specified AWS account.

", + "locationName":"groupId" + } + }, + "documentation":"

Describes a security group and AWS account ID pair for EC2-Classic.

" + }, + "UserIdGroupPairList":{ + "type":"list", + "member":{ + "shape":"UserIdGroupPair", + "locationName":"item" + } + }, + "UserIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"UserId" + } + }, + "ValueStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"item" + } + }, + "VgwTelemetry":{ + "type":"structure", + "members":{ + "OutsideIpAddress":{ + "shape":"String", + "documentation":"

The Internet-routable IP address of the virtual private gateway's outside interface.

", + "locationName":"outsideIpAddress" + }, + "Status":{ + "shape":"TelemetryStatus", + "documentation":"

The status of the VPN tunnel.

", + "locationName":"status" + }, + "LastStatusChange":{ + "shape":"DateTime", + "documentation":"

The date and time of the last change in status.

", + "locationName":"lastStatusChange" + }, + "StatusMessage":{ + "shape":"String", + "documentation":"

If an error occurs, a description of the error.

", + "locationName":"statusMessage" + }, + "AcceptedRouteCount":{ + "shape":"Integer", + "documentation":"

The number of accepted routes.

", + "locationName":"acceptedRouteCount" + } + }, + "documentation":"

Describes telemetry for a VPN tunnel.

" + }, + "VgwTelemetryList":{ + "type":"list", + "member":{ + "shape":"VgwTelemetry", + "locationName":"item" + } + }, + "VirtualizationType":{ + "type":"string", + "enum":[ + "hvm", + "paravirtual" + ] + }, + "Volume":{ + "type":"structure", + "members":{ + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

", + "locationName":"volumeId" + }, + "Size":{ + "shape":"Integer", + "documentation":"

The size of the volume, in GiBs.

", + "locationName":"size" + }, + "SnapshotId":{ + "shape":"String", + "documentation":"

The snapshot from which the volume was created, if applicable.

", + "locationName":"snapshotId" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone for the volume.

", + "locationName":"availabilityZone" + }, + "State":{ + "shape":"VolumeState", + "documentation":"

The volume state.

", + "locationName":"status" + }, + "CreateTime":{ + "shape":"DateTime", + "documentation":"

The time stamp when volume creation was initiated.

", + "locationName":"createTime" + }, + "Attachments":{ + "shape":"VolumeAttachmentList", + "locationName":"attachmentSet" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the volume.

", + "locationName":"tagSet" + }, + "VolumeType":{ + "shape":"VolumeType", + "documentation":"

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

", + "locationName":"volumeType" + }, + "Iops":{ + "shape":"Integer", + "documentation":"

The number of I/O operations per second (IOPS) that the volume supports.

", + "locationName":"iops" + }, + "Encrypted":{ + "shape":"Boolean", + "documentation":"

Indicates whether the volume is encrypted.

", + "locationName":"encrypted" + } + }, + "documentation":"

Describes a volume.

" + }, + "VolumeAttachment":{ + "type":"structure", + "members":{ + "VolumeId":{ + "shape":"String", + "documentation":"

The ID of the volume.

", + "locationName":"volumeId" + }, + "InstanceId":{ + "shape":"String", + "documentation":"

The ID of the instance.

", + "locationName":"instanceId" + }, + "Device":{ + "shape":"String", + "documentation":"

The device name.

", + "locationName":"device" + }, + "State":{ + "shape":"VolumeAttachmentState", + "documentation":"

The attachment state of the volume.

", + "locationName":"status" + }, + "AttachTime":{ + "shape":"DateTime", + "documentation":"

The time stamp when the attachment initiated.

", + "locationName":"attachTime" + }, + "DeleteOnTermination":{ + "shape":"Boolean", + "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", + "locationName":"deleteOnTermination" + } + }, + "documentation":"

Describes volume attachment details.

" + }, + "VolumeAttachmentList":{ + "type":"list", + "member":{ + "shape":"VolumeAttachment", + "locationName":"item" + } + }, + "VolumeAttachmentState":{ + "type":"string", + "enum":[ + "attaching", + "attached", + "detaching", + "detached" + ] + }, + "VolumeAttributeName":{ + "type":"string", + "enum":[ + "autoEnableIO", + "productCodes" + ] + }, + "VolumeDetail":{ + "type":"structure", + "required":["Size"], + "members":{ + "Size":{ + "shape":"Long", + "documentation":"

The size of the volume, in GiB.

", + "locationName":"size" + } + }, + "documentation":"

Describes an Amazon EBS volume.

" + }, + "VolumeIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"VolumeId" + } + }, + "VolumeList":{ + "type":"list", + "member":{ + "shape":"Volume", + "locationName":"item" + } + }, + "VolumeState":{ + "type":"string", + "enum":[ + "creating", + "available", + "in-use", + "deleting", + "deleted", + "error" + ] + }, + "VolumeStatusAction":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"String", + "documentation":"

The code identifying the operation, for example, enable-volume-io.

", + "locationName":"code" + }, + "Description":{ + "shape":"String", + "documentation":"

A description of the operation.

", + "locationName":"description" + }, + "EventType":{ + "shape":"String", + "documentation":"

The event type associated with this operation.

", + "locationName":"eventType" + }, + "EventId":{ + "shape":"String", + "documentation":"

The ID of the event associated with this operation.

", + "locationName":"eventId" + } + }, + "documentation":"

Describes a volume status operation code.

" + }, + "VolumeStatusActionsList":{ + "type":"list", + "member":{ + "shape":"VolumeStatusAction", + "locationName":"item" + } + }, + "VolumeStatusDetails":{ + "type":"structure", + "members":{ + "Name":{ + "shape":"VolumeStatusName", + "documentation":"

The name of the volume status.

", + "locationName":"name" + }, + "Status":{ + "shape":"String", + "documentation":"

The intended status of the volume status.

", + "locationName":"status" + } + }, + "documentation":"

Describes a volume status.

" + }, + "VolumeStatusDetailsList":{ + "type":"list", + "member":{ + "shape":"VolumeStatusDetails", + "locationName":"item" + } + }, + "VolumeStatusEvent":{ + "type":"structure", + "members":{ + "EventType":{ + "shape":"String", + "documentation":"

The type of this event.

", + "locationName":"eventType" + }, + "Description":{ + "shape":"String", + "documentation":"

A description of the event.

", + "locationName":"description" + }, + "NotBefore":{ + "shape":"DateTime", + "documentation":"

The earliest start time of the event.

", + "locationName":"notBefore" + }, + "NotAfter":{ + "shape":"DateTime", + "documentation":"

The latest end time of the event.

", + "locationName":"notAfter" + }, + "EventId":{ + "shape":"String", + "documentation":"

The ID of this event.

", + "locationName":"eventId" + } + }, + "documentation":"

Describes a volume status event.

" + }, + "VolumeStatusEventsList":{ + "type":"list", + "member":{ + "shape":"VolumeStatusEvent", + "locationName":"item" + } + }, + "VolumeStatusInfo":{ + "type":"structure", + "members":{ + "Status":{ + "shape":"VolumeStatusInfoStatus", + "documentation":"

The status of the volume.

", + "locationName":"status" + }, + "Details":{ + "shape":"VolumeStatusDetailsList", + "documentation":"

The details of the volume status.

", + "locationName":"details" + } + }, + "documentation":"

Describes the status of a volume.

" + }, + "VolumeStatusInfoStatus":{ + "type":"string", + "enum":[ + "ok", + "impaired", + "insufficient-data" + ] + }, + "VolumeStatusItem":{ + "type":"structure", + "members":{ + "VolumeId":{ + "shape":"String", + "documentation":"

The volume ID.

", + "locationName":"volumeId" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone of the volume.

", + "locationName":"availabilityZone" + }, + "VolumeStatus":{ + "shape":"VolumeStatusInfo", + "documentation":"

The volume status.

", + "locationName":"volumeStatus" + }, + "Events":{ + "shape":"VolumeStatusEventsList", + "documentation":"

A list of events associated with the volume.

", + "locationName":"eventsSet" + }, + "Actions":{ + "shape":"VolumeStatusActionsList", + "documentation":"

The details of the operation.

", + "locationName":"actionsSet" + } + }, + "documentation":"

Describes the volume status.

" + }, + "VolumeStatusList":{ + "type":"list", + "member":{ + "shape":"VolumeStatusItem", + "locationName":"item" + } + }, + "VolumeStatusName":{ + "type":"string", + "enum":[ + "io-enabled", + "io-performance" + ] + }, + "VolumeType":{ + "type":"string", + "enum":[ + "standard", + "io1", + "gp2" + ] + }, + "Vpc":{ + "type":"structure", + "members":{ + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "State":{ + "shape":"VpcState", + "documentation":"

The current state of the VPC.

", + "locationName":"state" + }, + "CidrBlock":{ + "shape":"String", + "documentation":"

The CIDR block for the VPC.

", + "locationName":"cidrBlock" + }, + "DhcpOptionsId":{ + "shape":"String", + "documentation":"

The ID of the set of DHCP options you've associated with the VPC (or default if the default options are associated with the VPC).

", + "locationName":"dhcpOptionsId" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the VPC.

", + "locationName":"tagSet" + }, + "InstanceTenancy":{ + "shape":"Tenancy", + "documentation":"

The allowed tenancy of instances launched into the VPC.

", + "locationName":"instanceTenancy" + }, + "IsDefault":{ + "shape":"Boolean", + "documentation":"

Indicates whether the VPC is the default VPC.

", + "locationName":"isDefault" + } + }, + "documentation":"

Describes a VPC.

" + }, + "VpcAttachment":{ + "type":"structure", + "members":{ + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + }, + "State":{ + "shape":"AttachmentStatus", + "documentation":"

The current state of the attachment.

", + "locationName":"state" + } + }, + "documentation":"

Describes an attachment between a virtual private gateway and a VPC.

" + }, + "VpcAttachmentList":{ + "type":"list", + "member":{ + "shape":"VpcAttachment", + "locationName":"item" + } + }, + "VpcAttributeName":{ + "type":"string", + "enum":[ + "enableDnsSupport", + "enableDnsHostnames" + ] + }, + "VpcIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"VpcId" + } + }, + "VpcList":{ + "type":"list", + "member":{ + "shape":"Vpc", + "locationName":"item" + } + }, + "VpcPeeringConnection":{ + "type":"structure", + "members":{ + "AccepterVpcInfo":{ + "shape":"VpcPeeringConnectionVpcInfo", + "documentation":"

The information of the peer VPC.

", + "locationName":"accepterVpcInfo" + }, + "ExpirationTime":{ + "shape":"DateTime", + "documentation":"

The time that an unaccepted VPC peering connection will expire.

", + "locationName":"expirationTime" + }, + "RequesterVpcInfo":{ + "shape":"VpcPeeringConnectionVpcInfo", + "documentation":"

The information of the requester VPC.

", + "locationName":"requesterVpcInfo" + }, + "Status":{ + "shape":"VpcPeeringConnectionStateReason", + "documentation":"

The status of the VPC peering connection.

", + "locationName":"status" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the resource.

", + "locationName":"tagSet" + }, + "VpcPeeringConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPC peering connection.

", + "locationName":"vpcPeeringConnectionId" + } + }, + "documentation":"

Describes a VPC peering connection.

" + }, + "VpcPeeringConnectionList":{ + "type":"list", + "member":{ + "shape":"VpcPeeringConnection", + "locationName":"item" + } + }, + "VpcPeeringConnectionStateReason":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"String", + "documentation":"

The status of the VPC peering connection.

", + "locationName":"code" + }, + "Message":{ + "shape":"String", + "documentation":"

A message that provides more information about the status, if applicable.

", + "locationName":"message" + } + }, + "documentation":"

Describes the status of a VPC peering connection.

" + }, + "VpcPeeringConnectionVpcInfo":{ + "type":"structure", + "members":{ + "CidrBlock":{ + "shape":"String", + "documentation":"

The CIDR block for the VPC.

", + "locationName":"cidrBlock" + }, + "OwnerId":{ + "shape":"String", + "documentation":"

The AWS account ID of the VPC owner.

", + "locationName":"ownerId" + }, + "VpcId":{ + "shape":"String", + "documentation":"

The ID of the VPC.

", + "locationName":"vpcId" + } + }, + "documentation":"

Describes a VPC in a VPC peering connection.

" + }, + "VpcState":{ + "type":"string", + "enum":[ + "pending", + "available" + ] + }, + "VpnConnection":{ + "type":"structure", + "members":{ + "VpnConnectionId":{ + "shape":"String", + "documentation":"

The ID of the VPN connection.

", + "locationName":"vpnConnectionId" + }, + "State":{ + "shape":"VpnState", + "documentation":"

The current state of the VPN connection.

", + "locationName":"state" + }, + "CustomerGatewayConfiguration":{ + "shape":"String", + "documentation":"

The configuration information for the VPN connection's customer gateway (in the native XML format). This element is always present in the CreateVpnConnection response; however, it's present in the DescribeVpnConnections response only if the VPN connection is in the pending or available state.

", + "locationName":"customerGatewayConfiguration" + }, + "Type":{ + "shape":"GatewayType", + "documentation":"

The type of VPN connection.

", + "locationName":"type" + }, + "CustomerGatewayId":{ + "shape":"String", + "documentation":"

The ID of the customer gateway at your end of the VPN connection.

", + "locationName":"customerGatewayId" + }, + "VpnGatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway at the AWS side of the VPN connection.

", + "locationName":"vpnGatewayId" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the VPN connection.

", + "locationName":"tagSet" + }, + "VgwTelemetry":{ + "shape":"VgwTelemetryList", + "documentation":"

Information about the VPN tunnel.

", + "locationName":"vgwTelemetry" + }, + "Options":{ + "shape":"VpnConnectionOptions", + "documentation":"

The VPN connection options.

", + "locationName":"options" + }, + "Routes":{ + "shape":"VpnStaticRouteList", + "documentation":"

The static routes associated with the VPN connection.

", + "locationName":"routes" + } + }, + "documentation":"

Describes a VPN connection.

" + }, + "VpnConnectionIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"VpnConnectionId" + } + }, + "VpnConnectionList":{ + "type":"list", + "member":{ + "shape":"VpnConnection", + "locationName":"item" + } + }, + "VpnConnectionOptions":{ + "type":"structure", + "members":{ + "StaticRoutesOnly":{ + "shape":"Boolean", + "documentation":"

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

", + "locationName":"staticRoutesOnly" + } + }, + "documentation":"

Describes VPN connection options.

" + }, + "VpnConnectionOptionsSpecification":{ + "type":"structure", + "members":{ + "StaticRoutesOnly":{ + "shape":"Boolean", + "documentation":"

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

", + "locationName":"staticRoutesOnly" + } + }, + "documentation":"

Describes VPN connection options.

" + }, + "VpnGateway":{ + "type":"structure", + "members":{ + "VpnGatewayId":{ + "shape":"String", + "documentation":"

The ID of the virtual private gateway.

", + "locationName":"vpnGatewayId" + }, + "State":{ + "shape":"VpnState", + "documentation":"

The current state of the virtual private gateway.

", + "locationName":"state" + }, + "Type":{ + "shape":"GatewayType", + "documentation":"

The type of VPN connection the virtual private gateway supports.

", + "locationName":"type" + }, + "AvailabilityZone":{ + "shape":"String", + "documentation":"

The Availability Zone where the virtual private gateway was created.

", + "locationName":"availabilityZone" + }, + "VpcAttachments":{ + "shape":"VpcAttachmentList", + "documentation":"

Any VPCs attached to the virtual private gateway.

", + "locationName":"attachments" + }, + "Tags":{ + "shape":"TagList", + "documentation":"

Any tags assigned to the virtual private gateway.

", + "locationName":"tagSet" + } + }, + "documentation":"

Describes a virtual private gateway.

" + }, + "VpnGatewayIdStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"VpnGatewayId" + } + }, + "VpnGatewayList":{ + "type":"list", + "member":{ + "shape":"VpnGateway", + "locationName":"item" + } + }, + "VpnState":{ + "type":"string", + "enum":[ + "pending", + "available", + "deleting", + "deleted" + ] + }, + "VpnStaticRoute":{ + "type":"structure", + "members":{ + "DestinationCidrBlock":{ + "shape":"String", + "documentation":"

The CIDR block associated with the local subnet of the customer data center.

", + "locationName":"destinationCidrBlock" + }, + "Source":{ + "shape":"VpnStaticRouteSource", + "documentation":"

Indicates how the routes were provided.

", + "locationName":"source" + }, + "State":{ + "shape":"VpnState", + "documentation":"

The current state of the static route.

", + "locationName":"state" + } + }, + "documentation":"

Describes a static route for a VPN connection.

" + }, + "VpnStaticRouteList":{ + "type":"list", + "member":{ + "shape":"VpnStaticRoute", + "locationName":"item" + } + }, + "VpnStaticRouteSource":{ + "type":"string", + "enum":["Static"] + }, + "ZoneNameStringList":{ + "type":"list", + "member":{ + "shape":"String", + "locationName":"ZoneName" + } + }, + "NewDhcpConfigurationList":{ + "type":"list", + "member":{ + "shape":"NewDhcpConfiguration", + "locationName":"item" + } + }, + "NewDhcpConfiguration":{ + "type":"structure", + "members":{ + "Key":{ + "shape":"String", + "locationName":"key" + }, + "Values":{ + "shape":"ValueStringList", + "locationName":"Value" + } + } + }, + "DhcpConfigurationValueList":{ + "type":"list", + "member":{ + "shape":"AttributeValue", + "locationName":"item" + } + }, + "Blob":{"type":"blob"}, + "BlobAttributeValue":{ + "type":"structure", + "members":{ + "Value":{ + "shape":"Blob", + "locationName":"value" + } + } + }, + "RequestSpotLaunchSpecification":{ + "type":"structure", + "members":{ + "ImageId":{ + "shape":"String", + "documentation":"

The ID of the AMI.

", + "locationName":"imageId" + }, + "KeyName":{ + "shape":"String", + "documentation":"

The name of the key pair.

", + "locationName":"keyName" + }, + "SecurityGroups":{ + "shape":"ValueStringList", + "locationName":"SecurityGroup" + }, + "UserData":{ + "shape":"String", + "documentation":"

The Base64-encoded MIME user data to make available to the instances.

", + "locationName":"userData" + }, + "AddressingType":{ + "shape":"String", + "documentation":"

", + "locationName":"addressingType" + }, + "InstanceType":{ + "shape":"InstanceType", + "documentation":"

The instance type.

", + "locationName":"instanceType" + }, + "Placement":{ + "shape":"SpotPlacement", + "documentation":"

The placement information for the instance.

", + "locationName":"placement" + }, + "KernelId":{ + "shape":"String", + "documentation":"

The ID of the kernel.

", + "locationName":"kernelId" + }, + "RamdiskId":{ + "shape":"String", + "documentation":"

The ID of the RAM disk.

", + "locationName":"ramdiskId" + }, + "BlockDeviceMappings":{ + "shape":"BlockDeviceMappingList", + "documentation":"

One or more block device mapping entries.

", + "locationName":"blockDeviceMapping" + }, + "SubnetId":{ + "shape":"String", + "documentation":"

The ID of the subnet in which to launch the Spot Instance.

", + "locationName":"subnetId" + }, + "NetworkInterfaces":{ + "shape":"InstanceNetworkInterfaceSpecificationList", + "documentation":"

One or more network interfaces.

", + "locationName":"NetworkInterface" + }, + "IamInstanceProfile":{ + "shape":"IamInstanceProfileSpecification", + "documentation":"

The IAM instance profile.

", + "locationName":"iamInstanceProfile" + }, + "EbsOptimized":{ + "shape":"Boolean", + "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

", + "locationName":"ebsOptimized" + }, + "Monitoring":{ + "shape":"RunInstancesMonitoringEnabled", + "locationName":"monitoring" + }, + "SecurityGroupIds":{ + "shape":"ValueStringList", + "locationName":"SecurityGroupId" + } + }, + "documentation":"

Describes the launch specification of a Spot Instance.

" + } + } +} diff --git a/ElasticLoadBalancing/AWSElasticLoadBalancing.h b/ElasticLoadBalancing/AWSElasticLoadBalancing.h index 6d4fc312f24..919fa31d627 100644 --- a/ElasticLoadBalancing/AWSElasticLoadBalancing.h +++ b/ElasticLoadBalancing/AWSElasticLoadBalancing.h @@ -20,315 +20,70 @@ @class BFTask; /** - * Elastic Load Balancing

Elastic Load Balancing is a cost-effective and easy to use web service to help you improve the availability and scalability of your application running on Amazon Elastic Cloud Compute (Amazon EC2). It makes it easy for you to distribute application loads between two or more EC2 instances. Elastic Load Balancing supports the growth in traffic of your application by enabling availability through redundancy.

This guide provides detailed information about Elastic Load Balancingactions, data types, and parameters that can be used for sending aquery request. Query requests are HTTP or HTTPS requests that use theHTTP verb GET or POST and a query parameter named Action or Operation.Action is used throughout this documentation, although Operation issupported for backward compatibility with other AWS Query APIs.

For detailed information on constructing a query request using the actions, data types, and parameters mentioned in this guide, go to Using the Query API in the Elastic Load Balancing Developer Guide.

For detailed information about Elastic Load Balancing features and their associated actions, go toUsing Elastic Load Balancing in the Elastic Load Balancing Developer Guide.

This reference guide is based on the current WSDL, which is available at:

Endpoints

The examples in this guide assume that your load balancers are created in the US East (Northern Virginia) region and use us-east-1 as the endpoint.

You can create your load balancers in other AWS regions. For information about regions and endpoints supported by Elastic Load Balancing, seeRegions and Endpointsin the Amazon Web Services General Reference.

+ * */ @interface AWSElasticLoadBalancing : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultElasticLoadBalancing; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; -/** - *

Associates one or more security groups with your load balancer in Amazon Virtual Private Cloud (Amazon VPC).The provided security group IDs will override any currently applied security groups.

For more information, see Manage Security Groups in Amazon VPC in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the ApplySecurityGroupsToLoadBalancer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest, AWSElasticLoadBalancingErrorInvalidSecurityGroup. - * - * @see AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerInput - * @see AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerOutput - */ +- (BFTask *)addTags:(AWSElasticLoadBalancingAddTagsInput *)request; + - (BFTask *)applySecurityGroupsToLoadBalancer:(AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerInput *)request; -/** - *

Adds one or more subnets to the set of configured subnets in the Amazon Virtual Private Cloud (Amazon VPC) for the load balancer.

The load balancers evenly distribute requests across all of the registered subnets.For more information, see Deploy Elastic Load Balancing in Amazon VPC in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the AttachLoadBalancerToSubnets service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingAttachLoadBalancerToSubnetsOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest, AWSElasticLoadBalancingErrorSubnetNotFound, AWSElasticLoadBalancingErrorInvalidSubnet. - * - * @see AWSElasticLoadBalancingAttachLoadBalancerToSubnetsInput - * @see AWSElasticLoadBalancingAttachLoadBalancerToSubnetsOutput - */ - (BFTask *)attachLoadBalancerToSubnets:(AWSElasticLoadBalancingAttachLoadBalancerToSubnetsInput *)request; -/** - *

Specifies the health check settings to use for evaluating the health state of your back-end instances.

For more information, see Health Check in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the ConfigureHealthCheck service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingConfigureHealthCheckOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound. - * - * @see AWSElasticLoadBalancingConfigureHealthCheckInput - * @see AWSElasticLoadBalancingConfigureHealthCheckOutput - */ - (BFTask *)configureHealthCheck:(AWSElasticLoadBalancingConfigureHealthCheckInput *)request; -/** - *

Generates a stickiness policy with sticky session lifetimes that followthat of an application-generated cookie. This policy can be associated only with HTTP/HTTPS listeners.

This policy is similar to the policy created by CreateLBCookieStickinessPolicy,except that the lifetime of the special Elastic Load Balancing cookie follows the lifetime of the application-generated cookie specified in the policy configuration.The load balancer only inserts a new stickiness cookie when the application response includes a new application cookie.

If the application cookie is explicitly removed or expires, the session stops being sticky until a new application cookie is issued.

An application client must receive and send two cookies: the application-generatedcookie and the special Elastic Load Balancing cookie named AWSELB.This is the default behavior for many common web browsers.

For more information, see Enabling Application-Controlled Session Stickiness in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the CreateAppCookieStickinessPolicy service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingCreateAppCookieStickinessPolicyOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorDuplicatePolicyName, AWSElasticLoadBalancingErrorTooManyPolicies, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingCreateAppCookieStickinessPolicyInput - * @see AWSElasticLoadBalancingCreateAppCookieStickinessPolicyOutput - */ - (BFTask *)createAppCookieStickinessPolicy:(AWSElasticLoadBalancingCreateAppCookieStickinessPolicyInput *)request; -/** - *

Generates a stickiness policy with sticky session lifetimes controlled by thelifetime of the browser (user-agent) or a specified expiration period. Thispolicy can be associated only with HTTP/HTTPS listeners.

When a load balancer implements this policy, the load balancer uses a special cookie to track the backend server instance for each request. When the load balancer receives a request, it first checks to see if this cookie is present in the request.If so, the load balancer sends the request to the application server specified in the cookie. If not, the load balancer sends the request to a server that is chosen based on the existing load balancing algorithm.

A cookie is inserted into the response for binding subsequent requests from the same user to that server. The validity of the cookie is based on the cookie expiration time, which isspecified in the policy configuration.

For more information, see Enabling Duration-Based Session Stickiness in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the CreateLBCookieStickinessPolicy service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingCreateLBCookieStickinessPolicyOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorDuplicatePolicyName, AWSElasticLoadBalancingErrorTooManyPolicies, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingCreateLBCookieStickinessPolicyInput - * @see AWSElasticLoadBalancingCreateLBCookieStickinessPolicyOutput - */ - (BFTask *)createLBCookieStickinessPolicy:(AWSElasticLoadBalancingCreateLBCookieStickinessPolicyInput *)request; -/** - *

Creates a new load balancer.

After the call has completed successfully, a new load balancer is created with a unique Domain Name Service (DNS) name. The DNSname includes the name of the AWS region in which the load balancewas created. For example, if your load balancer was created in the United States, the DNS name might end with either of the following:

  • us-east-1.elb.amazonaws.com (for the Northern Virginia Region)
  • us-west-1.elb.amazonaws.com (for the Northern California Region)

For information about the AWS regions supported by Elastic Load Balancing,see Regions and Endpoints.

You can create up to 20 load balancers per region per account.

Elastic Load Balancing supports load balancing your Amazon EC2 instances launched within any one of the following platforms:

- * - * @param request A container for the necessary parameters to execute the CreateLoadBalancer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingCreateAccessPointOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorDuplicateAccessPointName, AWSElasticLoadBalancingErrorTooManyAccessPoints, AWSElasticLoadBalancingErrorCertificateNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest, AWSElasticLoadBalancingErrorSubnetNotFound, AWSElasticLoadBalancingErrorInvalidSubnet, AWSElasticLoadBalancingErrorInvalidSecurityGroup, AWSElasticLoadBalancingErrorInvalidScheme. - * - * @see AWSElasticLoadBalancingCreateAccessPointInput - * @see AWSElasticLoadBalancingCreateAccessPointOutput - */ - (BFTask *)createLoadBalancer:(AWSElasticLoadBalancingCreateAccessPointInput *)request; -/** - *

Creates one or more listeners on a load balancer for the specified port.If a listener with the given port does not already exist, it will be created;otherwise, the properties of the new listener must match the propertiesof the existing listener.

For more information, see Add a Listener to Your Load Balancerin the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the CreateLoadBalancerListeners service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingCreateLoadBalancerListenerOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorDuplicateListener, AWSElasticLoadBalancingErrorCertificateNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingCreateLoadBalancerListenerInput - * @see AWSElasticLoadBalancingCreateLoadBalancerListenerOutput - */ - (BFTask *)createLoadBalancerListeners:(AWSElasticLoadBalancingCreateLoadBalancerListenerInput *)request; -/** - *

Creates a new policy that contains the necessary attributes depending on the policy type. Policies are settings that are saved for your load balancer and that can be applied to the front-end listener, or the back-end application server, depending on your policy type.

- * - * @param request A container for the necessary parameters to execute the CreateLoadBalancerPolicy service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingCreateLoadBalancerPolicyOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorPolicyTypeNotFound, AWSElasticLoadBalancingErrorDuplicatePolicyName, AWSElasticLoadBalancingErrorTooManyPolicies, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingCreateLoadBalancerPolicyInput - * @see AWSElasticLoadBalancingCreateLoadBalancerPolicyOutput - */ - (BFTask *)createLoadBalancerPolicy:(AWSElasticLoadBalancingCreateLoadBalancerPolicyInput *)request; -/** - *

Deletes the specified load balancer.

If attempting to recreate the load balancer, you must reconfigure all the settings. The DNS name associated with a deleted load balancer will no longer be usable. Once deleted, the name and associated DNS record of the load balancer no longer exist and traffic sent to any of its IP addresses will no longer be delivered to back-end instances.

To successfully call this API, you must provide the same account credentials as were used to create the load balancer.

By design, if the load balancer does not exist or has already been deleted, a call to DeleteLoadBalancer action still succeeds. - * - * @param request A container for the necessary parameters to execute the DeleteLoadBalancer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDeleteAccessPointOutput. - * - * @see AWSElasticLoadBalancingDeleteAccessPointInput - * @see AWSElasticLoadBalancingDeleteAccessPointOutput - */ - (BFTask *)deleteLoadBalancer:(AWSElasticLoadBalancingDeleteAccessPointInput *)request; -/** - *

Deletes listeners from the load balancer for the specified port.

- * - * @param request A container for the necessary parameters to execute the DeleteLoadBalancerListeners service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDeleteLoadBalancerListenerOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound. - * - * @see AWSElasticLoadBalancingDeleteLoadBalancerListenerInput - * @see AWSElasticLoadBalancingDeleteLoadBalancerListenerOutput - */ - (BFTask *)deleteLoadBalancerListeners:(AWSElasticLoadBalancingDeleteLoadBalancerListenerInput *)request; -/** - *

Deletes a policy from the load balancer.The specified policy must not be enabled for any listeners.

- * - * @param request A container for the necessary parameters to execute the DeleteLoadBalancerPolicy service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDeleteLoadBalancerPolicyOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingDeleteLoadBalancerPolicyInput - * @see AWSElasticLoadBalancingDeleteLoadBalancerPolicyOutput - */ - (BFTask *)deleteLoadBalancerPolicy:(AWSElasticLoadBalancingDeleteLoadBalancerPolicyInput *)request; -/** - *

Deregisters instances from the load balancer. Once the instance is deregistered, it will stop receiving traffic from the load balancer.

In order to successfully call this API, the same account credentials as those used to create the load balancer must be provided.

For more information, see De-register and Register Amazon EC2 Instancesin the Elastic Load Balancing Developer Guide.

You can use DescribeLoadBalancers to verify if the instance is deregistered from the load balancer.

- * - * @param request A container for the necessary parameters to execute the DeregisterInstancesFromLoadBalancer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDeregisterEndPointsOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidEndPoint. - * - * @see AWSElasticLoadBalancingDeregisterEndPointsInput - * @see AWSElasticLoadBalancingDeregisterEndPointsOutput - */ - (BFTask *)deregisterInstancesFromLoadBalancer:(AWSElasticLoadBalancingDeregisterEndPointsInput *)request; -/** - *

Returns the current state of the specified instances registered with the specified load balancer. If no instances are specified, the state of all the instances registered with the load balancer is returned.

You must provide the same account credentials as those that were used to create the load balancer. - * - * @param request A container for the necessary parameters to execute the DescribeInstanceHealth service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDescribeEndPointStateOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidEndPoint. - * - * @see AWSElasticLoadBalancingDescribeEndPointStateInput - * @see AWSElasticLoadBalancingDescribeEndPointStateOutput - */ - (BFTask *)describeInstanceHealth:(AWSElasticLoadBalancingDescribeEndPointStateInput *)request; -/** - *

Returns detailed information about all of the attributes associated with the specified load balancer.

- * - * @param request A container for the necessary parameters to execute the DescribeLoadBalancerAttributes service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDescribeLoadBalancerAttributesOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorLoadBalancerAttributeNotFound. - * - * @see AWSElasticLoadBalancingDescribeLoadBalancerAttributesInput - * @see AWSElasticLoadBalancingDescribeLoadBalancerAttributesOutput - */ - (BFTask *)describeLoadBalancerAttributes:(AWSElasticLoadBalancingDescribeLoadBalancerAttributesInput *)request; -/** - *

Returns detailed descriptions of the policies.If you specify a load balancer name, the action returns the descriptions of all the policies created for the load balancer.If you specify a policy name associated with your load balancer, the action returns the description of that policy. If you don't specify a load balancer name, the action returns descriptions of the specified sample policies, or descriptions of all the sample policies.The names of the sample policies have the ELBSample- prefix.

- * - * @param request A container for the necessary parameters to execute the DescribeLoadBalancerPolicies service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDescribeLoadBalancerPoliciesOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorPolicyNotFound. - * - * @see AWSElasticLoadBalancingDescribeLoadBalancerPoliciesInput - * @see AWSElasticLoadBalancingDescribeLoadBalancerPoliciesOutput - */ - (BFTask *)describeLoadBalancerPolicies:(AWSElasticLoadBalancingDescribeLoadBalancerPoliciesInput *)request; -/** - *

Returns meta-information on the specified load balancer policies defined by the Elastic Load Balancing service.The policy types that are returned from this action can be used in a CreateLoadBalancerPolicy action to instantiate specific policy configurations that will be applied to a load balancer.

- * - * @param request A container for the necessary parameters to execute the DescribeLoadBalancerPolicyTypes service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorPolicyTypeNotFound. - * - * @see AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesInput - * @see AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesOutput - */ - (BFTask *)describeLoadBalancerPolicyTypes:(AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesInput *)request; -/** - *

Returns detailed configuration information for all the load balancers created for the account. If you specify load balancer names, the action returns configuration information of the specified load balancers.

In order to retrieve this information, you must provide the same account credentialsthat was used to create the load balancer. - * - * @param request A container for the necessary parameters to execute the DescribeLoadBalancers service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDescribeAccessPointsOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound. - * - * @see AWSElasticLoadBalancingDescribeAccessPointsInput - * @see AWSElasticLoadBalancingDescribeAccessPointsOutput - */ - (BFTask *)describeLoadBalancers:(AWSElasticLoadBalancingDescribeAccessPointsInput *)request; -/** - *

Removes subnets from the set of configured subnets in the Amazon Virtual Private Cloud (Amazon VPC) for the load balancer.

After a subnet is removed all of the EC2 instances registered with the load balancer that arein the removed subnet will go into the OutOfService state. When a subnet is removed, the load balancer will balance the traffic among the remaining routable subnets for the load balancer.

- * - * @param request A container for the necessary parameters to execute the DetachLoadBalancerFromSubnets service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsInput - * @see AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsOutput - */ +- (BFTask *)describeTags:(AWSElasticLoadBalancingDescribeTagsInput *)request; + - (BFTask *)detachLoadBalancerFromSubnets:(AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsInput *)request; -/** - *

Removes the specified EC2 Availability Zones from the set of configured Availability Zones for the load balancer.

There must be at least one Availability Zone registered with a load balancer at all times.Once an Availability Zone is removed, all the instances registered with the load balancer that are in the removed Availability Zone go into the OutOfService state. Upon Availability Zone removal, the load balancer attempts to equally balance the traffic among its remaining usable Availability Zones. Trying to remove an Availability Zone that was not associated with the load balancer does nothing.

For more information, see Disable an Availability Zone from a Load-Balanced Application in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the DisableAvailabilityZonesForLoadBalancer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingRemoveAvailabilityZonesOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingRemoveAvailabilityZonesInput - * @see AWSElasticLoadBalancingRemoveAvailabilityZonesOutput - */ - (BFTask *)disableAvailabilityZonesForLoadBalancer:(AWSElasticLoadBalancingRemoveAvailabilityZonesInput *)request; -/** - *

Adds one or more EC2 Availability Zones to the load balancer.

The load balancer evenly distributes requests across all its registered Availability Zones that contain instances.

The new EC2 Availability Zones to be added must be in the same EC2 Region as the Availability Zones for which the load balancer was created.

For more information, see Expand a Load Balanced Application to an Additional Availability Zone in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the EnableAvailabilityZonesForLoadBalancer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingAddAvailabilityZonesOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound. - * - * @see AWSElasticLoadBalancingAddAvailabilityZonesInput - * @see AWSElasticLoadBalancingAddAvailabilityZonesOutput - */ - (BFTask *)enableAvailabilityZonesForLoadBalancer:(AWSElasticLoadBalancingAddAvailabilityZonesInput *)request; -/** - *

Modifies the attributes of a specified load balancer.

You can modify the load balancer attributes, such as AccessLogs, ConnectionDraining, andCrossZoneLoadBalancing by either enabling or disabling them.

For information on cross-zone load balancing, see Request Routing and for information on connection draining, see Connection Drainingin the Concepts section of theElastic Load Balancer Developer Guide. For information on access logs, see Access Logs.

- * - * @param request A container for the necessary parameters to execute the ModifyLoadBalancerAttributes service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingModifyLoadBalancerAttributesOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorLoadBalancerAttributeNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingModifyLoadBalancerAttributesInput - * @see AWSElasticLoadBalancingModifyLoadBalancerAttributesOutput - */ - (BFTask *)modifyLoadBalancerAttributes:(AWSElasticLoadBalancingModifyLoadBalancerAttributesInput *)request; -/** - *

Adds new instances to the load balancer.

Once the instance is registered, it starts receiving traffic and requests from the load balancer. Any instance that is not in any of the Availability Zones registered for the load balancer will be moved to the OutOfService state. It will move to the InService state when the Availability Zone is added to the load balancer.

When an instance registered with a load balancer is stopped and then restarted,the IP addresses associated with the instance changes. Elastic Load Balancingcannot recognize the new IP address, which prevents it from routing traffic to the instances. We recommend that you de-register your Amazon EC2 instances from your load balancer after you stop your instance, and then register the loadbalancer with your instance after you've restarted. To de-register your instancesfrom load balancer, use DeregisterInstancesFromLoadBalancer action.

For more information, see De-register and Register Amazon EC2 Instancesin the Elastic Load Balancing Developer Guide.

In order for this call to be successful, you must provide the sameaccount credentials as those that were used to create the load balancer. Completion of this API does not guarantee that operation has completed. Rather, it means that the request has been registered and the changes will happen shortly.

You can use DescribeLoadBalancers or DescribeInstanceHealth action to check the state of the newly registered instances.

- * - * @param request A container for the necessary parameters to execute the RegisterInstancesWithLoadBalancer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingRegisterEndPointsOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorInvalidEndPoint. - * - * @see AWSElasticLoadBalancingRegisterEndPointsInput - * @see AWSElasticLoadBalancingRegisterEndPointsOutput - */ - (BFTask *)registerInstancesWithLoadBalancer:(AWSElasticLoadBalancingRegisterEndPointsInput *)request; -/** - *

Sets the certificate that terminates the specified listener's SSL connections.The specified certificate replaces any prior certificate that was used on the same load balancer and port.

For more information on updating your SSL certificate, see Updating an SSL Certificate for a Load Balancer in the Elastic Load Balancing Developer Guide.

- * - * @param request A container for the necessary parameters to execute the SetLoadBalancerListenerSSLCertificate service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorCertificateNotFound, AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorListenerNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateInput - * @see AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateOutput - */ +- (BFTask *)removeTags:(AWSElasticLoadBalancingRemoveTagsInput *)request; + - (BFTask *)setLoadBalancerListenerSSLCertificate:(AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateInput *)request; -/** - *

Replaces the current set of policies associated with a port on which the back-end server is listening with a new set of policies. After the policies have been created using CreateLoadBalancerPolicy,they can be applied here as a list. At this time, only the back-end server authentication policy type can be applied to the back-end ports; this policy type is composed of multiple public key policies.

The SetLoadBalancerPoliciesForBackendServer replaces the current set of policies associated with the specified instance port.Every time you use this action to enable the policies, use the PolicyNames parameter to list all the policies you want to enable.

You can use DescribeLoadBalancers or DescribeLoadBalancerPolicies action to verify that the policy has been associated with the back-end server.

- * - * @param request A container for the necessary parameters to execute the SetLoadBalancerPoliciesForBackendServer service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorPolicyNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerInput - * @see AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerOutput - */ - (BFTask *)setLoadBalancerPoliciesForBackendServer:(AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerInput *)request; -/** - *

Associates, updates, or disables a policy with a listener on the load balancer.You can associate multiple policies with a listener.

- * - * @param request A container for the necessary parameters to execute the SetLoadBalancerPoliciesOfListener service method. - * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerOutput. On failed execution, task.error may contain an NSError with AWSElasticLoadBalancingErrorDomain domian and the following error code: AWSElasticLoadBalancingErrorAccessPointNotFound, AWSElasticLoadBalancingErrorPolicyNotFound, AWSElasticLoadBalancingErrorListenerNotFound, AWSElasticLoadBalancingErrorInvalidConfigurationRequest. - * - * @see AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerInput - * @see AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerOutput - */ - (BFTask *)setLoadBalancerPoliciesOfListener:(AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerInput *)request; @end diff --git a/ElasticLoadBalancing/AWSElasticLoadBalancing.m b/ElasticLoadBalancing/AWSElasticLoadBalancing.m index a23b61f65e5..c7299ac389f 100644 --- a/ElasticLoadBalancing/AWSElasticLoadBalancing.m +++ b/ElasticLoadBalancing/AWSElasticLoadBalancing.m @@ -15,8 +15,8 @@ #import "AWSElasticLoadBalancing.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -46,23 +46,25 @@ + (void)initialize { @"IncompleteSignature" : @(AWSElasticLoadBalancingErrorIncompleteSignature), @"InvalidClientTokenId" : @(AWSElasticLoadBalancingErrorInvalidClientTokenId), @"MissingAuthenticationToken" : @(AWSElasticLoadBalancingErrorMissingAuthenticationToken), - @"AccessPointNotFoundException" : @(AWSElasticLoadBalancingErrorAccessPointNotFound), - @"CertificateNotFoundException" : @(AWSElasticLoadBalancingErrorCertificateNotFound), - @"DuplicateAccessPointNameException" : @(AWSElasticLoadBalancingErrorDuplicateAccessPointName), - @"DuplicateListenerException" : @(AWSElasticLoadBalancingErrorDuplicateListener), - @"DuplicatePolicyNameException" : @(AWSElasticLoadBalancingErrorDuplicatePolicyName), - @"InvalidConfigurationRequestException" : @(AWSElasticLoadBalancingErrorInvalidConfigurationRequest), - @"InvalidEndPointException" : @(AWSElasticLoadBalancingErrorInvalidEndPoint), - @"InvalidSchemeException" : @(AWSElasticLoadBalancingErrorInvalidScheme), - @"InvalidSecurityGroupException" : @(AWSElasticLoadBalancingErrorInvalidSecurityGroup), - @"InvalidSubnetException" : @(AWSElasticLoadBalancingErrorInvalidSubnet), - @"ListenerNotFoundException" : @(AWSElasticLoadBalancingErrorListenerNotFound), - @"LoadBalancerAttributeNotFoundException" : @(AWSElasticLoadBalancingErrorLoadBalancerAttributeNotFound), - @"PolicyNotFoundException" : @(AWSElasticLoadBalancingErrorPolicyNotFound), - @"PolicyTypeNotFoundException" : @(AWSElasticLoadBalancingErrorPolicyTypeNotFound), - @"SubnetNotFoundException" : @(AWSElasticLoadBalancingErrorSubnetNotFound), - @"TooManyAccessPointsException" : @(AWSElasticLoadBalancingErrorTooManyAccessPoints), - @"TooManyPoliciesException" : @(AWSElasticLoadBalancingErrorTooManyPolicies), + @"LoadBalancerNotFound" : @(AWSElasticLoadBalancingErrorAccessPointNotFound), + @"CertificateNotFound" : @(AWSElasticLoadBalancingErrorCertificateNotFound), + @"DuplicateLoadBalancerName" : @(AWSElasticLoadBalancingErrorDuplicateAccessPointName), + @"DuplicateListener" : @(AWSElasticLoadBalancingErrorDuplicateListener), + @"DuplicatePolicyName" : @(AWSElasticLoadBalancingErrorDuplicatePolicyName), + @"DuplicateTagKeys" : @(AWSElasticLoadBalancingErrorDuplicateTagKeys), + @"InvalidConfigurationRequest" : @(AWSElasticLoadBalancingErrorInvalidConfigurationRequest), + @"InvalidInstance" : @(AWSElasticLoadBalancingErrorInvalidEndPoint), + @"InvalidScheme" : @(AWSElasticLoadBalancingErrorInvalidScheme), + @"InvalidSecurityGroup" : @(AWSElasticLoadBalancingErrorInvalidSecurityGroup), + @"InvalidSubnet" : @(AWSElasticLoadBalancingErrorInvalidSubnet), + @"ListenerNotFound" : @(AWSElasticLoadBalancingErrorListenerNotFound), + @"LoadBalancerAttributeNotFound" : @(AWSElasticLoadBalancingErrorLoadBalancerAttributeNotFound), + @"PolicyNotFound" : @(AWSElasticLoadBalancingErrorPolicyNotFound), + @"PolicyTypeNotFound" : @(AWSElasticLoadBalancingErrorPolicyTypeNotFound), + @"SubnetNotFound" : @(AWSElasticLoadBalancingErrorSubnetNotFound), + @"TooManyLoadBalancers" : @(AWSElasticLoadBalancingErrorTooManyAccessPoints), + @"TooManyPolicies" : @(AWSElasticLoadBalancingErrorTooManyPolicies), + @"TooManyTags" : @(AWSElasticLoadBalancingErrorTooManyTags), }; } @@ -94,7 +96,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSElasticLoadBalancingErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -102,8 +104,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSElasticLoadBalancingErrorDomain code:AWSElasticLoadBalancingErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } } @@ -125,22 +126,22 @@ @interface AWSElasticLoadBalancingRequestRetryHandler : AWSURLRequestRetryHandle @implementation AWSElasticLoadBalancingRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSElasticLoadBalancingErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSElasticLoadBalancingErrorIncompleteSignature: case AWSElasticLoadBalancingErrorInvalidClientTokenId: case AWSElasticLoadBalancingErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -155,15 +156,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSElasticLoadBalancing() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -187,25 +187,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceElasticLoadBalancing]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceElasticLoadBalancing]; - AWSSignatureV2Signer *signer = [AWSSignatureV2Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSElasticLoadBalancingRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -214,9 +214,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -226,17 +226,26 @@ - (BFTask *)invokeRequest:(AWSRequest *)request networkingRequest.requestSerializer = requestSerializer; networkingRequest.responseSerializer = [AWSElasticLoadBalancingResponseSerializer serializerWithOutputClass:outputClass - resource:AWSELBDefinitionFileName - actionName:operationName]; + resource:AWSELBDefinitionFileName + actionName:operationName]; return [self.networking sendRequest:networkingRequest]; } #pragma mark - Service method +- (BFTask *)addTags:(AWSElasticLoadBalancingAddTagsInput *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"AddTags" + outputClass:[AWSElasticLoadBalancingAddTagsOutput class]]; +} + - (BFTask *)applySecurityGroupsToLoadBalancer:(AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ApplySecurityGroupsToLoadBalancer" @@ -245,7 +254,7 @@ - (BFTask *)applySecurityGroupsToLoadBalancer:(AWSElasticLoadBalancingApplySecur - (BFTask *)attachLoadBalancerToSubnets:(AWSElasticLoadBalancingAttachLoadBalancerToSubnetsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AttachLoadBalancerToSubnets" @@ -254,7 +263,7 @@ - (BFTask *)attachLoadBalancerToSubnets:(AWSElasticLoadBalancingAttachLoadBalanc - (BFTask *)configureHealthCheck:(AWSElasticLoadBalancingConfigureHealthCheckInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ConfigureHealthCheck" @@ -263,7 +272,7 @@ - (BFTask *)configureHealthCheck:(AWSElasticLoadBalancingConfigureHealthCheckInp - (BFTask *)createAppCookieStickinessPolicy:(AWSElasticLoadBalancingCreateAppCookieStickinessPolicyInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateAppCookieStickinessPolicy" @@ -272,7 +281,7 @@ - (BFTask *)createAppCookieStickinessPolicy:(AWSElasticLoadBalancingCreateAppCoo - (BFTask *)createLBCookieStickinessPolicy:(AWSElasticLoadBalancingCreateLBCookieStickinessPolicyInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateLBCookieStickinessPolicy" @@ -281,7 +290,7 @@ - (BFTask *)createLBCookieStickinessPolicy:(AWSElasticLoadBalancingCreateLBCooki - (BFTask *)createLoadBalancer:(AWSElasticLoadBalancingCreateAccessPointInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateLoadBalancer" @@ -290,7 +299,7 @@ - (BFTask *)createLoadBalancer:(AWSElasticLoadBalancingCreateAccessPointInput *) - (BFTask *)createLoadBalancerListeners:(AWSElasticLoadBalancingCreateLoadBalancerListenerInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateLoadBalancerListeners" @@ -299,7 +308,7 @@ - (BFTask *)createLoadBalancerListeners:(AWSElasticLoadBalancingCreateLoadBalanc - (BFTask *)createLoadBalancerPolicy:(AWSElasticLoadBalancingCreateLoadBalancerPolicyInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateLoadBalancerPolicy" @@ -308,7 +317,7 @@ - (BFTask *)createLoadBalancerPolicy:(AWSElasticLoadBalancingCreateLoadBalancerP - (BFTask *)deleteLoadBalancer:(AWSElasticLoadBalancingDeleteAccessPointInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteLoadBalancer" @@ -317,7 +326,7 @@ - (BFTask *)deleteLoadBalancer:(AWSElasticLoadBalancingDeleteAccessPointInput *) - (BFTask *)deleteLoadBalancerListeners:(AWSElasticLoadBalancingDeleteLoadBalancerListenerInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteLoadBalancerListeners" @@ -326,7 +335,7 @@ - (BFTask *)deleteLoadBalancerListeners:(AWSElasticLoadBalancingDeleteLoadBalanc - (BFTask *)deleteLoadBalancerPolicy:(AWSElasticLoadBalancingDeleteLoadBalancerPolicyInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteLoadBalancerPolicy" @@ -335,7 +344,7 @@ - (BFTask *)deleteLoadBalancerPolicy:(AWSElasticLoadBalancingDeleteLoadBalancerP - (BFTask *)deregisterInstancesFromLoadBalancer:(AWSElasticLoadBalancingDeregisterEndPointsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeregisterInstancesFromLoadBalancer" @@ -344,7 +353,7 @@ - (BFTask *)deregisterInstancesFromLoadBalancer:(AWSElasticLoadBalancingDeregist - (BFTask *)describeInstanceHealth:(AWSElasticLoadBalancingDescribeEndPointStateInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeInstanceHealth" @@ -353,7 +362,7 @@ - (BFTask *)describeInstanceHealth:(AWSElasticLoadBalancingDescribeEndPointState - (BFTask *)describeLoadBalancerAttributes:(AWSElasticLoadBalancingDescribeLoadBalancerAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeLoadBalancerAttributes" @@ -362,7 +371,7 @@ - (BFTask *)describeLoadBalancerAttributes:(AWSElasticLoadBalancingDescribeLoadB - (BFTask *)describeLoadBalancerPolicies:(AWSElasticLoadBalancingDescribeLoadBalancerPoliciesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeLoadBalancerPolicies" @@ -371,7 +380,7 @@ - (BFTask *)describeLoadBalancerPolicies:(AWSElasticLoadBalancingDescribeLoadBal - (BFTask *)describeLoadBalancerPolicyTypes:(AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeLoadBalancerPolicyTypes" @@ -380,16 +389,25 @@ - (BFTask *)describeLoadBalancerPolicyTypes:(AWSElasticLoadBalancingDescribeLoad - (BFTask *)describeLoadBalancers:(AWSElasticLoadBalancingDescribeAccessPointsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DescribeLoadBalancers" outputClass:[AWSElasticLoadBalancingDescribeAccessPointsOutput class]]; } +- (BFTask *)describeTags:(AWSElasticLoadBalancingDescribeTagsInput *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"DescribeTags" + outputClass:[AWSElasticLoadBalancingDescribeTagsOutput class]]; +} + - (BFTask *)detachLoadBalancerFromSubnets:(AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DetachLoadBalancerFromSubnets" @@ -398,7 +416,7 @@ - (BFTask *)detachLoadBalancerFromSubnets:(AWSElasticLoadBalancingDetachLoadBala - (BFTask *)disableAvailabilityZonesForLoadBalancer:(AWSElasticLoadBalancingRemoveAvailabilityZonesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DisableAvailabilityZonesForLoadBalancer" @@ -407,7 +425,7 @@ - (BFTask *)disableAvailabilityZonesForLoadBalancer:(AWSElasticLoadBalancingRemo - (BFTask *)enableAvailabilityZonesForLoadBalancer:(AWSElasticLoadBalancingAddAvailabilityZonesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"EnableAvailabilityZonesForLoadBalancer" @@ -416,7 +434,7 @@ - (BFTask *)enableAvailabilityZonesForLoadBalancer:(AWSElasticLoadBalancingAddAv - (BFTask *)modifyLoadBalancerAttributes:(AWSElasticLoadBalancingModifyLoadBalancerAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ModifyLoadBalancerAttributes" @@ -425,16 +443,25 @@ - (BFTask *)modifyLoadBalancerAttributes:(AWSElasticLoadBalancingModifyLoadBalan - (BFTask *)registerInstancesWithLoadBalancer:(AWSElasticLoadBalancingRegisterEndPointsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RegisterInstancesWithLoadBalancer" outputClass:[AWSElasticLoadBalancingRegisterEndPointsOutput class]]; } +- (BFTask *)removeTags:(AWSElasticLoadBalancingRemoveTagsInput *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"" + operationName:@"RemoveTags" + outputClass:[AWSElasticLoadBalancingRemoveTagsOutput class]]; +} + - (BFTask *)setLoadBalancerListenerSSLCertificate:(AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetLoadBalancerListenerSSLCertificate" @@ -443,7 +470,7 @@ - (BFTask *)setLoadBalancerListenerSSLCertificate:(AWSElasticLoadBalancingSetLoa - (BFTask *)setLoadBalancerPoliciesForBackendServer:(AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetLoadBalancerPoliciesForBackendServer" @@ -452,7 +479,7 @@ - (BFTask *)setLoadBalancerPoliciesForBackendServer:(AWSElasticLoadBalancingSetL - (BFTask *)setLoadBalancerPoliciesOfListener:(AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetLoadBalancerPoliciesOfListener" diff --git a/ElasticLoadBalancing/AWSElasticLoadBalancingModel.h b/ElasticLoadBalancing/AWSElasticLoadBalancingModel.h index bf10cb4d08c..0923c8fbcc0 100644 --- a/ElasticLoadBalancing/AWSElasticLoadBalancingModel.h +++ b/ElasticLoadBalancing/AWSElasticLoadBalancingModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSElasticLoadBalancingErrorDomain; @@ -29,6 +29,7 @@ typedef NS_ENUM(NSInteger, AWSElasticLoadBalancingErrorType) { AWSElasticLoadBalancingErrorDuplicateAccessPointName, AWSElasticLoadBalancingErrorDuplicateListener, AWSElasticLoadBalancingErrorDuplicatePolicyName, + AWSElasticLoadBalancingErrorDuplicateTagKeys, AWSElasticLoadBalancingErrorInvalidConfigurationRequest, AWSElasticLoadBalancingErrorInvalidEndPoint, AWSElasticLoadBalancingErrorInvalidScheme, @@ -41,11 +42,14 @@ typedef NS_ENUM(NSInteger, AWSElasticLoadBalancingErrorType) { AWSElasticLoadBalancingErrorSubnetNotFound, AWSElasticLoadBalancingErrorTooManyAccessPoints, AWSElasticLoadBalancingErrorTooManyPolicies, + AWSElasticLoadBalancingErrorTooManyTags, }; @class AWSElasticLoadBalancingAccessLog; @class AWSElasticLoadBalancingAddAvailabilityZonesInput; @class AWSElasticLoadBalancingAddAvailabilityZonesOutput; +@class AWSElasticLoadBalancingAddTagsInput; +@class AWSElasticLoadBalancingAddTagsOutput; @class AWSElasticLoadBalancingAppCookieStickinessPolicy; @class AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerInput; @class AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerOutput; @@ -55,6 +59,7 @@ typedef NS_ENUM(NSInteger, AWSElasticLoadBalancingErrorType) { @class AWSElasticLoadBalancingConfigureHealthCheckInput; @class AWSElasticLoadBalancingConfigureHealthCheckOutput; @class AWSElasticLoadBalancingConnectionDraining; +@class AWSElasticLoadBalancingConnectionSettings; @class AWSElasticLoadBalancingCreateAccessPointInput; @class AWSElasticLoadBalancingCreateAccessPointOutput; @class AWSElasticLoadBalancingCreateAppCookieStickinessPolicyInput; @@ -84,6 +89,8 @@ typedef NS_ENUM(NSInteger, AWSElasticLoadBalancingErrorType) { @class AWSElasticLoadBalancingDescribeLoadBalancerPoliciesOutput; @class AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesInput; @class AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesOutput; +@class AWSElasticLoadBalancingDescribeTagsInput; +@class AWSElasticLoadBalancingDescribeTagsOutput; @class AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsInput; @class AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsOutput; @class AWSElasticLoadBalancingHealthCheck; @@ -106,6 +113,8 @@ typedef NS_ENUM(NSInteger, AWSElasticLoadBalancingErrorType) { @class AWSElasticLoadBalancingRegisterEndPointsOutput; @class AWSElasticLoadBalancingRemoveAvailabilityZonesInput; @class AWSElasticLoadBalancingRemoveAvailabilityZonesOutput; +@class AWSElasticLoadBalancingRemoveTagsInput; +@class AWSElasticLoadBalancingRemoveTagsOutput; @class AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateInput; @class AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateOutput; @class AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerInput; @@ -113,1296 +122,565 @@ typedef NS_ENUM(NSInteger, AWSElasticLoadBalancingErrorType) { @class AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerInput; @class AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerOutput; @class AWSElasticLoadBalancingSourceSecurityGroup; +@class AWSElasticLoadBalancingTag; +@class AWSElasticLoadBalancingTagDescription; +@class AWSElasticLoadBalancingTagKeyOnly; -/** - *

The AccessLog data type.

- * Required parameters: [Enabled] - */ -@interface AWSElasticLoadBalancingAccessLog : AZModel - +@interface AWSElasticLoadBalancingAccessLog : AWSModel -/** - *

The interval for publishing the access logs. You can specify an interval of either 5 minutes or 60 minutes.

Default: 60 minutes

- */ @property (nonatomic, strong) NSNumber *emitInterval; - -/** - *

Specifies whether access log is enabled for the load balancer.

- */ @property (nonatomic, strong) NSNumber *enabled; - -/** - *

The name of the Amazon S3 bucket where the access logs are stored.

- */ @property (nonatomic, strong) NSString *s3BucketName; - -/** - *

The logical hierarchy you created for your Amazon S3 bucket, for example my-bucket-prefix/prod. If the prefix is not provided, the log is placed at the root level of the bucket.

- */ @property (nonatomic, strong) NSString *s3BucketPrefix; @end -/** - *

The input for the EnableAvailabilityZonesForLoadBalancer action.

- * Required parameters: [LoadBalancerName, AvailabilityZones] - */ @interface AWSElasticLoadBalancingAddAvailabilityZonesInput : AWSRequest - -/** - *

A list of new Availability Zones for the load balancer. Each Availability Zone must be in the same region as the load balancer.

- */ @property (nonatomic, strong) NSArray *availabilityZones; - -/** - *

The name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the EnableAvailabilityZonesForLoadBalancer action.

- */ -@interface AWSElasticLoadBalancingAddAvailabilityZonesOutput : AZModel - +@interface AWSElasticLoadBalancingAddAvailabilityZonesOutput : AWSModel -/** - *

An updated list of Availability Zones for the load balancer.

- */ @property (nonatomic, strong) NSArray *availabilityZones; @end -/** - *

The AppCookieStickinessPolicy data type.

- */ -@interface AWSElasticLoadBalancingAppCookieStickinessPolicy : AZModel +@interface AWSElasticLoadBalancingAddTagsInput : AWSRequest + +@property (nonatomic, strong) NSArray *loadBalancerNames; +@property (nonatomic, strong) NSArray *tags; +@end -/** - *

The name of the application cookie used for stickiness.

- */ -@property (nonatomic, strong) NSString *cookieName; +@interface AWSElasticLoadBalancingAddTagsOutput : AWSModel -/** - *

The mnemonic name for the policy being created. The name must be unique within a set of policies for this load balancer.

- */ + +@end + +@interface AWSElasticLoadBalancingAppCookieStickinessPolicy : AWSModel + +@property (nonatomic, strong) NSString *cookieName; @property (nonatomic, strong) NSString *policyName; @end -/** - *

The input for the ApplySecurityGroupsToLoadBalancer action.

- * Required parameters: [LoadBalancerName, SecurityGroups] - */ @interface AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerInput : AWSRequest - -/** - *

The name associated with the load balancer. The name must be unique within the set of load balancers associated with your AWS account.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

A list of security group IDs to associate with your load balancer in VPC. The security group IDs must be provided as the ID and not the security group name (For example, sg-1234).

- */ @property (nonatomic, strong) NSArray *securityGroups; @end -/** - *

The out for the ApplySecurityGroupsToLoadBalancer action.

- */ -@interface AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerOutput : AZModel - +@interface AWSElasticLoadBalancingApplySecurityGroupsToLoadBalancerOutput : AWSModel -/** - *

A list of security group IDs associated with your load balancer.

- */ @property (nonatomic, strong) NSArray *securityGroups; @end -/** - *

The input for the AttachLoadBalancerToSubnets action.

- * Required parameters: [LoadBalancerName, Subnets] - */ @interface AWSElasticLoadBalancingAttachLoadBalancerToSubnetsInput : AWSRequest - -/** - *

The name associated with the load balancer. The name must be unique within the set of load balancers associated with your AWS account.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

A list of subnet IDs to add for the load balancer. You can add only one subnet per Availability Zone.

- */ @property (nonatomic, strong) NSArray *subnets; @end -/** - *

The output for the AttachLoadBalancerToSubnets action.

- */ -@interface AWSElasticLoadBalancingAttachLoadBalancerToSubnetsOutput : AZModel - +@interface AWSElasticLoadBalancingAttachLoadBalancerToSubnetsOutput : AWSModel -/** - *

A list of subnet IDs attached to the load balancer.

- */ @property (nonatomic, strong) NSArray *subnets; @end -/** - *

This data type is used as a response element in the DescribeLoadBalancers action to describe the configuration of the back-end server.

- */ -@interface AWSElasticLoadBalancingBackendServerDescription : AZModel - +@interface AWSElasticLoadBalancingBackendServerDescription : AWSModel -/** - *

Provides the port on which the back-end server is listening.

- */ @property (nonatomic, strong) NSNumber *instancePort; - -/** - *

Provides a list of policy names enabled for the back-end server.

- */ @property (nonatomic, strong) NSArray *policyNames; @end -/** - *

Input for the ConfigureHealthCheck action.

- * Required parameters: [LoadBalancerName, HealthCheck] - */ @interface AWSElasticLoadBalancingConfigureHealthCheckInput : AWSRequest - -/** - *

A structure containing the configuration information for the new healthcheck.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingHealthCheck *healthCheck; - -/** - *

The mnemonic name associated with the load balancer. The name must be unique within the set of load balancers associated with your AWS account.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the ConfigureHealthCheck action.

- */ -@interface AWSElasticLoadBalancingConfigureHealthCheckOutput : AZModel - +@interface AWSElasticLoadBalancingConfigureHealthCheckOutput : AWSModel -/** - *

The updated healthcheck for the instances.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingHealthCheck *healthCheck; @end -/** - *

The ConnectionDraining data type.

- * Required parameters: [Enabled] - */ -@interface AWSElasticLoadBalancingConnectionDraining : AZModel - +@interface AWSElasticLoadBalancingConnectionDraining : AWSModel -/** - *

Specifies whether connection draining is enabled for the load balancer.

- */ @property (nonatomic, strong) NSNumber *enabled; - -/** - *

Specifies the maximum time (in seconds) to keep the existing connections open before deregistering the instances.

- */ @property (nonatomic, strong) NSNumber *timeout; @end -/** - *

The input for the CreateLoadBalancer action.

- * Required parameters: [LoadBalancerName, Listeners] - */ -@interface AWSElasticLoadBalancingCreateAccessPointInput : AWSRequest +@interface AWSElasticLoadBalancingConnectionSettings : AWSModel +@property (nonatomic, strong) NSNumber *idleTimeout; -/** - *

A list of Availability Zones.

At least one Availability Zone must be specified. Specified Availability Zones must be in the same EC2 Region as the load balancer. Traffic will be equally distributed across all zones.

You can later add more Availability Zones after the creation of theload balancer by calling EnableAvailabilityZonesForLoadBalancer action.

- */ -@property (nonatomic, strong) NSArray *availabilityZones; +@end -/** - *

A list of the following tuples: LoadBalancerPort, InstancePort, and Protocol.

- */ -@property (nonatomic, strong) NSArray *listeners; +@interface AWSElasticLoadBalancingCreateAccessPointInput : AWSRequest -/** - *

The name associated with the load balancer. The name must be unique within your set of load balancers.

- */ +@property (nonatomic, strong) NSArray *availabilityZones; +@property (nonatomic, strong) NSArray *listeners; @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

The type of a load balancer.

By default, Elastic Load Balancing creates an Internet-facing load balancer with a publicly resolvable DNS name, which resolves to public IP addresses. For more informationabout Internet-facing and Internal load balancers,see Internet-facing and Internal Load Balancers.

Specify the value internal for this option to create an internal load balancer with a DNS name that resolves to private IP addresses.

This option is only available for load balancers created within EC2-VPC.

- */ @property (nonatomic, strong) NSString *scheme; - -/** - *

The security groups to assign to your load balancer within your VPC.

- */ @property (nonatomic, strong) NSArray *securityGroups; - -/** - *

A list of subnet IDs in your VPC to attach to your load balancer. Specify one subnet per Availability Zone.

- */ @property (nonatomic, strong) NSArray *subnets; +@property (nonatomic, strong) NSArray *tags; @end -/** - *

The output for the CreateLoadBalancer action.

- */ -@interface AWSElasticLoadBalancingCreateAccessPointOutput : AZModel - +@interface AWSElasticLoadBalancingCreateAccessPointOutput : AWSModel -/** - *

The DNS name for the load balancer.

- */ @property (nonatomic, strong) NSString *DNSName; @end -/** - *

The input for the CreateAppCookieStickinessPolicy action.

- * Required parameters: [LoadBalancerName, PolicyName, CookieName] - */ @interface AWSElasticLoadBalancingCreateAppCookieStickinessPolicyInput : AWSRequest - -/** - *

Name of the application cookie used for stickiness.

- */ @property (nonatomic, strong) NSString *cookieName; - -/** - *

The name of the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

The name of the policy being created.The name must be unique within the set of policies for this load balancer.

- */ @property (nonatomic, strong) NSString *policyName; @end -/** - *

The output for the CreateAppCookieStickinessPolicy action.

- */ -@interface AWSElasticLoadBalancingCreateAppCookieStickinessPolicyOutput : AZModel +@interface AWSElasticLoadBalancingCreateAppCookieStickinessPolicyOutput : AWSModel @end -/** - *

The input for the CreateLBCookieStickinessPolicy action.

- * Required parameters: [LoadBalancerName, PolicyName] - */ @interface AWSElasticLoadBalancingCreateLBCookieStickinessPolicyInput : AWSRequest - -/** - *

The time period in seconds after which the cookie should be considered stale.Not specifying this parameter indicates that the sticky session will last for the durationof the browser session.

- */ @property (nonatomic, strong) NSNumber *cookieExpirationPeriod; - -/** - *

The name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

The name of the policy being created.The name must be unique within the set of policies for this load balancer.

- */ @property (nonatomic, strong) NSString *policyName; @end -/** - *

The output for the CreateLBCookieStickinessPolicy action.

- */ -@interface AWSElasticLoadBalancingCreateLBCookieStickinessPolicyOutput : AZModel +@interface AWSElasticLoadBalancingCreateLBCookieStickinessPolicyOutput : AWSModel @end -/** - *

The input for the CreateLoadBalancerListeners action.

- * Required parameters: [LoadBalancerName, Listeners] - */ @interface AWSElasticLoadBalancingCreateLoadBalancerListenerInput : AWSRequest - -/** - *

A list of LoadBalancerPort,InstancePort,Protocol, andSSLCertificateId items.

- */ @property (nonatomic, strong) NSArray *listeners; - -/** - *

The name of the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the CreateLoadBalancerListeners action.

- */ -@interface AWSElasticLoadBalancingCreateLoadBalancerListenerOutput : AZModel +@interface AWSElasticLoadBalancingCreateLoadBalancerListenerOutput : AWSModel @end @interface AWSElasticLoadBalancingCreateLoadBalancerPolicyInput : AWSRequest - -/** - *

The name associated with the LoadBalancer for which the policy is being created.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

A list of attributes associated with the policy being created.

- */ @property (nonatomic, strong) NSArray *policyAttributes; - -/** - *

The name of the load balancer policy being created. The name must be unique within the set of policies for this load balancer.

- */ @property (nonatomic, strong) NSString *policyName; - -/** - *

The name of the base policy type being used to create this policy. To get the list of policy types, use the DescribeLoadBalancerPolicyTypes action.

- */ @property (nonatomic, strong) NSString *policyTypeName; @end -/** - *

The output for the CreateLoadBalancerPolicy action.

- */ -@interface AWSElasticLoadBalancingCreateLoadBalancerPolicyOutput : AZModel +@interface AWSElasticLoadBalancingCreateLoadBalancerPolicyOutput : AWSModel @end -/** - *

The CrossZoneLoadBalancing data type.

- * Required parameters: [Enabled] - */ -@interface AWSElasticLoadBalancingCrossZoneLoadBalancing : AZModel - +@interface AWSElasticLoadBalancingCrossZoneLoadBalancing : AWSModel -/** - *

Specifies whether cross-zone load balancing is enabled for the load balancer.

- */ @property (nonatomic, strong) NSNumber *enabled; @end -/** - *

The input for the DeleteLoadBalancer action.

- * Required parameters: [LoadBalancerName] - */ @interface AWSElasticLoadBalancingDeleteAccessPointInput : AWSRequest - -/** - *

The name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the DeleteLoadBalancer action.

- */ -@interface AWSElasticLoadBalancingDeleteAccessPointOutput : AZModel +@interface AWSElasticLoadBalancingDeleteAccessPointOutput : AWSModel @end -/** - *

The input for the DeleteLoadBalancerListeners action.

- * Required parameters: [LoadBalancerName, LoadBalancerPorts] - */ @interface AWSElasticLoadBalancingDeleteLoadBalancerListenerInput : AWSRequest - -/** - *

The mnemonic name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

The client port number(s) of the load balancer listener(s) to be removed.

- */ @property (nonatomic, strong) NSArray *loadBalancerPorts; @end -/** - *

The output for the DeleteLoadBalancerListeners action.

- */ -@interface AWSElasticLoadBalancingDeleteLoadBalancerListenerOutput : AZModel +@interface AWSElasticLoadBalancingDeleteLoadBalancerListenerOutput : AWSModel @end -/** - *

The input for the DeleteLoadBalancerPolicy action.

- * Required parameters: [LoadBalancerName, PolicyName] - */ @interface AWSElasticLoadBalancingDeleteLoadBalancerPolicyInput : AWSRequest - -/** - *

The mnemonic name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

The mnemonic name for the policy being deleted.

- */ @property (nonatomic, strong) NSString *policyName; @end -/** - *

The output for the DeleteLoadBalancerPolicy action.

- */ -@interface AWSElasticLoadBalancingDeleteLoadBalancerPolicyOutput : AZModel +@interface AWSElasticLoadBalancingDeleteLoadBalancerPolicyOutput : AWSModel @end -/** - *

The input for the DeregisterInstancesFromLoadBalancer action.

- * Required parameters: [LoadBalancerName, Instances] - */ @interface AWSElasticLoadBalancingDeregisterEndPointsInput : AWSRequest - -/** - *

A list of EC2 instance IDs consisting of all instances to be deregistered.

- */ @property (nonatomic, strong) NSArray *instances; - -/** - *

The name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the DeregisterInstancesFromLoadBalancer action.

- */ -@interface AWSElasticLoadBalancingDeregisterEndPointsOutput : AZModel - +@interface AWSElasticLoadBalancingDeregisterEndPointsOutput : AWSModel -/** - *

An updated list of remaining instances registered with the load balancer.

- */ @property (nonatomic, strong) NSArray *instances; @end -/** - *

The input for the DescribeLoadBalancers action.

- */ @interface AWSElasticLoadBalancingDescribeAccessPointsInput : AWSRequest - -/** - *

A list of load balancer names associated with the account.

- */ @property (nonatomic, strong) NSArray *loadBalancerNames; - -/** - *

An optional parameter reserved for future use.

- */ @property (nonatomic, strong) NSString *marker; +@property (nonatomic, strong) NSNumber *pageSize; @end -/** - *

The output for the DescribeLoadBalancers action.

- */ -@interface AWSElasticLoadBalancingDescribeAccessPointsOutput : AZModel - +@interface AWSElasticLoadBalancingDescribeAccessPointsOutput : AWSModel -/** - *

A list of load balancer description structures.

- */ @property (nonatomic, strong) NSArray *loadBalancerDescriptions; - -/** - *

An optional parameter reserved for future use.

- */ @property (nonatomic, strong) NSString *nextMarker; @end -/** - *

The input for the DescribeEndPointState action.

- * Required parameters: [LoadBalancerName] - */ @interface AWSElasticLoadBalancingDescribeEndPointStateInput : AWSRequest - -/** - *

A list of instance IDs whose states are being queried.

- */ @property (nonatomic, strong) NSArray *instances; - -/** - *

The name of the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the DescribeInstanceHealth action.

- */ -@interface AWSElasticLoadBalancingDescribeEndPointStateOutput : AZModel - +@interface AWSElasticLoadBalancingDescribeEndPointStateOutput : AWSModel -/** - *

A list containing health information for the specified instances.

- */ @property (nonatomic, strong) NSArray *instanceStates; @end -/** - *

The input for the DescribeLoadBalancerAttributes action.

- * Required parameters: [LoadBalancerName] - */ @interface AWSElasticLoadBalancingDescribeLoadBalancerAttributesInput : AWSRequest - -/** - *

The name of the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The following element is returned in a structure named DescribeLoadBalancerAttributesResult.

- */ -@interface AWSElasticLoadBalancingDescribeLoadBalancerAttributesOutput : AZModel - +@interface AWSElasticLoadBalancingDescribeLoadBalancerAttributesOutput : AWSModel -/** - *

The load balancer attributes structure.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingLoadBalancerAttributes *loadBalancerAttributes; @end @interface AWSElasticLoadBalancingDescribeLoadBalancerPoliciesInput : AWSRequest - -/** - *

The mnemonic name associated with the load balancer. If no name is specified, the operation returns the attributes of either all the sample policies pre-defined by Elastic Load Balancing or the specified sample polices.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

The names of load balancer policies you've created or Elastic Load Balancing sample policy names.

- */ @property (nonatomic, strong) NSArray *policyNames; @end -/** - *

The output for the DescribeLoadBalancerPolicies action.

- */ -@interface AWSElasticLoadBalancingDescribeLoadBalancerPoliciesOutput : AZModel - +@interface AWSElasticLoadBalancingDescribeLoadBalancerPoliciesOutput : AWSModel -/** - *

A list of policy description structures.

- */ @property (nonatomic, strong) NSArray *policyDescriptions; @end @interface AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesInput : AWSRequest - -/** - *

Specifies the name of the policy types.If no names are specified, returns the description of all the policy types defined by Elastic Load Balancing service.

- */ @property (nonatomic, strong) NSArray *policyTypeNames; @end -/** - *

The output for the DescribeLoadBalancerPolicyTypes action.

- */ -@interface AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesOutput : AZModel - +@interface AWSElasticLoadBalancingDescribeLoadBalancerPolicyTypesOutput : AWSModel -/** - *

List of policy type description structures of the specified policy type. If no policy type names are specified, returns the description of all the policy types defined by Elastic Load Balancing service.

- */ @property (nonatomic, strong) NSArray *policyTypeDescriptions; @end -/** - *

The input for the DetachLoadBalancerFromSubnets action.

- * Required parameters: [LoadBalancerName, Subnets] - */ -@interface AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsInput : AWSRequest +@interface AWSElasticLoadBalancingDescribeTagsInput : AWSRequest +@property (nonatomic, strong) NSArray *loadBalancerNames; -/** - *

The name associated with the load balancer to be detached.

- */ -@property (nonatomic, strong) NSString *loadBalancerName; +@end -/** - *

A list of subnet IDs to remove from the set of configured subnets for the load balancer.

- */ -@property (nonatomic, strong) NSArray *subnets; +@interface AWSElasticLoadBalancingDescribeTagsOutput : AWSModel -@end +@property (nonatomic, strong) NSArray *tagDescriptions; -/** - *

The output for the DetachLoadBalancerFromSubnets action.

- */ -@interface AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsOutput : AZModel +@end +@interface AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsInput : AWSRequest -/** - *

A list of subnet IDs the load balancer is now attached to.

- */ +@property (nonatomic, strong) NSString *loadBalancerName; @property (nonatomic, strong) NSArray *subnets; @end -/** - *

The HealthCheck data type.

- * Required parameters: [Target, Interval, Timeout, UnhealthyThreshold, HealthyThreshold] - */ -@interface AWSElasticLoadBalancingHealthCheck : AZModel +@interface AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsOutput : AWSModel +@property (nonatomic, strong) NSArray *subnets; -/** - *

Specifies the number of consecutive health probe successes required before moving the instance to the Healthy state.

- */ -@property (nonatomic, strong) NSNumber *healthyThreshold; +@end -/** - *

Specifies the approximate interval, in seconds, between health checks of an individual instance.

- */ -@property (nonatomic, strong) NSNumber *interval; +@interface AWSElasticLoadBalancingHealthCheck : AWSModel -/** - *

Specifies the instance being checked. The protocol is either TCP, HTTP, HTTPS, or SSL. The range of valid ports is one (1) through 65535.

TCP is the default, specified as a TCP: port pair, for example "TCP:5000". In this case a healthcheck simply attempts to open a TCP connection to the instance on the specified port. Failure to connect within the configured timeout is considered unhealthy.

SSL is also specified as SSL: port pair, for example, SSL:5000.

For HTTP or HTTPS protocol, the situation is different. You have to include a ping path in the string. HTTP is specified as a HTTP:port;/;PathToPing; grouping, for example "HTTP:80/weather/us/wa/seattle". In this case, a HTTP GET request is issued to the instance on the given port and path. Any answer other than "200 OK" within the timeout period is considered unhealthy.

The total length of the HTTP ping target needs to be 1024 16-bit Unicode characters or less.

- */ +@property (nonatomic, strong) NSNumber *healthyThreshold; +@property (nonatomic, strong) NSNumber *interval; @property (nonatomic, strong) NSString *target; - -/** - *

Specifies the amount of time, in seconds, during which no response means a failed health probe.

This value must be less than the Interval value. - */ @property (nonatomic, strong) NSNumber *timeout; - -/** - *

Specifies the number of consecutive health probe failures required before moving the instance to the Unhealthy state.

- */ @property (nonatomic, strong) NSNumber *unhealthyThreshold; @end -/** - *

The Instance data type.

- */ -@interface AWSElasticLoadBalancingInstance : AZModel - +@interface AWSElasticLoadBalancingInstance : AWSModel -/** - *

Provides an EC2 instance ID.

- */ @property (nonatomic, strong) NSString *instanceId; @end -/** - *

The InstanceState data type.

- */ -@interface AWSElasticLoadBalancingInstanceState : AZModel - +@interface AWSElasticLoadBalancingInstanceState : AWSModel -/** - *

Provides a description of the instance state.

- */ -@property (nonatomic, strong) NSString *description; - -/** - *

Provides an EC2 instance ID.

- */ +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSString *instanceId; - -/** - *

Provides information about the cause of OutOfService instances. Specifically, it indicates whether the cause is Elastic Load Balancing or the instance behind the load balancer.

Valid value: ELB|Instance|N/A

- */ @property (nonatomic, strong) NSString *reasonCode; - -/** - *

Specifies the current state of the instance.

Valid value: InService|OutOfService

- */ @property (nonatomic, strong) NSString *state; @end -/** - *

The LBCookieStickinessPolicy data type.

- */ -@interface AWSElasticLoadBalancingLBCookieStickinessPolicy : AZModel - +@interface AWSElasticLoadBalancingLBCookieStickinessPolicy : AWSModel -/** - *

The time period in seconds after which the cookie should be considered stale. Not specifying this parameter indicates that the stickiness session will last for the duration of the browser session.

- */ @property (nonatomic, strong) NSNumber *cookieExpirationPeriod; - -/** - *

The name for the policy being created. The name must be unique within the set of policies for this load balancer.

- */ @property (nonatomic, strong) NSString *policyName; @end -/** - *

The Listener data type.

- * Required parameters: [Protocol, LoadBalancerPort, InstancePort] - */ -@interface AWSElasticLoadBalancingListener : AZModel - +@interface AWSElasticLoadBalancingListener : AWSModel -/** - *

Specifies the TCP port on which the instance server is listening. This property cannot be modified for the life of the load balancer.

- */ @property (nonatomic, strong) NSNumber *instancePort; - -/** - *

Specifies the protocol to use for routing traffic to back-end instances - HTTP, HTTPS, TCP, or SSL. This property cannot be modified for the life of the load balancer.

If the front-end protocol is HTTP or HTTPS, InstanceProtocol has to be at the same protocol layer, i.e., HTTP or HTTPS. Likewise, if the front-end protocol is TCP or SSL, InstanceProtocol has to be TCP or SSL. If there is another listener with the same InstancePort whose InstanceProtocol is secure, i.e., HTTPS or SSL, the listener's InstanceProtocol has to be secure, i.e., HTTPS or SSL.If there is another listener with the same InstancePort whose InstanceProtocol is HTTP or TCP, the listener's InstanceProtocol must be either HTTP or TCP. - */ @property (nonatomic, strong) NSString *instanceProtocol; - -/** - *

Specifies the external load balancer port number. This property cannot be modified for the life of the load balancer.

- */ @property (nonatomic, strong) NSNumber *loadBalancerPort; - -/** - *

Specifies the load balancer transport protocol to use for routing - HTTP, HTTPS, TCP or SSL. This property cannot be modified for the life of the load balancer.

- */ @property (nonatomic, strong) NSString *protocol; - -/** - *

The ARN string of the server certificate.To get the ARN of the server certificate, call the AWS Identity and Access Management UploadServerCertificate API.

- */ @property (nonatomic, strong) NSString *SSLCertificateId; @end -/** - *

The ListenerDescription data type.

- */ -@interface AWSElasticLoadBalancingListenerDescription : AZModel - +@interface AWSElasticLoadBalancingListenerDescription : AWSModel -/** - *

The Listener data type.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingListener *listener; - -/** - *

A list of policies enabled for this listener.An empty list indicates that no policies are enabled.

- */ @property (nonatomic, strong) NSArray *policyNames; @end -/** - *

The LoadBalancerAttributes data type.

- */ -@interface AWSElasticLoadBalancingLoadBalancerAttributes : AZModel - +@interface AWSElasticLoadBalancingLoadBalancerAttributes : AWSModel -/** - *

The name of the load balancer attribute. If enabled, the load balancer captures detailed information of all the requests and delivers the information to the Amazon S3 bucket you specify.

For more information, see Enable Access Logs.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingAccessLog *accessLog; - -/** - *

The name of the load balancer attribute. If enabled, the load balancer allows existing requests to complete before the load balancer shifts traffic away from a deregistered or unhealthy back-end instance.

For more information, see Enable Connection Draining.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingConnectionDraining *connectionDraining; - -/** - *

The name of the load balancer attribute. If enabled, the load balancer routes the request traffic evenly across all back-end instances regardless of the Availability Zones.

For more information, see Enable Cross-Zone Load Balancing.

- */ +@property (nonatomic, strong) AWSElasticLoadBalancingConnectionSettings *connectionSettings; @property (nonatomic, strong) AWSElasticLoadBalancingCrossZoneLoadBalancing *crossZoneLoadBalancing; @end -/** - *

Contains the result of a successful invocation of DescribeLoadBalancers.

- */ -@interface AWSElasticLoadBalancingLoadBalancerDescription : AZModel - +@interface AWSElasticLoadBalancingLoadBalancerDescription : AWSModel -/** - *

Specifies a list of Availability Zones.

- */ @property (nonatomic, strong) NSArray *availabilityZones; - -/** - *

Contains a list of back-end server descriptions.

- */ @property (nonatomic, strong) NSArray *backendServerDescriptions; - -/** - *

Provides the name of the Amazon Route 53 hosted zone that is associated with the load balancer. For information on how to associate your load balancer with a hosted zone, go to Using Domain Names With Elastic Load Balancing in the Elastic Load Balancing Developer Guide.

- */ @property (nonatomic, strong) NSString *canonicalHostedZoneName; - -/** - *

Provides the ID of the Amazon Route 53 hosted zone name that is associated with the load balancer. For information on how to associate or disassociate your load balancer with a hosted zone, go to Using Domain Names With Elastic Load Balancing in the Elastic Load Balancing Developer Guide.

- */ @property (nonatomic, strong) NSString *canonicalHostedZoneNameID; - -/** - *

Provides the date and time the load balancer was created.

- */ @property (nonatomic, strong) NSDate *createdTime; - -/** - *

Specifies the external DNS name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *DNSName; - -/** - *

Specifies information regarding the various health probes conducted on the load balancer.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingHealthCheck *healthCheck; - -/** - *

Provides a list of EC2 instance IDs for the load balancer.

- */ @property (nonatomic, strong) NSArray *instances; - -/** - *

LoadBalancerPort, InstancePort, Protocol, InstanceProtocol, and PolicyNames are returned in a list of tuples in the ListenerDescriptions element.

- */ @property (nonatomic, strong) NSArray *listenerDescriptions; - -/** - *

Specifies the name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

Provides a list of policies defined for the load balancer.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingPolicies *policies; - -/** - *

Specifies the type of load balancer.

If the Schemeis internet-facing, the load balancer has a publicly resolvable DNS name that resolves to public IP addresses.

If the Schemeis internal, the load balancer has a publicly resolvableDNS name that resolves to private IP addresses.

This option is only available for load balancers attached to an Amazon VPC.

- */ @property (nonatomic, strong) NSString *scheme; - -/** - *

The security groups the load balancer is a member of (VPC only).

- */ @property (nonatomic, strong) NSArray *securityGroups; - -/** - *

The security group that you can use as part of your inbound rules foryour load balancer's back-end Amazon EC2 application instances. To only allow traffic from load balancers, add a security group rule to your back end instance that specifies this source security group as the inbound source.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingSourceSecurityGroup *sourceSecurityGroup; - -/** - *

Provides a list of VPC subnet IDs for the load balancer.

- */ @property (nonatomic, strong) NSArray *subnets; - -/** - *

Provides the ID of the VPC attached to the load balancer.

- */ @property (nonatomic, strong) NSString *VPCId; @end -/** - *

The input for the ModifyLoadBalancerAttributes action.

- * Required parameters: [LoadBalancerName, LoadBalancerAttributes] - */ @interface AWSElasticLoadBalancingModifyLoadBalancerAttributesInput : AWSRequest - -/** - *

Attributes of the load balancer.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingLoadBalancerAttributes *loadBalancerAttributes; - -/** - *

The name of the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the ModifyLoadBalancerAttributes action.

- */ -@interface AWSElasticLoadBalancingModifyLoadBalancerAttributesOutput : AZModel - +@interface AWSElasticLoadBalancingModifyLoadBalancerAttributesOutput : AWSModel -/** - *

The LoadBalancerAttributes data type.

- */ @property (nonatomic, strong) AWSElasticLoadBalancingLoadBalancerAttributes *loadBalancerAttributes; - -/** - *

The name of the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The policies data type.

- */ -@interface AWSElasticLoadBalancingPolicies : AZModel - +@interface AWSElasticLoadBalancingPolicies : AWSModel -/** - *

A list of the AppCookieStickinessPolicy objects created with CreateAppCookieStickinessPolicy.

- */ @property (nonatomic, strong) NSArray *appCookieStickinessPolicies; - -/** - *

A list of LBCookieStickinessPolicy objects created with CreateAppCookieStickinessPolicy.

- */ @property (nonatomic, strong) NSArray *LBCookieStickinessPolicies; - -/** - *

A list of policy names other than the stickiness policies.

- */ @property (nonatomic, strong) NSArray *otherPolicies; @end -/** - *

The PolicyAttribute data type.This data type contains a key/value pair that defines properties of a specific policy.

- */ -@interface AWSElasticLoadBalancingPolicyAttribute : AZModel - +@interface AWSElasticLoadBalancingPolicyAttribute : AWSModel -/** - *

The name of the attribute associated with the policy.

- */ @property (nonatomic, strong) NSString *attributeName; - -/** - *

The value of the attribute associated with the policy.

- */ @property (nonatomic, strong) NSString *attributeValue; @end -/** - *

The PolicyAttributeDescription data type. This data type is used to describe the attributes and values associated with a policy.

- */ -@interface AWSElasticLoadBalancingPolicyAttributeDescription : AZModel +@interface AWSElasticLoadBalancingPolicyAttributeDescription : AWSModel - -/** - *

The name of the attribute associated with the policy.

- */ @property (nonatomic, strong) NSString *attributeName; - -/** - *

The value of the attribute associated with the policy.

- */ @property (nonatomic, strong) NSString *attributeValue; @end -/** - *

The PolicyAttributeTypeDescription data type. This data type is used to describe values that are acceptable for the policy attribute.

- */ -@interface AWSElasticLoadBalancingPolicyAttributeTypeDescription : AZModel - +@interface AWSElasticLoadBalancingPolicyAttributeTypeDescription : AWSModel -/** - *

The name of the attribute associated with the policy type.

- */ @property (nonatomic, strong) NSString *attributeName; - -/** - *

The type of attribute.For example, Boolean, Integer, etc.

- */ @property (nonatomic, strong) NSString *attributeType; - -/** - *

The cardinality of the attribute.Valid Values:

  • ONE(1) : Single value required
  • ZERO_OR_ONE(0..1) : Up to one value can be supplied
  • ZERO_OR_MORE(0..*) : Optional. Multiple values are allowed
  • ONE_OR_MORE(1..*0) : Required.Multiple values are allowed

- */ @property (nonatomic, strong) NSString *cardinality; - -/** - *

The default value of the attribute, if applicable.

- */ @property (nonatomic, strong) NSString *defaultValue; - -/** - *

A human-readable description of the attribute.

- */ -@property (nonatomic, strong) NSString *description; +@property (nonatomic, strong) NSString *detail; @end -/** - *

The PolicyDescription data type.

- */ -@interface AWSElasticLoadBalancingPolicyDescription : AZModel - +@interface AWSElasticLoadBalancingPolicyDescription : AWSModel -/** - *

A list of policy attribute description structures.

- */ @property (nonatomic, strong) NSArray *policyAttributeDescriptions; - -/** - *

The name of the policy associated with the load balancer.

- */ @property (nonatomic, strong) NSString *policyName; - -/** - *

The name of the policy type associated with the load balancer.

- */ @property (nonatomic, strong) NSString *policyTypeName; @end -/** - *

The PolicyTypeDescription data type.

- */ -@interface AWSElasticLoadBalancingPolicyTypeDescription : AZModel - +@interface AWSElasticLoadBalancingPolicyTypeDescription : AWSModel -/** - *

A human-readable description of the policy type.

- */ -@property (nonatomic, strong) NSString *description; - -/** - *

The description of the policy attributes associated with the load balancer policies defined by the Elastic Load Balancing service.

- */ +@property (nonatomic, strong) NSString *detail; @property (nonatomic, strong) NSArray *policyAttributeTypeDescriptions; - -/** - *

The name of the policy type.

- */ @property (nonatomic, strong) NSString *policyTypeName; @end -/** - *

The input for the RegisterInstancesWithLoadBalancer action.

- * Required parameters: [LoadBalancerName, Instances] - */ @interface AWSElasticLoadBalancingRegisterEndPointsInput : AWSRequest - -/** - *

A list of instance IDs that should be registered with the load balancer.

- */ @property (nonatomic, strong) NSArray *instances; - -/** - *

The name associated with the load balancer. The name must be unique within your set of load balancers.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the RegisterInstancesWithLoadBalancer action.

- */ -@interface AWSElasticLoadBalancingRegisterEndPointsOutput : AZModel - +@interface AWSElasticLoadBalancingRegisterEndPointsOutput : AWSModel -/** - *

An updated list of instances for the load balancer.

- */ @property (nonatomic, strong) NSArray *instances; @end -/** - *

The input for the DisableAvailabilityZonesForLoadBalancer action.

- * Required parameters: [LoadBalancerName, AvailabilityZones] - */ @interface AWSElasticLoadBalancingRemoveAvailabilityZonesInput : AWSRequest - -/** - *

A list of Availability Zones to be removed from the load balancer.

There must be at least one Availability Zone registered with a load balancer at all times.Specified Availability Zones must be in the same region. - */ @property (nonatomic, strong) NSArray *availabilityZones; - -/** - *

The name associated with the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; @end -/** - *

The output for the DisableAvailabilityZonesForLoadBalancer action.

- */ -@interface AWSElasticLoadBalancingRemoveAvailabilityZonesOutput : AZModel - +@interface AWSElasticLoadBalancingRemoveAvailabilityZonesOutput : AWSModel -/** - *

A list of updated Availability Zones for the load balancer.

- */ @property (nonatomic, strong) NSArray *availabilityZones; @end -/** - *

The input for the SetLoadBalancerListenerSSLCertificate action.

- * Required parameters: [LoadBalancerName, LoadBalancerPort, SSLCertificateId] - */ -@interface AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateInput : AWSRequest +@interface AWSElasticLoadBalancingRemoveTagsInput : AWSRequest +@property (nonatomic, strong) NSArray *loadBalancerNames; +@property (nonatomic, strong) NSArray *tags; -/** - *

The name of the load balancer.

- */ -@property (nonatomic, strong) NSString *loadBalancerName; +@end -/** - *

The port that uses the specified SSL certificate.

- */ -@property (nonatomic, strong) NSNumber *loadBalancerPort; +@interface AWSElasticLoadBalancingRemoveTagsOutput : AWSModel -/** - *

The Amazon Resource Number (ARN) of the SSL certificate chain to use.For more information on SSL certificates, see Managing Server Certificates in the AWS Identity and Access Management User Guide.

- */ + +@end + +@interface AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateInput : AWSRequest + +@property (nonatomic, strong) NSString *loadBalancerName; +@property (nonatomic, strong) NSNumber *loadBalancerPort; @property (nonatomic, strong) NSString *SSLCertificateId; @end -/** - *

The output for the SetLoadBalancerListenerSSLCertificate action.

- */ -@interface AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateOutput : AZModel +@interface AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateOutput : AWSModel @end @interface AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerInput : AWSRequest - -/** - *

The port number associated with the back-end server.

- */ @property (nonatomic, strong) NSNumber *instancePort; - -/** - *

The mnemonic name associated with the load balancer. This name must be unique within the set of your load balancers.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

List of policy names to be set.If the list is empty, then all current polices are removed from the back-end server.

- */ @property (nonatomic, strong) NSArray *policyNames; @end -/** - *

The output for the SetLoadBalancerPoliciesForBackendServer action.

- */ -@interface AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerOutput : AZModel +@interface AWSElasticLoadBalancingSetLoadBalancerPoliciesForBackendServerOutput : AWSModel @end -/** - *

The input for the SetLoadBalancerPoliciesOfListener action.

- * Required parameters: [LoadBalancerName, LoadBalancerPort, PolicyNames] - */ @interface AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerInput : AWSRequest - -/** - *

The name of the load balancer.

- */ @property (nonatomic, strong) NSString *loadBalancerName; - -/** - *

The external port of the load balancer to associate the policy.

- */ @property (nonatomic, strong) NSNumber *loadBalancerPort; - -/** - *

List of policies to be associated with the listener. If the list is empty, the current policy is removed from the listener.

- */ @property (nonatomic, strong) NSArray *policyNames; @end -/** - *

The output for the SetLoadBalancerPoliciesOfListener action.

- */ -@interface AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerOutput : AZModel +@interface AWSElasticLoadBalancingSetLoadBalancerPoliciesOfListenerOutput : AWSModel @end -/** - *

This data type is used as a response element in the DescribeLoadBalancers action. For information about Elastic Load Balancing security groups, go to Using Security Groups With Elastic Load Balancing in the Elastic Load Balancing Developer Guide.

- */ -@interface AWSElasticLoadBalancingSourceSecurityGroup : AZModel - +@interface AWSElasticLoadBalancingSourceSecurityGroup : AWSModel -/** - *

Name of the source security group. Use this value for the--source-group parameter of the ec2-authorize command in the Amazon EC2 command line tool.

- */ @property (nonatomic, strong) NSString *groupName; - -/** - *

Owner of the source security group. Use this value for the--source-group-user parameter of the ec2-authorize command in the Amazon EC2 command line tool.

- */ @property (nonatomic, strong) NSString *ownerAlias; @end + +@interface AWSElasticLoadBalancingTag : AWSModel + +@property (nonatomic, strong) NSString *key; +@property (nonatomic, strong) NSString *value; + +@end + +@interface AWSElasticLoadBalancingTagDescription : AWSModel + +@property (nonatomic, strong) NSString *loadBalancerName; +@property (nonatomic, strong) NSArray *tags; + +@end + +@interface AWSElasticLoadBalancingTagKeyOnly : AWSModel + +@property (nonatomic, strong) NSString *key; + +@end diff --git a/ElasticLoadBalancing/AWSElasticLoadBalancingModel.m b/ElasticLoadBalancing/AWSElasticLoadBalancingModel.m index fe832c0659b..873d23dec4a 100644 --- a/ElasticLoadBalancing/AWSElasticLoadBalancingModel.m +++ b/ElasticLoadBalancing/AWSElasticLoadBalancingModel.m @@ -14,7 +14,7 @@ */ #import "AWSElasticLoadBalancingModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSElasticLoadBalancingErrorDomain = @"com.amazonaws.AWSElasticLoadBalancingErrorDomain"; @@ -52,6 +52,25 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSElasticLoadBalancingAddTagsInput + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"loadBalancerNames" : @"LoadBalancerNames", + @"tags" : @"Tags", + }; +} + ++ (NSValueTransformer *)tagsJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSElasticLoadBalancingTag class]]; +} + +@end + +@implementation AWSElasticLoadBalancingAddTagsOutput + +@end + @implementation AWSElasticLoadBalancingAppCookieStickinessPolicy + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -156,6 +175,16 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSElasticLoadBalancingConnectionSettings + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"idleTimeout" : @"IdleTimeout", + }; +} + +@end + @implementation AWSElasticLoadBalancingCreateAccessPointInput + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -166,6 +195,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"scheme" : @"Scheme", @"securityGroups" : @"SecurityGroups", @"subnets" : @"Subnets", + @"tags" : @"Tags", }; } @@ -173,6 +203,10 @@ + (NSValueTransformer *)listenersJSONTransformer { return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSElasticLoadBalancingListener class]]; } ++ (NSValueTransformer *)tagsJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSElasticLoadBalancingTag class]]; +} + @end @implementation AWSElasticLoadBalancingCreateAccessPointOutput @@ -346,6 +380,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"loadBalancerNames" : @"LoadBalancerNames", @"marker" : @"Marker", + @"pageSize" : @"PageSize", }; } @@ -468,6 +503,30 @@ + (NSValueTransformer *)policyTypeDescriptionsJSONTransformer { @end +@implementation AWSElasticLoadBalancingDescribeTagsInput + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"loadBalancerNames" : @"LoadBalancerNames", + }; +} + +@end + +@implementation AWSElasticLoadBalancingDescribeTagsOutput + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"tagDescriptions" : @"TagDescriptions", + }; +} + ++ (NSValueTransformer *)tagDescriptionsJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSElasticLoadBalancingTagDescription class]]; +} + +@end + @implementation AWSElasticLoadBalancingDetachLoadBalancerFromSubnetsInput + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -517,7 +576,7 @@ @implementation AWSElasticLoadBalancingInstanceState + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"instanceId" : @"InstanceId", @"reasonCode" : @"ReasonCode", @"state" : @"State", @@ -572,6 +631,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"accessLog" : @"AccessLog", @"connectionDraining" : @"ConnectionDraining", + @"connectionSettings" : @"ConnectionSettings", @"crossZoneLoadBalancing" : @"CrossZoneLoadBalancing", }; } @@ -584,6 +644,10 @@ + (NSValueTransformer *)connectionDrainingJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSElasticLoadBalancingConnectionDraining class]]; } ++ (NSValueTransformer *)connectionSettingsJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSElasticLoadBalancingConnectionSettings class]]; +} + + (NSValueTransformer *)crossZoneLoadBalancingJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSElasticLoadBalancingCrossZoneLoadBalancing class]]; } @@ -619,9 +683,9 @@ + (NSValueTransformer *)backendServerDescriptionsJSONTransformer { + (NSValueTransformer *)createdTimeJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -727,7 +791,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"attributeType" : @"AttributeType", @"cardinality" : @"Cardinality", @"defaultValue" : @"DefaultValue", - @"description" : @"Description", + @"detail" : @"Description", }; } @@ -753,7 +817,7 @@ @implementation AWSElasticLoadBalancingPolicyTypeDescription + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ - @"description" : @"Description", + @"detail" : @"Description", @"policyAttributeTypeDescriptions" : @"PolicyAttributeTypeDescriptions", @"policyTypeName" : @"PolicyTypeName", }; @@ -815,6 +879,25 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @end +@implementation AWSElasticLoadBalancingRemoveTagsInput + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"loadBalancerNames" : @"LoadBalancerNames", + @"tags" : @"Tags", + }; +} + ++ (NSValueTransformer *)tagsJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSElasticLoadBalancingTagKeyOnly class]]; +} + +@end + +@implementation AWSElasticLoadBalancingRemoveTagsOutput + +@end + @implementation AWSElasticLoadBalancingSetLoadBalancerListenerSSLCertificateInput + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -873,3 +956,39 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { } @end + +@implementation AWSElasticLoadBalancingTag + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"key" : @"Key", + @"value" : @"Value", + }; +} + +@end + +@implementation AWSElasticLoadBalancingTagDescription + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"loadBalancerName" : @"LoadBalancerName", + @"tags" : @"Tags", + }; +} + ++ (NSValueTransformer *)tagsJSONTransformer { + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[AWSElasticLoadBalancingTag class]]; +} + +@end + +@implementation AWSElasticLoadBalancingTagKeyOnly + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"key" : @"Key", + }; +} + +@end diff --git a/ElasticLoadBalancing/Resources/elasticloadbalancing-2012-06-01.json b/ElasticLoadBalancing/Resources/elasticloadbalancing-2012-06-01.json index 6b85ae3e3fe..01b52d122bb 100644 --- a/ElasticLoadBalancing/Resources/elasticloadbalancing-2012-06-01.json +++ b/ElasticLoadBalancing/Resources/elasticloadbalancing-2012-06-01.json @@ -7,21 +7,57 @@ "xmlNamespace":"http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/", "protocol":"query" }, - "documentation":"Elastic Load Balancing\n \n

\n Elastic Load Balancing is a cost-effective and easy\n to use web service to help you improve the availability and\n scalability of your application running on Amazon Elastic Cloud Compute (Amazon EC2). It makes it easy for\n you to distribute application loads between two or more\n EC2 instances. Elastic Load Balancing supports the growth in traffic of your application by enabling availability through redundancy.\n

\n \n

This guide provides detailed information about Elastic Load Balancing \n actions, data types, and parameters that can be used for sending a \n query request. Query requests are HTTP or HTTPS requests that use the \n HTTP verb GET or POST and a query parameter named Action or Operation. \n Action is used throughout this documentation, although Operation is \n supported for backward compatibility with other AWS Query APIs.

\n \n

For detailed information on constructing a query request using the actions, data types, and parameters mentioned in this guide,\n go to Using the Query API\n in the Elastic Load Balancing Developer Guide.

\n \n

For detailed information about Elastic Load Balancing features and their associated actions, go to \n Using Elastic Load Balancing\n in the Elastic Load Balancing Developer Guide.

\n \n

This reference guide is based on the current WSDL, which is available at:\n \n

\n

Endpoints

\n

The examples in this guide assume that your load balancers are created in the US East (Northern Virginia) region and use us-east-1 as the endpoint.

\n

You can create your load balancers in other AWS regions. For information about regions and endpoints supported by Elastic Load Balancing, see \n Regions and Endpoints \n in the Amazon Web Services General Reference.\n

", "operations":{ + "AddTags":{ + "name":"AddTags", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"AddTagsInput"}, + "output":{ + "shape":"AddTagsOutput", + "resultWrapper":"AddTagsResult" + }, + "errors":[ + { + "shape":"AccessPointNotFoundException", + "error":{ + "code":"LoadBalancerNotFound", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + { + "shape":"TooManyTagsException", + "error":{ + "code":"TooManyTags", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + { + "shape":"DuplicateTagKeysException", + "error":{ + "code":"DuplicateTagKeys", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + } + ] + }, "ApplySecurityGroupsToLoadBalancer":{ "name":"ApplySecurityGroupsToLoadBalancer", "http":{ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"ApplySecurityGroupsToLoadBalancerInput", - "documentation":"

\n The input for the ApplySecurityGroupsToLoadBalancer action.\n

" - }, + "input":{"shape":"ApplySecurityGroupsToLoadBalancerInput"}, "output":{ "shape":"ApplySecurityGroupsToLoadBalancerOutput", - "documentation":"

\n The out for the ApplySecurityGroupsToLoadBalancer action.\n

", "resultWrapper":"ApplySecurityGroupsToLoadBalancerResult" }, "errors":[ @@ -32,8 +68,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -42,8 +77,7 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true }, { "shape":"InvalidSecurityGroupException", @@ -52,11 +86,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more specified security groups do not exist. \n

" + "exception":true } - ], - "documentation":"

\n Associates one or more security groups with your load balancer in Amazon Virtual Private Cloud (Amazon VPC). \n The provided security group IDs will override any currently applied security groups.\n

\n

For more information, see Manage Security Groups in Amazon VPC in the Elastic Load Balancing Developer Guide.

\n \n \n https://elasticloadbalancing.amazonaws.com/?SecurityGroups.member.1=sg-123456789\n&LoadBalancerName=my-test-vpc-loadbalancer\n&Version=2012-06-01\n&Action=ApplySecurityGroupsToLoadBalancer\n&AUTHPARAMS \n \n \n \n sg-123456789\n \n \n \n 06b5decc-102a-11e3-9ad6-bf3e4EXAMPLE\n \n\n \n " + ] }, "AttachLoadBalancerToSubnets":{ "name":"AttachLoadBalancerToSubnets", @@ -64,13 +96,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"AttachLoadBalancerToSubnetsInput", - "documentation":"

\n The input for the AttachLoadBalancerToSubnets action. \n

" - }, + "input":{"shape":"AttachLoadBalancerToSubnetsInput"}, "output":{ "shape":"AttachLoadBalancerToSubnetsOutput", - "documentation":"

\n The output for the AttachLoadBalancerToSubnets action.\n

", "resultWrapper":"AttachLoadBalancerToSubnetsResult" }, "errors":[ @@ -81,8 +109,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -91,8 +118,7 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true }, { "shape":"SubnetNotFoundException", @@ -101,8 +127,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more subnets were not found.\n

" + "exception":true }, { "shape":"InvalidSubnetException", @@ -111,11 +136,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The VPC has no Internet gateway. \n

" + "exception":true } - ], - "documentation":"

\n Adds one or more subnets to the set of configured subnets in the Amazon Virtual Private Cloud (Amazon VPC) for the load balancer.\n

\n

\n The load balancers evenly distribute requests across all of the registered subnets. \n For more information, see Deploy Elastic Load Balancing in Amazon VPC in the Elastic Load Balancing Developer Guide.\n

\n \n https://elasticloadbalancing.amazonaws.com/?Subnets.member.1=subnet-3561b05e\n&LoadBalancerName=my-test-vpc-loadbalancer\n&Version=2012-06-01\n&Action=AttachLoadBalancerToSubnets\n&AUTHPARAMS \n \n\n \n subnet-119f0078\n subnet-3561b05e\n \n\n \n 07b1ecbc-1100-11e3-acaf-dd7edEXAMPLE\n \n\n \n " + ] }, "ConfigureHealthCheck":{ "name":"ConfigureHealthCheck", @@ -123,13 +146,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"ConfigureHealthCheckInput", - "documentation":"

\n Input for the ConfigureHealthCheck action.\n

" - }, + "input":{"shape":"ConfigureHealthCheckInput"}, "output":{ "shape":"ConfigureHealthCheckOutput", - "documentation":"

\n The output for the ConfigureHealthCheck action.\n

", "resultWrapper":"ConfigureHealthCheckResult" }, "errors":[ @@ -140,11 +159,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true } - ], - "documentation":"

\n Specifies the health check settings to use for evaluating the health state of your back-end instances. \n

\n

For more information, see Health Check in the Elastic Load Balancing Developer Guide.

\n \n https://elasticloadbalancing.amazonaws.com/?HealthCheck.HealthyThreshold=2\n&HealthCheck.UnhealthyThreshold=2\n&LoadBalancerName=MyLoadBalancer\n&HealthCheck.Target=HTTP:80/ping\n&HealthCheck.Interval=30\n&HealthCheck.Timeout=3\n&Version=2012-06-01\n&Action=ConfigureHealthCheck\n&AUTHPARAMS \n \n\n \n 30\n HTTP:80/ping\n 2\n 3\n 2\n \n\n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n " + ] }, "CreateAppCookieStickinessPolicy":{ "name":"CreateAppCookieStickinessPolicy", @@ -152,13 +169,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"CreateAppCookieStickinessPolicyInput", - "documentation":"

\n The input for the CreateAppCookieStickinessPolicy action.\n

" - }, + "input":{"shape":"CreateAppCookieStickinessPolicyInput"}, "output":{ "shape":"CreateAppCookieStickinessPolicyOutput", - "documentation":"

\n The output for the CreateAppCookieStickinessPolicy action.\n

", "resultWrapper":"CreateAppCookieStickinessPolicyResult" }, "errors":[ @@ -169,8 +182,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"DuplicatePolicyNameException", @@ -179,8 +191,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Policy with the same name exists for this load balancer.\n Please choose another name.\n

" + "exception":true }, { "shape":"TooManyPoliciesException", @@ -189,8 +200,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Quota for number of policies for this load balancer\n has already been reached.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -199,11 +209,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Generates a stickiness policy with sticky session lifetimes that follow \n that of an application-generated cookie. This policy can be associated\n only with HTTP/HTTPS listeners.\n

\n

\n This policy is similar to the policy created by CreateLBCookieStickinessPolicy, \n except that the lifetime of the special Elastic Load Balancing cookie follows the\n lifetime of the application-generated cookie specified in the policy configuration. \n The load balancer only inserts a new stickiness cookie when the application response\n includes a new application cookie. \n

\n

\n If the application cookie is explicitly removed or expires, the session stops being\n sticky until a new application cookie is issued. \n

\n \n An application client must receive and send two cookies: the application-generated \n cookie and the special Elastic Load Balancing cookie named AWSELB. \n This is the default behavior for many common web browsers.\n \n

For more information, see Enabling Application-Controlled Session Stickiness\n in the Elastic Load Balancing Developer Guide.

\n \n https://elasticloadbalancing.amazonaws.com/?CookieName=MyAppCookie\n&LoadBalancerName=MyLoadBalancer\n&PolicyName=MyAppStickyPolicy\n&Version=2012-06-01\n&Action=CreateAppCookieStickinessPolicy\n&AUTHPARAMS \n \n\n\n 99a693e9-12b8-11e3-9ad6-bf3e4EXAMPLE\n\n\n \n " + ] }, "CreateLBCookieStickinessPolicy":{ "name":"CreateLBCookieStickinessPolicy", @@ -211,13 +219,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"CreateLBCookieStickinessPolicyInput", - "documentation":"

\n The input for the CreateLBCookieStickinessPolicy action.\n

" - }, + "input":{"shape":"CreateLBCookieStickinessPolicyInput"}, "output":{ "shape":"CreateLBCookieStickinessPolicyOutput", - "documentation":"

\n The output for the CreateLBCookieStickinessPolicy action.\n

", "resultWrapper":"CreateLBCookieStickinessPolicyResult" }, "errors":[ @@ -228,8 +232,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"DuplicatePolicyNameException", @@ -238,8 +241,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Policy with the same name exists for this load balancer.\n Please choose another name.\n

" + "exception":true }, { "shape":"TooManyPoliciesException", @@ -248,8 +250,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Quota for number of policies for this load balancer\n has already been reached.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -258,11 +259,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Generates a stickiness policy with sticky session lifetimes controlled by the \n lifetime of the browser (user-agent) or a specified expiration period. This \n policy can be associated only with HTTP/HTTPS listeners.\n

\n

\n When a load balancer implements this policy, the load balancer uses a special\n cookie to track the backend server instance for each request. When the load balancer\n receives a request, it first checks to see if this cookie is present in the request. \n If so, the load balancer sends the request to the application server specified in the\n cookie. If not, the load balancer sends the request to a server that is chosen based on\n the existing load balancing algorithm.\n

\n

\n A cookie is inserted into the response for binding subsequent requests from the same user to\n that server. The validity of the cookie is based on the cookie expiration time, which is \n specified in the policy configuration. \n

\n \n

For more information, see Enabling Duration-Based Session Stickiness\n in the Elastic Load Balancing Developer Guide.

\n \n https://elasticloadbalancing.amazonaws.com/?CookieExpirationPeriod=60\n&LoadBalancerName=MyLoadBalancer&PolicyName=MyDurationStickyPolicy\n&Version=2012-06-01\n&Action=CreateLBCookieStickinessPolicy\n&AUTHPARAMS \n \n\n\n 99a693e9-12b8-11e3-9ad6-bf3e4EXAMPLE\n\n\n \n " + ] }, "CreateLoadBalancer":{ "name":"CreateLoadBalancer", @@ -270,13 +269,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"CreateAccessPointInput", - "documentation":"

\n The input for the CreateLoadBalancer action.\n

" - }, + "input":{"shape":"CreateAccessPointInput"}, "output":{ "shape":"CreateAccessPointOutput", - "documentation":"

\n The output for the CreateLoadBalancer action.\n

", "resultWrapper":"CreateLoadBalancerResult" }, "errors":[ @@ -287,8 +282,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Load balancer name already exists for this account.\n Please choose another name.\n

" + "exception":true }, { "shape":"TooManyAccessPointsException", @@ -297,8 +291,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The quota for the number of load balancers has already been reached.\n

" + "exception":true }, { "shape":"CertificateNotFoundException", @@ -307,8 +300,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified SSL ID does not refer to a valid SSL certificate \n in the AWS Identity and Access Management Service.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -317,8 +309,7 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true }, { "shape":"SubnetNotFoundException", @@ -327,8 +318,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more subnets were not found.\n

" + "exception":true }, { "shape":"InvalidSubnetException", @@ -337,8 +327,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The VPC has no Internet gateway. \n

" + "exception":true }, { "shape":"InvalidSecurityGroupException", @@ -347,8 +336,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more specified security groups do not exist. \n

" + "exception":true }, { "shape":"InvalidSchemeException", @@ -357,11 +345,27 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Invalid value for scheme. Scheme can only be specified for load balancers in VPC. \n

" + "exception":true + }, + { + "shape":"TooManyTagsException", + "error":{ + "code":"TooManyTags", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + { + "shape":"DuplicateTagKeysException", + "error":{ + "code":"DuplicateTagKeys", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true } - ], - "documentation":"

\n Creates a new load balancer.\n

\n

\n After the call has completed successfully, a new load balancer\n is created with a unique Domain Name Service (DNS) name. The DNS \n name includes the name of the AWS region in which the load balance \n was created. For example, if your load balancer was created in the\n United States, the DNS name might end with either of the following:

\n
    \n
  • \n us-east-1.elb.amazonaws.com (for the Northern Virginia Region)\n
  • \n
  • \n us-west-1.elb.amazonaws.com (for the Northern California Region)\n
  • \n
\n

For information about the AWS regions supported by Elastic Load Balancing, \n see Regions and Endpoints.

\n \n

You can create up to 20 load balancers per region per account.

\n \n

Elastic Load Balancing supports load balancing your Amazon EC2 instances launched\n within any one of the following platforms:

\n \n \n \n \n Create a TCP load balancer in EC2-Classic \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer\n&AvailabilityZones.member.1=us-east-1c\n&Listeners.member.1.LoadBalancerPort=80\n&Listeners.member.1.InstancePort=80\n&Listeners.member.1.Protocol=http\n&Listeners.member.1.InstanceProtocol=http\n&Version=2012-06-01\n&Action=CreateLoadBalancer\n&AUTHPARAMS \n \n\n MyLoadBalancer-1234567890.us-east-1.elb.amazonaws.com\n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n \n \n Create HTTPS load balancer in EC2-Classic \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyHTTPSLoadBalancer\n&AvailabilityZones.member.1=us-east-1c\n&Listeners.member.1.LoadBalancerPort=443\n&Listeners.member.1.InstancePort=443\n&Listeners.member.1.Protocol=https\n&Listeners.member.1.InstanceProtocol=https\n&Listeners.member.1.SSLCertificateId=arn:aws:iam::123456789012:server-certificate/servercert\n&Version=2012-06-01\n&Action=CreateLoadBalancer\n&AUTHPARAMS \n \n\n MyHTTPSLoadBalancer-1234567890.us-east-1.elb.amazonaws.com\n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n \n \n Create a TCP load balancer in EC2-VPC \n https://elasticloadbalancing.amazonaws.com/?SecurityGroups.member.1=sg-6801da07\n&LoadBalancerName=MyVPCLoadBalancer\n&Listeners.member.1.LoadBalancerPort=80\n&Listeners.member.1.InstancePort=80\n&Listeners.member.1.Protocol=http\n&Listeners.member.1.InstanceProtocol=http\n&Subnets.member.1=subnet-6dec9f03\n&Version=2012-06-01\n&Action=CreateLoadBalancer\n&AUTHPARAMS \n \n\n MyVPCLoadBalancer-1234567890.us-east-1.elb.amazonaws.com\n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n \n \n Create an internal TCP load balancer in EC2-VPC \n https://elasticloadbalancing.amazonaws.com/?Scheme=internal\n&SecurityGroups.member.1=sg-706cb61f\n&LoadBalancerName=MyInternalLoadBalancer\n&Listeners.member.1.LoadBalancerPort=80\n&Listeners.member.1.InstancePort=80\n&Listeners.member.1.Protocol=http\n&Listeners.member.1.InstanceProtocol=http\n&Subnets.member.1=subnet-9edc97f0\n&Version=2012-06-01\n&Action=CreateLoadBalancer\n&AUTHPARAMS \n \n\n internal-MyInternalLoadBalancer-1234567890.us-east-1.elb.amazonaws.com\n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n \n \n Create a TCP load balancer in default VPC \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyDefaultVPCLoadBalancer\n&AvailabilityZones.member.1=sa-east-1b\n&Listeners.member.1.LoadBalancerPort=80\n&Listeners.member.1.InstancePort=80\n&Listeners.member.1.Protocol=http\n&Listeners.member.1.InstanceProtocol=http\n&Version=2012-06-01\n&Action=CreateLoadBalancer\n&AUTHPARAMS \n \n\n MyDefaultVPCLoadBalancer-1234567890.sa.east-1.elb.amazonaws.com\n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n \n " + ] }, "CreateLoadBalancerListeners":{ "name":"CreateLoadBalancerListeners", @@ -369,13 +373,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"CreateLoadBalancerListenerInput", - "documentation":"

\n The input for the CreateLoadBalancerListeners action.\n

" - }, + "input":{"shape":"CreateLoadBalancerListenerInput"}, "output":{ "shape":"CreateLoadBalancerListenerOutput", - "documentation":"

\n The output for the CreateLoadBalancerListeners action.\n

", "resultWrapper":"CreateLoadBalancerListenersResult" }, "errors":[ @@ -386,8 +386,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"DuplicateListenerException", @@ -396,8 +395,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n A Listener already exists for the given \n LoadBalancerName and LoadBalancerPort, \n but with a different InstancePort, Protocol, \n or SSLCertificateId. \t\n

" + "exception":true }, { "shape":"CertificateNotFoundException", @@ -406,8 +404,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified SSL ID does not refer to a valid SSL certificate \n in the AWS Identity and Access Management Service.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -416,11 +413,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Creates one or more listeners on a load balancer for the specified port. \n If a listener with the given port does not already exist, it will be created; \n otherwise, the properties of the new listener must match the properties \n of the existing listener. \n

\n

For more information, see Add a Listener to Your Load Balancer \n in the Elastic Load Balancing Developer Guide.

\n \n \n Create HTTPS load balancer listener in EC2-Classic \n https://elasticloadbalancing.amazonaws.com/?Listeners.member.1.Protocol=https\n&Listeners.member.1.LoadBalancerPort=443\n&Listeners.member.1.InstancePort=443\n&Listeners.member.1.InstanceProtocol=https\n&Listeners.member.1.SSLCertificateId=arn:aws:iam::123456789012:server-certificate/servercert\n&LoadBalancerName=MyHTTPSLoadBalancer\n&Version=2012-06-01\n&Action=CreateLoadBalancerListeners\n&AUTHPARAMS \n \n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n " + ] }, "CreateLoadBalancerPolicy":{ "name":"CreateLoadBalancerPolicy", @@ -431,7 +426,6 @@ "input":{"shape":"CreateLoadBalancerPolicyInput"}, "output":{ "shape":"CreateLoadBalancerPolicyOutput", - "documentation":"

The output for the CreateLoadBalancerPolicy action.\n

", "resultWrapper":"CreateLoadBalancerPolicyResult" }, "errors":[ @@ -442,8 +436,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"PolicyTypeNotFoundException", @@ -452,8 +445,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more of the specified policy types do not exist.\n

" + "exception":true }, { "shape":"DuplicatePolicyNameException", @@ -462,8 +454,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Policy with the same name exists for this load balancer.\n Please choose another name.\n

" + "exception":true }, { "shape":"TooManyPoliciesException", @@ -472,8 +463,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Quota for number of policies for this load balancer\n has already been reached.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -482,11 +472,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n \tCreates a new policy that contains the necessary attributes depending on the policy type.\n \tPolicies are settings that are saved for your load balancer and that can be applied to the\n \tfront-end listener, or the back-end application server, depending on your policy type.\n \t

\n \n https://elasticloadbalancing.amazonaws.com/?PolicyAttributes.member.1.AttributeName=ProxyProtocol\n&PolicyAttributes.member.1.AttributeValue=true\n&PolicyTypeName=ProxyProtocolPolicyType\n&LoadBalancerName=my-test-loadbalancer\n&PolicyName=EnableProxyProtocol\n&Version=2012-06-01\n&Action=CreateLoadBalancerPolicy\n&AUTHPARAMS \n \n\n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n " + ] }, "DeleteLoadBalancer":{ "name":"DeleteLoadBalancer", @@ -494,16 +482,11 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DeleteAccessPointInput", - "documentation":"

\n The input for the DeleteLoadBalancer action.\n

" - }, + "input":{"shape":"DeleteAccessPointInput"}, "output":{ "shape":"DeleteAccessPointOutput", - "documentation":"

\n The output for the DeleteLoadBalancer action.\n

", "resultWrapper":"DeleteLoadBalancerResult" - }, - "documentation":"

\n Deletes the specified load balancer.\n

\n

\n If attempting to recreate the load balancer,\n you must reconfigure all the settings.\n The DNS name associated with a deleted load balancer\n will no longer be usable.\n Once deleted, the name and associated DNS record of the\n load balancer no longer exist and traffic sent to any of its\n IP addresses will no longer be delivered to back-end instances. \n

\n

\n To successfully call this API, you must provide the same\n account credentials as were used to create the load balancer.\n

\n \n By design, if the load balancer does not exist or has already been deleted, a call to\n DeleteLoadBalancer action still succeeds.\n " + } }, "DeleteLoadBalancerListeners":{ "name":"DeleteLoadBalancerListeners", @@ -511,13 +494,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DeleteLoadBalancerListenerInput", - "documentation":"

\n The input for the DeleteLoadBalancerListeners action.\n

" - }, + "input":{"shape":"DeleteLoadBalancerListenerInput"}, "output":{ "shape":"DeleteLoadBalancerListenerOutput", - "documentation":"

\n The output for the DeleteLoadBalancerListeners action.\n

", "resultWrapper":"DeleteLoadBalancerListenersResult" }, "errors":[ @@ -528,11 +507,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true } - ], - "documentation":"

\n Deletes listeners from the load balancer for the specified port.\n

" + ] }, "DeleteLoadBalancerPolicy":{ "name":"DeleteLoadBalancerPolicy", @@ -540,13 +517,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DeleteLoadBalancerPolicyInput", - "documentation":"

\n The input for the DeleteLoadBalancerPolicy action.\n

" - }, + "input":{"shape":"DeleteLoadBalancerPolicyInput"}, "output":{ "shape":"DeleteLoadBalancerPolicyOutput", - "documentation":"

\n The output for the DeleteLoadBalancerPolicy action.\n

", "resultWrapper":"DeleteLoadBalancerPolicyResult" }, "errors":[ @@ -557,8 +530,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -567,11 +539,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Deletes a policy from the load balancer. \n The specified policy must not be enabled for any listeners.\n

" + ] }, "DeregisterInstancesFromLoadBalancer":{ "name":"DeregisterInstancesFromLoadBalancer", @@ -579,13 +549,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DeregisterEndPointsInput", - "documentation":"

\n The input for the DeregisterInstancesFromLoadBalancer action.\n

" - }, + "input":{"shape":"DeregisterEndPointsInput"}, "output":{ "shape":"DeregisterEndPointsOutput", - "documentation":"

\n The output for the DeregisterInstancesFromLoadBalancer action.\n

", "resultWrapper":"DeregisterInstancesFromLoadBalancerResult" }, "errors":[ @@ -596,8 +562,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidEndPointException", @@ -606,11 +571,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified EndPoint is not valid.\n

" + "exception":true } - ], - "documentation":"

\n Deregisters instances from the load balancer.\n Once the instance is deregistered,\n it will stop receiving traffic from the load balancer. \n

\n

\n In order to successfully call this API,\n the same account credentials as those\n used to create the load balancer must be provided.\n

\n

For more information, see De-register and Register Amazon EC2 Instances \n in the Elastic Load Balancing Developer Guide.

\n \n

You can use DescribeLoadBalancers to verify if the instance is deregistered from the load balancer.

\n \n \n Deregister instance i-e3677ad7 from MyHTTPSLoadBalancer load balancer. \n https://elasticloadbalancing.amazonaws.com/?Instances.member.1.InstanceId=i-e3677ad7\n&LoadBalancerName=MyHTTPSLoadBalancer\n&Version=2012-06-01\n&Action=DeregisterInstancesFromLoadBalancer\n&AUTHPARAMS \n \n \n \n \n i-6ec63d59\n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n " + ] }, "DescribeInstanceHealth":{ "name":"DescribeInstanceHealth", @@ -618,13 +581,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DescribeEndPointStateInput", - "documentation":"

\n The input for the DescribeEndPointState action.\n

" - }, + "input":{"shape":"DescribeEndPointStateInput"}, "output":{ "shape":"DescribeEndPointStateOutput", - "documentation":"

\n\t\tThe output for the DescribeInstanceHealth action.\n\t\t

", "resultWrapper":"DescribeInstanceHealthResult" }, "errors":[ @@ -635,8 +594,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidEndPointException", @@ -645,11 +603,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified EndPoint is not valid.\n

" + "exception":true } - ], - "documentation":"

\n Returns the current state of the specified instances registered with the specified load balancer.\n If no instances are specified, the state of all the instances registered with the load balancer is returned.\n

\n \n You must provide the same account credentials\n as those that were used to create the load balancer.\n \n \n \n Description of a healthy (InService) instance \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer\n&Version=2012-06-01\n&Action=DescribeInstanceHealth\n&AUTHPARAMS \n \n \n \n \n N/A\n i-90d8c2a5\n InService\n N/A\n \n \n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n \n \n \n \n Description of an instance with registration in progress \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=my-test-loadbalancer\n&Version=2012-06-01\n&Action=DescribeInstanceHealth\n&AUTHPARAMS \n \n \n \n \n Instance registration is still in progress.\n i-315b7e51\n OutOfService\n ELB\n \n \n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n \n \n \n \n Description of an unhealthy (OutOfService) instance \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer-2\n&Version=2012-06-01\n&Action=DescribeInstanceHealth\n&AUTHPARAMS \n \n \n \n \n Instance has failed at least the UnhealthyThreshold number of health checks consecutively.\n i-fda142c9\n OutOfService\n Instance\n \n \n \n \n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n " + ] }, "DescribeLoadBalancerAttributes":{ "name":"DescribeLoadBalancerAttributes", @@ -657,13 +613,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DescribeLoadBalancerAttributesInput", - "documentation":"

The input for the DescribeLoadBalancerAttributes action.

" - }, + "input":{"shape":"DescribeLoadBalancerAttributesInput"}, "output":{ "shape":"DescribeLoadBalancerAttributesOutput", - "documentation":"

The following element is returned in a structure named DescribeLoadBalancerAttributesResult.

", "resultWrapper":"DescribeLoadBalancerAttributesResult" }, "errors":[ @@ -674,8 +626,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"LoadBalancerAttributeNotFoundException", @@ -684,11 +635,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

The specified load balancer attribute could not be found.

" + "exception":true } - ], - "documentation":"

Returns detailed information about all of the attributes associated with the specified load balancer.

\n \n \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer\n&Version=2012-06-01\n&Action=DescribeLoadBalancerAttributes\n&AUTHPARAMS \n \n \n \n \n true\n my-loadbalancer-logs\n testprefix\n 5\n \n \n true\n \n \n true\n 60\n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n " + ] }, "DescribeLoadBalancerPolicies":{ "name":"DescribeLoadBalancerPolicies", @@ -699,7 +648,6 @@ "input":{"shape":"DescribeLoadBalancerPoliciesInput"}, "output":{ "shape":"DescribeLoadBalancerPoliciesOutput", - "documentation":"

The output for the DescribeLoadBalancerPolicies action.\n

", "resultWrapper":"DescribeLoadBalancerPoliciesResult" }, "errors":[ @@ -710,8 +658,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"PolicyNotFoundException", @@ -720,11 +667,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more specified policies were not found.\n

" + "exception":true } - ], - "documentation":"

Returns detailed descriptions of the policies.\n If you specify a load balancer name, the action returns the descriptions of all the policies created for the load balancer.\n If you specify a policy name associated with your load balancer, the action returns the description of that policy. \n If you don't specify a load balancer name, the action returns descriptions of the specified sample policies, or descriptions of all the sample policies.\n The names of the sample policies have the ELBSample- prefix.\n

\n \n \n Description of all the policies associated with a load balancer \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer\n&Version=2012-06-01\n&Action=DescribeLoadBalancerPolicies\n&AUTHPARAMS \n \n \n \n \n MyDurationStickyPolicy\n LBCookieStickinessPolicyType\n \n \n CookieExpirationPeriod\n 60\n \n \n \n \n MyAppStickyPolicy\n AppCookieStickinessPolicyType\n \n \n CookieName\n MyAppCookie\n \n \n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n \n Description of a specified policy associated with the load balancer \n https://elasticloadbalancing.amazonaws.com/?PolicyNames.member.1=EnableProxyProtocol\n&LoadBalancerName=my-test-loadbalancer\n&Version=2012-06-01\n&Action=DescribeLoadBalancerPolicies\n&AUTHPARAMS \n \n \n \n \n EnableProxyProtocol\n ProxyProtocolPolicyType\n \n \n ProxyProtocol\n true\n \n \n \n \n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n \n " + ] }, "DescribeLoadBalancerPolicyTypes":{ "name":"DescribeLoadBalancerPolicyTypes", @@ -735,7 +680,6 @@ "input":{"shape":"DescribeLoadBalancerPolicyTypesInput"}, "output":{ "shape":"DescribeLoadBalancerPolicyTypesOutput", - "documentation":"

\n \tThe output for the DescribeLoadBalancerPolicyTypes action.\n \t

", "resultWrapper":"DescribeLoadBalancerPolicyTypesResult" }, "errors":[ @@ -746,11 +690,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more of the specified policy types do not exist.\n

" + "exception":true } - ], - "documentation":"

\n \tReturns meta-information on the specified load balancer policies defined by the\n \tElastic Load Balancing service. The policy types that are\n \treturned from this action can be used in a CreateLoadBalancerPolicy action to\n \tinstantiate specific policy configurations that will be applied to a load balancer.\n \t

\n \n \n Partial description of all the policy types defined by Elastic Load Balancing for your account \n https://elasticloadbalancing.amazonaws.com/?Version=2012-06-01\n&Action=DescribeLoadBalancerPolicyTypes\n&AUTHPARAMS \n \n\n SSLNegotiationPolicyType\n < . . . .>\n BackendServerAuthenticationPolicyType\n < . . . .>\n PublicKeyPolicyType\n < . . . .>\n AppCookieStickinessPolicyType\n < . . . .>\n LBCookieStickinessPolicyType\n < . . . .>\n ProxyProtocolPolicyType\n < . . . .>\n\n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\t\n \n \n \n Description of ProxyProtocolPolicyType \n https://elasticloadbalancing.amazonaws.com/?PolicyTypeNames.member.1=ProxyProtocolPolicyType\n&Version=2012-06-01\n&Action=DescribeLoadBalancerPolicyTypes\n&AUTHPARAMS \n \n \n \n \n \n \n ProxyProtocol\n Boolean\n ONE\n \n \n ProxyProtocolPolicyType\n Policy that controls whether to include the IP address and port of the originating request for TCP messages.\n This policy operates on TCP/SSL listeners only\n \n \n \n \n 1549581b-12b7-11e3-895e-1334aEXAMPLE\n \n\n \n \n " + ] }, "DescribeLoadBalancers":{ "name":"DescribeLoadBalancers", @@ -758,13 +700,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DescribeAccessPointsInput", - "documentation":"

\n\t\tThe input for the DescribeLoadBalancers action.\n\t\t

" - }, + "input":{"shape":"DescribeAccessPointsInput"}, "output":{ "shape":"DescribeAccessPointsOutput", - "documentation":"

\n\t\tThe output for the DescribeLoadBalancers action.\n\t\t

", "resultWrapper":"DescribeLoadBalancersResult" }, "errors":[ @@ -775,11 +713,32 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true } - ], - "documentation":"

\n Returns detailed configuration information for all the load balancers created for the account.\n If you specify load balancer names, the action returns configuration information of the specified\n load balancers.

\n \n In order to retrieve this information, you must provide the same account credentials \n that was used to create the load balancer.\n \n \n Description of a specified load balancer \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerNames.member.1=MyLoadBalancer\n&Version=2012-06-01\n&Action=DescribeLoadBalancers\n&AUTHPARAMS \n \n \n \n \n MyLoadBalancer\n 2013-05-24T21:15:31.280Z\n \n 90\n HTTP:80/\n 2\n 60\n 10\n \n \n \n \n \n HTTP\n 80\n HTTP\n 80\n \n \n \n \n \n i-e4cbe38d\n \n \n \n \n \n \n \n \n us-east-1a\n \n ZZZZZZZZZZZ123X\n MyLoadBalancer-123456789.us-east-1.elb.amazonaws.com\n internet-facing\n \n amazon-elb\n amazon-elb-sg\n \n MyLoadBalancer-123456789.us-east-1.elb.amazonaws.com\n \n \n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\t\n \n \n " + ] + }, + "DescribeTags":{ + "name":"DescribeTags", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeTagsInput"}, + "output":{ + "shape":"DescribeTagsOutput", + "resultWrapper":"DescribeTagsResult" + }, + "errors":[ + { + "shape":"AccessPointNotFoundException", + "error":{ + "code":"LoadBalancerNotFound", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + } + ] }, "DetachLoadBalancerFromSubnets":{ "name":"DetachLoadBalancerFromSubnets", @@ -787,13 +746,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"DetachLoadBalancerFromSubnetsInput", - "documentation":"

\n The input for the DetachLoadBalancerFromSubnets action. \n

" - }, + "input":{"shape":"DetachLoadBalancerFromSubnetsInput"}, "output":{ "shape":"DetachLoadBalancerFromSubnetsOutput", - "documentation":"

\n The output for the DetachLoadBalancerFromSubnets action.\n

", "resultWrapper":"DetachLoadBalancerFromSubnetsResult" }, "errors":[ @@ -804,8 +759,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -814,11 +768,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Removes subnets from the set of configured subnets in the Amazon Virtual Private Cloud (Amazon VPC) for the load balancer. \n

\n

\n After a subnet is removed all of the EC2 instances registered with the load balancer that are \n in the removed subnet will go into the OutOfService state. When a subnet is removed, the load balancer\n will balance the traffic among the remaining routable subnets for the load balancer. \n

\n \n https://elasticloadbalancing.amazonaws.com/?Subnets.member.1=subnet-119f0078\n&LoadBalancerName=my-test-vpc-loadbalancer\n&Version=2012-06-01\n&Action=DetachLoadBalancerFromSubnets\n&AUTHPARAMS \n \n \n \n subnet-159f007c\n subnet-3561b05e\n \n \n \n 07b1ecbc-1100-11e3-acaf-dd7edEXAMPLE\n \n\n \n " + ] }, "DisableAvailabilityZonesForLoadBalancer":{ "name":"DisableAvailabilityZonesForLoadBalancer", @@ -826,13 +778,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"RemoveAvailabilityZonesInput", - "documentation":"

\n\t\tThe input for the DisableAvailabilityZonesForLoadBalancer action.\n\t\t

" - }, + "input":{"shape":"RemoveAvailabilityZonesInput"}, "output":{ "shape":"RemoveAvailabilityZonesOutput", - "documentation":"

\n\t\tThe output for the DisableAvailabilityZonesForLoadBalancer action.\n\t\t

", "resultWrapper":"DisableAvailabilityZonesForLoadBalancerResult" }, "errors":[ @@ -843,8 +791,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -853,11 +800,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Removes the specified EC2 Availability Zones from\n the set of configured Availability Zones for the load balancer.\n

\n

\n There must be at least one Availability Zone registered\n with a load balancer at all times. \n Once an Availability Zone is removed, all the instances\n registered with the load balancer that are in the removed\n Availability Zone go into the OutOfService state. Upon Availability\n Zone removal, the load balancer attempts to equally balance\n the traffic among its remaining usable Availability Zones.\n Trying to remove an Availability Zone that was not associated with\n the load balancer does nothing.\n

\n

For more information, see Disable an Availability Zone from a Load-Balanced Application\n in the Elastic Load Balancing Developer Guide.

\n \n \n https://elasticloadbalancing.amazonaws.com/?AvailabilityZones.member.1=us-east-1a\n&LoadBalancerName=MyHTTPSLoadBalancer\n&Version=2012-06-01\n&Action=DisableAvailabilityZonesForLoadBalancer\n&AUTHPARAMS \n \n \n \n us-east-1b\n \n \n \n ba6267d5-2566-11e3-9c6d-eb728EXAMPLE\n \n\n \n \n " + ] }, "EnableAvailabilityZonesForLoadBalancer":{ "name":"EnableAvailabilityZonesForLoadBalancer", @@ -865,13 +810,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"AddAvailabilityZonesInput", - "documentation":"

\n\t\tThe input for the EnableAvailabilityZonesForLoadBalancer action.\n\t\t

" - }, + "input":{"shape":"AddAvailabilityZonesInput"}, "output":{ "shape":"AddAvailabilityZonesOutput", - "documentation":"

\n\t\tThe output for the EnableAvailabilityZonesForLoadBalancer action.\n\t\t

", "resultWrapper":"EnableAvailabilityZonesForLoadBalancerResult" }, "errors":[ @@ -882,11 +823,9 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true } - ], - "documentation":"

\n Adds one or more EC2 Availability Zones to the load balancer.\n

\n

\n The load balancer evenly distributes requests across all\n its registered Availability Zones that contain instances. \n

\n \n The new EC2 Availability Zones to be added must be in the same\n EC2 Region as the Availability Zones for which the\n load balancer was created.\n \n

For more information, see Expand a Load Balanced Application to an Additional Availability Zone\n in the Elastic Load Balancing Developer Guide.

\n \n \n Enable Availability Zone us-east-1c for my-test-loadbalancer. \n https://elasticloadbalancing.amazonaws.com/?AvailabilityZones.member.1=us-east-1c\n&LoadBalancerName=my-test-loadbalancer\n&Version=2012-06-01\n&Action=EnableAvailabilityZonesForLoadBalancer\n&AUTHPARAMS \n \n \n \n us-east-1a\n us-east-1c\n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n " + ] }, "ModifyLoadBalancerAttributes":{ "name":"ModifyLoadBalancerAttributes", @@ -894,13 +833,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"ModifyLoadBalancerAttributesInput", - "documentation":"

The input for the ModifyLoadBalancerAttributes action.

" - }, + "input":{"shape":"ModifyLoadBalancerAttributesInput"}, "output":{ "shape":"ModifyLoadBalancerAttributesOutput", - "documentation":"

The output for the ModifyLoadBalancerAttributes action.

", "resultWrapper":"ModifyLoadBalancerAttributesResult" }, "errors":[ @@ -911,8 +846,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"LoadBalancerAttributeNotFoundException", @@ -921,8 +855,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

The specified load balancer attribute could not be found.

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -931,11 +864,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

Modifies the attributes of a specified load balancer.

\n

You can modify the load balancer attributes, such as AccessLogs, ConnectionDraining, and \n CrossZoneLoadBalancing by either enabling or disabling them.

\n

For information on cross-zone load balancing, see Request Routing and for information on connection draining, see Connection Draining\n in the Concepts section of the\n Elastic Load Balancer Developer Guide. For information on access logs, see Access Logs.

\n \n \n \n Enable Cross-Zone Load Balancing \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer\n&LoadBalancerAttributes.CrossZoneLoadBalancing.Enabled=true \n&Version=2012-06-01\n&Action=ModifyLoadBalancerAttributes\n&AUTHPARAMS \n <\n \nMyLoadBalancer\n \n \n true\n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n \n Enable Access Log\n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer\n&LoadBalancerAttributes.AccessLog.Enabled=true \n&LoadBalancerAttributes.AccessLog.S3BucketName=my-loadbalancer-logs\n&LoadBalancerAttributes.AccessLog.S3BucketPrefix=my-bucket-prefix/prod\n&LoadBalancerAttributes.AccessLog.EmitInterval=60\n&Version=2012-06-01\n&Action=ModifyLoadBalancerAttributes\n&AUTHPARAMS \n \n <\n\n MyLoadBalancer\n \n \n true\n my-loadbalancer-logs\n my-bucket-prefix/prod\n 60\n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n \n \n Enable Connection Draining\n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer\n&LoadBalancerAttributes.ConnectionDraining.Enabled=true \n&LoadBalancerAttributes.ConnectionDraining.Timeout=60\n&Version=2012-06-01\n&Action=ModifyLoadBalancerAttributes\n&AUTHPARAMS \n \n <\n\n MyLoadBalancer\n \n \n true\n 60 \n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n \n " + ] }, "RegisterInstancesWithLoadBalancer":{ "name":"RegisterInstancesWithLoadBalancer", @@ -943,13 +874,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"RegisterEndPointsInput", - "documentation":"

\n\t\tThe input for the RegisterInstancesWithLoadBalancer action.\n\t\t

" - }, + "input":{"shape":"RegisterEndPointsInput"}, "output":{ "shape":"RegisterEndPointsOutput", - "documentation":"

\n\t\tThe output for the RegisterInstancesWithLoadBalancer action.\n\t\t

", "resultWrapper":"RegisterInstancesWithLoadBalancerResult" }, "errors":[ @@ -960,8 +887,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"InvalidEndPointException", @@ -970,11 +896,32 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified EndPoint is not valid.\n

" + "exception":true } - ], - "documentation":"

\n Adds new instances to the load balancer.\n

\n

\n Once the instance is registered, it starts receiving traffic\n and requests from the load balancer. Any instance that is not\n in any of the Availability Zones registered for the load balancer\n will be moved to the OutOfService state. It will move to the\n InService state when the Availability Zone is added to the load balancer.\n

\n

When an instance registered with a load balancer is stopped and then restarted, \n the IP addresses associated with the instance changes. Elastic Load Balancing \n cannot recognize the new IP address, which prevents it from routing traffic to\n the instances. We recommend that you de-register your Amazon EC2 instances from\n your load balancer after you stop your instance, and then register the load \n balancer with your instance after you've restarted. To de-register your instances \n from load balancer, use DeregisterInstancesFromLoadBalancer action.

\n

For more information, see De-register and Register Amazon EC2 Instances \n in the Elastic Load Balancing Developer Guide.

\n \n In order for this call to be successful, you must provide the same \n account credentials as those that were used to create the load balancer.\n \n \n Completion of this API does not guarantee that operation has completed.\n Rather, it means that the request has been registered and the\n changes will happen shortly.\n \n

You can use DescribeLoadBalancers or DescribeInstanceHealth action to check the state of the newly registered instances.

\n \n \n https://elasticloadbalancing.amazonaws.com/?Instances.member.1.InstanceId=i-315b7e51\n&LoadBalancerName=my-test-loadbalancer\n&Version=2012-06-01\n&Action=RegisterInstancesWithLoadBalancer\n&AUTHPARAMS \n \n \n \n \n i-315b7e51\n \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n " + ] + }, + "RemoveTags":{ + "name":"RemoveTags", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"RemoveTagsInput"}, + "output":{ + "shape":"RemoveTagsOutput", + "resultWrapper":"RemoveTagsResult" + }, + "errors":[ + { + "shape":"AccessPointNotFoundException", + "error":{ + "code":"LoadBalancerNotFound", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + } + ] }, "SetLoadBalancerListenerSSLCertificate":{ "name":"SetLoadBalancerListenerSSLCertificate", @@ -982,13 +929,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"SetLoadBalancerListenerSSLCertificateInput", - "documentation":"

\n The input for the SetLoadBalancerListenerSSLCertificate action.\n

" - }, + "input":{"shape":"SetLoadBalancerListenerSSLCertificateInput"}, "output":{ "shape":"SetLoadBalancerListenerSSLCertificateOutput", - "documentation":"

\n The output for the SetLoadBalancerListenerSSLCertificate action.\n

", "resultWrapper":"SetLoadBalancerListenerSSLCertificateResult" }, "errors":[ @@ -999,8 +942,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified SSL ID does not refer to a valid SSL certificate \n in the AWS Identity and Access Management Service.\n

" + "exception":true }, { "shape":"AccessPointNotFoundException", @@ -1009,8 +951,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"ListenerNotFoundException", @@ -1019,8 +960,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Load balancer does not have a listener configured at the given port.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -1029,11 +969,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Sets the certificate that terminates the specified listener's SSL connections. \n The specified certificate replaces any prior certificate that was used on the same load balancer and port. \n

\n

For more information on updating your SSL certificate, see Updating an SSL Certificate for a Load Balancer\n in the Elastic Load Balancing Developer Guide.

\n \n \n \n https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyInternalLoadBalancer\n&SSLCertificateId=arn:aws:iam::123456789012:server-certificate/testcert\n&LoadBalancerPort=443\n&Version=2012-06-01\n&Action=SetLoadBalancerListenerSSLCertificate\n&AUTHPARAMS \n \n \n\n 83c88b9d-12b7-11e3-8b82-87b12EXAMPLE\n\n\n \n \n " + ] }, "SetLoadBalancerPoliciesForBackendServer":{ "name":"SetLoadBalancerPoliciesForBackendServer", @@ -1044,7 +982,6 @@ "input":{"shape":"SetLoadBalancerPoliciesForBackendServerInput"}, "output":{ "shape":"SetLoadBalancerPoliciesForBackendServerOutput", - "documentation":"

\n The output for the SetLoadBalancerPoliciesForBackendServer action.\n

", "resultWrapper":"SetLoadBalancerPoliciesForBackendServerResult" }, "errors":[ @@ -1055,8 +992,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"PolicyNotFoundException", @@ -1065,8 +1001,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more specified policies were not found.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -1075,11 +1010,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Replaces the current set of policies associated with a port on which the back-end server is listening with a new set of policies. After the policies have been created using CreateLoadBalancerPolicy, \n they can be applied here as a list. At this time, only the back-end server authentication policy type can be applied to the back-end ports; this policy type is composed of multiple public key policies.\n

\n \n

The SetLoadBalancerPoliciesForBackendServer replaces the current set of policies associated with the specified instance port. \n Every time you use this action to enable the policies, use the PolicyNames parameter to list all the policies you want to enable.

\n
\n \n https://elasticloadbalancing.amazonaws.com/?InstancePort=80\n&PolicyNames.member.1=EnableProxyProtocol\n&PolicyNames.member.2=MyPolicyName2\n&PolicyNames.member.3=MyPolicyName3\n&LoadBalancerName=my-test-loadbalancer\n&Version=2012-06-01\n&Action=SetLoadBalancerPoliciesForBackendServer\n&AUTHPARAMS \n \n \n \n 0eb9b381-dde0-11e2-8d78-6ddbaEXAMPLE\n \n \n \n \n

You can use DescribeLoadBalancers or DescribeLoadBalancerPolicies action to verify that the policy has been associated with the back-end server.

" + ] }, "SetLoadBalancerPoliciesOfListener":{ "name":"SetLoadBalancerPoliciesOfListener", @@ -1087,13 +1020,9 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"SetLoadBalancerPoliciesOfListenerInput", - "documentation":"

\n The input for the SetLoadBalancerPoliciesOfListener action.\n

" - }, + "input":{"shape":"SetLoadBalancerPoliciesOfListenerInput"}, "output":{ "shape":"SetLoadBalancerPoliciesOfListenerOutput", - "documentation":"

\n The output for the SetLoadBalancerPoliciesOfListener action.\n

", "resultWrapper":"SetLoadBalancerPoliciesOfListenerResult" }, "errors":[ @@ -1104,8 +1033,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, { "shape":"PolicyNotFoundException", @@ -1114,8 +1042,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more specified policies were not found.\n

" + "exception":true }, { "shape":"ListenerNotFoundException", @@ -1124,8 +1051,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Load balancer does not have a listener configured at the given port.\n

" + "exception":true }, { "shape":"InvalidConfigurationRequestException", @@ -1134,11 +1060,9 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true } - ], - "documentation":"

\n Associates, updates, or disables a policy with a listener on the load balancer. \n You can associate multiple policies with a listener. \n

\n \n Associate MySSLNegotiationPolicy with the load balancer port 443 on the MyInternalLoadbalancer load balancer. \n https://elasticloadbalancing.amazonaws.com/?PolicyNames.member.1=MySSLNegotiationPolicy\n&LoadBalancerName=MyInternalLoadBalancer\n&LoadBalancerPort=443\n&Version=2012-06-01\n&Action=SetLoadBalancerPoliciesOfListener\n&AUTHPARAMS \n \n \n \n 07b1ecbc-1100-11e3-acaf-dd7edEXAMPLE\n \n\n \n " + ] } }, "shapes":{ @@ -1146,24 +1070,11 @@ "type":"structure", "required":["Enabled"], "members":{ - "Enabled":{ - "shape":"AccessLogEnabled", - "documentation":"

Specifies whether access log is enabled for the load balancer.

" - }, - "S3BucketName":{ - "shape":"S3BucketName", - "documentation":"

The name of the Amazon S3 bucket where the access logs are stored.

" - }, - "EmitInterval":{ - "shape":"AccessLogInterval", - "documentation":"

The interval for publishing the access logs. You can specify an interval of either 5 minutes or 60 minutes.

\n

Default: 60 minutes

" - }, - "S3BucketPrefix":{ - "shape":"AccessLogPrefix", - "documentation":"

The logical hierarchy you created for your Amazon S3 bucket, for example my-bucket-prefix/prod. \n If the prefix is not provided, the log is placed at the root level of the bucket.

" - } - }, - "documentation":"

The AccessLog data type.

" + "Enabled":{"shape":"AccessLogEnabled"}, + "S3BucketName":{"shape":"S3BucketName"}, + "EmitInterval":{"shape":"AccessLogInterval"}, + "S3BucketPrefix":{"shape":"AccessLogPrefix"} + } }, "AccessLogEnabled":{"type":"boolean"}, "AccessLogInterval":{"type":"integer"}, @@ -1178,8 +1089,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified load balancer could not be found.\n

" + "exception":true }, "AccessPointPort":{"type":"integer"}, "AddAvailabilityZonesInput":{ @@ -1189,26 +1099,31 @@ "AvailabilityZones" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer. \n

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

\n A list of new Availability Zones for the load balancer.\n Each Availability Zone must be in the same region as the load balancer.\n

" - } - }, - "documentation":"

\n\t\tThe input for the EnableAvailabilityZonesForLoadBalancer action.\n\t\t

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "AvailabilityZones":{"shape":"AvailabilityZones"} + } }, "AddAvailabilityZonesOutput":{ "type":"structure", "members":{ - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

\n An updated list of Availability Zones for the load balancer.\n

" - } - }, - "documentation":"

\n\t\tThe output for the EnableAvailabilityZonesForLoadBalancer action.\n\t\t

" + "AvailabilityZones":{"shape":"AvailabilityZones"} + } + }, + "AddTagsInput":{ + "type":"structure", + "required":[ + "LoadBalancerNames", + "Tags" + ], + "members":{ + "LoadBalancerNames":{"shape":"LoadBalancerNames"}, + "Tags":{"shape":"TagList"} + } + }, + "AddTagsOutput":{ + "type":"structure", + "members":{ + } }, "AppCookieStickinessPolicies":{ "type":"list", @@ -1217,16 +1132,9 @@ "AppCookieStickinessPolicy":{ "type":"structure", "members":{ - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The mnemonic name for the policy being created. The name must be unique within a set of policies for this load balancer.\n

" - }, - "CookieName":{ - "shape":"CookieName", - "documentation":"

The name of the application cookie used for stickiness.\n

" - } - }, - "documentation":"

The AppCookieStickinessPolicy data type.\n

" + "PolicyName":{"shape":"PolicyName"}, + "CookieName":{"shape":"CookieName"} + } }, "ApplySecurityGroupsToLoadBalancerInput":{ "type":"structure", @@ -1235,26 +1143,15 @@ "SecurityGroups" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer.\n The name must be unique within the set of load balancers associated with your AWS account. \n

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

\n A list of security group IDs to associate with your load balancer in VPC. The security\n group IDs must be provided as the ID and not the security group name (For example, sg-1234).\n

" - } - }, - "documentation":"

\n The input for the ApplySecurityGroupsToLoadBalancer action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "SecurityGroups":{"shape":"SecurityGroups"} + } }, "ApplySecurityGroupsToLoadBalancerOutput":{ "type":"structure", "members":{ - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

\n A list of security group IDs associated with your load balancer.\n

" - } - }, - "documentation":"

\n The out for the ApplySecurityGroupsToLoadBalancer action.\n

" + "SecurityGroups":{"shape":"SecurityGroups"} + } }, "AttachLoadBalancerToSubnetsInput":{ "type":"structure", @@ -1263,26 +1160,15 @@ "Subnets" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer.\n The name must be unique within the set of load balancers associated with your AWS account.\n

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

\n A list of subnet IDs to add for the load balancer. You can add only one subnet per Availability Zone.\n

" - } - }, - "documentation":"

\n The input for the AttachLoadBalancerToSubnets action. \n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "Subnets":{"shape":"Subnets"} + } }, "AttachLoadBalancerToSubnetsOutput":{ "type":"structure", "members":{ - "Subnets":{ - "shape":"Subnets", - "documentation":"

\n A list of subnet IDs attached to the load balancer. \n

" - } - }, - "documentation":"

\n The output for the AttachLoadBalancerToSubnets action.\n

" + "Subnets":{"shape":"Subnets"} + } }, "AttributeName":{"type":"string"}, "AttributeType":{"type":"string"}, @@ -1295,16 +1181,9 @@ "BackendServerDescription":{ "type":"structure", "members":{ - "InstancePort":{ - "shape":"InstancePort", - "documentation":"

\n Provides the port on which the back-end server is listening.\n

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

\n Provides a list of policy names enabled for the back-end server.\n

" - } - }, - "documentation":"

\n This data type is used as a response element in the DescribeLoadBalancers action to describe the configuration of the back-end server.\n

" + "InstancePort":{"shape":"InstancePort"}, + "PolicyNames":{"shape":"PolicyNames"} + } }, "BackendServerDescriptions":{ "type":"list", @@ -1320,8 +1199,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified SSL ID does not refer to a valid SSL certificate \n in the AWS Identity and Access Management Service.\n

" + "exception":true }, "ConfigureHealthCheckInput":{ "type":"structure", @@ -1330,44 +1208,33 @@ "HealthCheck" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The mnemonic name associated with the load balancer.\n The name must be unique within the set of load balancers associated with your AWS account.\n

" - }, - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

\n A structure containing the configuration information\n for the new healthcheck.\n

" - } - }, - "documentation":"

\n Input for the ConfigureHealthCheck action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "HealthCheck":{"shape":"HealthCheck"} + } }, "ConfigureHealthCheckOutput":{ "type":"structure", "members":{ - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

\n The updated healthcheck for the instances.\n

" - } - }, - "documentation":"

\n The output for the ConfigureHealthCheck action.\n

" + "HealthCheck":{"shape":"HealthCheck"} + } }, "ConnectionDraining":{ "type":"structure", "required":["Enabled"], "members":{ - "Enabled":{ - "shape":"ConnectionDrainingEnabled", - "documentation":"

Specifies whether connection draining is enabled for the load balancer.

" - }, - "Timeout":{ - "shape":"ConnectionDrainingTimeout", - "documentation":"

Specifies the maximum time (in seconds) to keep the existing connections open before deregistering the instances.

" - } - }, - "documentation":"

The ConnectionDraining data type.

" + "Enabled":{"shape":"ConnectionDrainingEnabled"}, + "Timeout":{"shape":"ConnectionDrainingTimeout"} + } }, "ConnectionDrainingEnabled":{"type":"boolean"}, "ConnectionDrainingTimeout":{"type":"integer"}, + "ConnectionSettings":{ + "type":"structure", + "required":["IdleTimeout"], + "members":{ + "IdleTimeout":{"shape":"IdleTimeout"} + } + }, "CookieExpirationPeriod":{"type":"long"}, "CookieName":{"type":"string"}, "CreateAccessPointInput":{ @@ -1377,42 +1244,20 @@ "Listeners" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer.\n The name must be unique within your set of load balancers.\n

" - }, - "Listeners":{ - "shape":"Listeners", - "documentation":"

\n A list of the following tuples:\n LoadBalancerPort, InstancePort, and Protocol.\n

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

\n A list of Availability Zones.\n

\n

\n At least one Availability Zone must be specified.\n Specified Availability Zones must be in the same EC2 Region\n as the load balancer.\n Traffic will be equally distributed across all zones.\n

\n

\n You can later add more Availability Zones after the creation of the \n load balancer by calling EnableAvailabilityZonesForLoadBalancer action.\n

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

\n A list of subnet IDs in your VPC to attach to your load balancer.\n Specify one subnet per Availability Zone.\n

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

\n The security groups to assign to your load balancer within your VPC.\n

" - }, - "Scheme":{ - "shape":"LoadBalancerScheme", - "documentation":"

The type of a load balancer.

\n \n

By default, Elastic Load Balancing creates an Internet-facing load balancer\n with a publicly resolvable DNS name, which resolves to public IP addresses.\n For more informationabout Internet-facing and Internal load balancers, \n see Internet-facing and Internal Load Balancers.

\n \n

Specify the value internal for this option to create an internal load balancer\n with a DNS name that resolves to private IP addresses.

\n \n

This option is only available for load balancers created within EC2-VPC.

\n
" - } - }, - "documentation":"

\n The input for the CreateLoadBalancer action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "Listeners":{"shape":"Listeners"}, + "AvailabilityZones":{"shape":"AvailabilityZones"}, + "Subnets":{"shape":"Subnets"}, + "SecurityGroups":{"shape":"SecurityGroups"}, + "Scheme":{"shape":"LoadBalancerScheme"}, + "Tags":{"shape":"TagList"} + } }, "CreateAccessPointOutput":{ "type":"structure", "members":{ - "DNSName":{ - "shape":"DNSName", - "documentation":"

\n The DNS name for the load balancer.\n

" - } - }, - "documentation":"

\n The output for the CreateLoadBalancer action.\n

" + "DNSName":{"shape":"DNSName"} + } }, "CreateAppCookieStickinessPolicyInput":{ "type":"structure", @@ -1422,26 +1267,15 @@ "CookieName" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name of the load balancer. \n

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

\n The name of the policy being created. \n The name must be unique within the set of policies for this load balancer. \n

" - }, - "CookieName":{ - "shape":"CookieName", - "documentation":"

\n Name of the application cookie used for stickiness. \n

" - } - }, - "documentation":"

\n The input for the CreateAppCookieStickinessPolicy action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "PolicyName":{"shape":"PolicyName"}, + "CookieName":{"shape":"CookieName"} + } }, "CreateAppCookieStickinessPolicyOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the CreateAppCookieStickinessPolicy action.\n

" + } }, "CreateLBCookieStickinessPolicyInput":{ "type":"structure", @@ -1450,26 +1284,15 @@ "PolicyName" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer. \n

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

\n The name of the policy being created. \n The name must be unique within the set of policies for this load balancer. \n

" - }, - "CookieExpirationPeriod":{ - "shape":"CookieExpirationPeriod", - "documentation":"

\n The time period in seconds after which the cookie should be considered stale. \n Not specifying this parameter indicates that the sticky session will last for the duration \n of the browser session. \n

" - } - }, - "documentation":"

\n The input for the CreateLBCookieStickinessPolicy action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "PolicyName":{"shape":"PolicyName"}, + "CookieExpirationPeriod":{"shape":"CookieExpirationPeriod"} + } }, "CreateLBCookieStickinessPolicyOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the CreateLBCookieStickinessPolicy action.\n

" + } }, "CreateLoadBalancerListenerInput":{ "type":"structure", @@ -1478,22 +1301,14 @@ "Listeners" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name of the load balancer. \n

" - }, - "Listeners":{ - "shape":"Listeners", - "documentation":"

\n A list of LoadBalancerPort, \n InstancePort, \n Protocol, and \n SSLCertificateId items. \t\n

" - } - }, - "documentation":"

\n The input for the CreateLoadBalancerListeners action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "Listeners":{"shape":"Listeners"} + } }, "CreateLoadBalancerListenerOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the CreateLoadBalancerListeners action.\n

" + } }, "CreateLoadBalancerPolicyInput":{ "type":"structure", @@ -1503,41 +1318,24 @@ "PolicyTypeName" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n \tThe name associated with the LoadBalancer for which the policy is being created. \t\n \t

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

\n \tThe name of the load balancer policy being created.\n \tThe name must be unique within the set of policies for this load balancer.\n \t

" - }, - "PolicyTypeName":{ - "shape":"PolicyTypeName", - "documentation":"

\n \tThe name of the base policy type being used to create this policy.\n \tTo get the list of policy types, use the DescribeLoadBalancerPolicyTypes action.\n \t

" - }, - "PolicyAttributes":{ - "shape":"PolicyAttributes", - "documentation":"

\n \tA list of attributes associated with the policy being created.\n \t

" - } + "LoadBalancerName":{"shape":"AccessPointName"}, + "PolicyName":{"shape":"PolicyName"}, + "PolicyTypeName":{"shape":"PolicyTypeName"}, + "PolicyAttributes":{"shape":"PolicyAttributes"} } }, "CreateLoadBalancerPolicyOutput":{ "type":"structure", "members":{ - }, - "documentation":"

The output for the CreateLoadBalancerPolicy action.\n

" + } }, "CreatedTime":{"type":"timestamp"}, "CrossZoneLoadBalancing":{ "type":"structure", "required":["Enabled"], "members":{ - "Enabled":{ - "shape":"CrossZoneLoadBalancingEnabled", - "documentation":"

Specifies whether cross-zone load balancing is enabled for the load balancer.

" - } - }, - "documentation":"

The CrossZoneLoadBalancing data type.

" + "Enabled":{"shape":"CrossZoneLoadBalancingEnabled"} + } }, "CrossZoneLoadBalancingEnabled":{"type":"boolean"}, "DNSName":{"type":"string"}, @@ -1546,18 +1344,13 @@ "type":"structure", "required":["LoadBalancerName"], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer. \n

" - } - }, - "documentation":"

\n The input for the DeleteLoadBalancer action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"} + } }, "DeleteAccessPointOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the DeleteLoadBalancer action.\n

" + } }, "DeleteLoadBalancerListenerInput":{ "type":"structure", @@ -1566,22 +1359,14 @@ "LoadBalancerPorts" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The mnemonic name associated with the load balancer. \n

" - }, - "LoadBalancerPorts":{ - "shape":"Ports", - "documentation":"

\n The client port number(s) of the load balancer listener(s) to be removed. \n

" - } - }, - "documentation":"

\n The input for the DeleteLoadBalancerListeners action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "LoadBalancerPorts":{"shape":"Ports"} + } }, "DeleteLoadBalancerListenerOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the DeleteLoadBalancerListeners action.\n

" + } }, "DeleteLoadBalancerPolicyInput":{ "type":"structure", @@ -1590,22 +1375,14 @@ "PolicyName" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The mnemonic name associated with the load balancer. \n

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

\n The mnemonic name for the policy being deleted. \n

" - } - }, - "documentation":"

\n The input for the DeleteLoadBalancerPolicy action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "PolicyName":{"shape":"PolicyName"} + } }, "DeleteLoadBalancerPolicyOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the DeleteLoadBalancerPolicy action.\n

" + } }, "DeregisterEndPointsInput":{ "type":"structure", @@ -1614,142 +1391,95 @@ "Instances" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer. \n

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

\n A list of EC2 instance IDs consisting of all\n instances to be deregistered.\n

" - } - }, - "documentation":"

\n The input for the DeregisterInstancesFromLoadBalancer action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "Instances":{"shape":"Instances"} + } }, "DeregisterEndPointsOutput":{ "type":"structure", "members":{ - "Instances":{ - "shape":"Instances", - "documentation":"

\n An updated list of remaining instances\n registered with the load balancer.\n

" - } - }, - "documentation":"

\n The output for the DeregisterInstancesFromLoadBalancer action.\n

" + "Instances":{"shape":"Instances"} + } }, "DescribeAccessPointsInput":{ "type":"structure", "members":{ - "LoadBalancerNames":{ - "shape":"LoadBalancerNames", - "documentation":"

\n A list of load balancer names associated with the account.\n

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

\n An optional parameter reserved for future use.\n

" - } - }, - "documentation":"

\n\t\tThe input for the DescribeLoadBalancers action.\n\t\t

" + "LoadBalancerNames":{"shape":"LoadBalancerNames"}, + "Marker":{"shape":"Marker"}, + "PageSize":{"shape":"PageSize"} + } }, "DescribeAccessPointsOutput":{ "type":"structure", "members":{ - "LoadBalancerDescriptions":{ - "shape":"LoadBalancerDescriptions", - "documentation":"

\n A list of load balancer description structures.\n

" - }, - "NextMarker":{ - "shape":"Marker", - "documentation":"

\n An optional parameter reserved for future use.\n

" - } - }, - "documentation":"

\n\t\tThe output for the DescribeLoadBalancers action.\n\t\t

" + "LoadBalancerDescriptions":{"shape":"LoadBalancerDescriptions"}, + "NextMarker":{"shape":"Marker"} + } }, "DescribeEndPointStateInput":{ "type":"structure", "required":["LoadBalancerName"], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name of the load balancer. \n

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

\n A list of instance IDs whose states are being queried.\n

" - } - }, - "documentation":"

\n The input for the DescribeEndPointState action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "Instances":{"shape":"Instances"} + } }, "DescribeEndPointStateOutput":{ "type":"structure", "members":{ - "InstanceStates":{ - "shape":"InstanceStates", - "documentation":"

\n A list containing health information\n for the specified instances.\n

" - } - }, - "documentation":"

\n\t\tThe output for the DescribeInstanceHealth action.\n\t\t

" + "InstanceStates":{"shape":"InstanceStates"} + } }, "DescribeLoadBalancerAttributesInput":{ "type":"structure", "required":["LoadBalancerName"], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - } - }, - "documentation":"

The input for the DescribeLoadBalancerAttributes action.

" + "LoadBalancerName":{"shape":"AccessPointName"} + } }, "DescribeLoadBalancerAttributesOutput":{ "type":"structure", "members":{ - "LoadBalancerAttributes":{ - "shape":"LoadBalancerAttributes", - "documentation":"

The load balancer attributes structure.

" - } - }, - "documentation":"

The following element is returned in a structure named DescribeLoadBalancerAttributesResult.

" + "LoadBalancerAttributes":{"shape":"LoadBalancerAttributes"} + } }, "DescribeLoadBalancerPoliciesInput":{ "type":"structure", "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n \tThe mnemonic name associated with the load balancer.\n \tIf no name is specified, the operation returns the attributes of either all the sample policies pre-defined by Elastic Load Balancing or the specified sample polices.\n \t

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

\n \t The names of load balancer policies you've created or Elastic Load Balancing sample policy names.\n \t

" - } + "LoadBalancerName":{"shape":"AccessPointName"}, + "PolicyNames":{"shape":"PolicyNames"} } }, "DescribeLoadBalancerPoliciesOutput":{ "type":"structure", "members":{ - "PolicyDescriptions":{ - "shape":"PolicyDescriptions", - "documentation":"

\n \tA list of policy description structures.\n \t

" - } - }, - "documentation":"

The output for the DescribeLoadBalancerPolicies action.\n

" + "PolicyDescriptions":{"shape":"PolicyDescriptions"} + } }, "DescribeLoadBalancerPolicyTypesInput":{ "type":"structure", "members":{ - "PolicyTypeNames":{ - "shape":"PolicyTypeNames", - "documentation":"

\n \tSpecifies the name of the policy types. If no names are specified,\n \treturns the description of all\n \tthe policy types defined by Elastic Load Balancing service.\n \t

" - } + "PolicyTypeNames":{"shape":"PolicyTypeNames"} } }, "DescribeLoadBalancerPolicyTypesOutput":{ "type":"structure", "members":{ - "PolicyTypeDescriptions":{ - "shape":"PolicyTypeDescriptions", - "documentation":"

\n \tList of policy type description structures of the specified policy type.\n \tIf no policy type names are specified,\n \treturns the description of all the policy types defined by Elastic Load Balancing service.\n \t

" - } - }, - "documentation":"

\n \tThe output for the DescribeLoadBalancerPolicyTypes action.\n \t

" + "PolicyTypeDescriptions":{"shape":"PolicyTypeDescriptions"} + } + }, + "DescribeTagsInput":{ + "type":"structure", + "required":["LoadBalancerNames"], + "members":{ + "LoadBalancerNames":{"shape":"LoadBalancerNamesMax20"} + } + }, + "DescribeTagsOutput":{ + "type":"structure", + "members":{ + "TagDescriptions":{"shape":"TagDescriptions"} + } }, "Description":{"type":"string"}, "DetachLoadBalancerFromSubnetsInput":{ @@ -1759,26 +1489,15 @@ "Subnets" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer to be detached. \n

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

\n A list of subnet IDs to remove from the set of configured subnets for the load balancer.\n

" - } - }, - "documentation":"

\n The input for the DetachLoadBalancerFromSubnets action. \n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "Subnets":{"shape":"Subnets"} + } }, "DetachLoadBalancerFromSubnetsOutput":{ "type":"structure", "members":{ - "Subnets":{ - "shape":"Subnets", - "documentation":"

\n A list of subnet IDs the load balancer is now attached to. \n

" - } - }, - "documentation":"

\n The output for the DetachLoadBalancerFromSubnets action.\n

" + "Subnets":{"shape":"Subnets"} + } }, "DuplicateAccessPointNameException":{ "type":"structure", @@ -1789,8 +1508,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Load balancer name already exists for this account.\n Please choose another name.\n

" + "exception":true }, "DuplicateListenerException":{ "type":"structure", @@ -1801,8 +1519,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n A Listener already exists for the given \n LoadBalancerName and LoadBalancerPort, \n but with a different InstancePort, Protocol, \n or SSLCertificateId. \t\n

" + "exception":true }, "DuplicatePolicyNameException":{ "type":"structure", @@ -1813,8 +1530,18 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Policy with the same name exists for this load balancer.\n Please choose another name.\n

" + "exception":true + }, + "DuplicateTagKeysException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"DuplicateTagKeys", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true }, "EndPointPort":{"type":"integer"}, "HealthCheck":{ @@ -1827,28 +1554,12 @@ "HealthyThreshold" ], "members":{ - "Target":{ - "shape":"HealthCheckTarget", - "documentation":"

\n Specifies the instance being checked. The protocol is either TCP, HTTP, HTTPS, or SSL.\n The range of valid ports is one (1) through 65535.\n

\n \n

\n TCP is the default, specified as a TCP: port pair,\n for example \"TCP:5000\". In this case a healthcheck simply\n attempts to open a TCP connection to the instance on the\n specified port. Failure to connect within the configured\n timeout is considered unhealthy.\n

\n

SSL is also specified as SSL: port pair, for example, SSL:5000.

\n

\n For HTTP or HTTPS protocol, the situation is different. You have to include a ping path in the string. HTTP is specified\n as a HTTP:port;/;PathToPing; grouping, for example\n \"HTTP:80/weather/us/wa/seattle\". In this case, a HTTP GET\n request is issued to the instance on the given port and path.\n Any answer other than \"200 OK\" within the timeout period is\n considered unhealthy.\n

\n

\n The total length of the HTTP ping target needs to\n be 1024 16-bit Unicode characters or less.\n

\n
" - }, - "Interval":{ - "shape":"HealthCheckInterval", - "documentation":"

\n Specifies the approximate interval, in seconds,\n between health checks of an individual instance.\n

" - }, - "Timeout":{ - "shape":"HealthCheckTimeout", - "documentation":"

\n Specifies the amount of time, in seconds, during which no response\n means a failed health probe.\n

\n \n This value must be less than the Interval value.\n " - }, - "UnhealthyThreshold":{ - "shape":"UnhealthyThreshold", - "documentation":"

\n Specifies the number of consecutive health probe failures required\n before moving the instance to the Unhealthy state.\n

" - }, - "HealthyThreshold":{ - "shape":"HealthyThreshold", - "documentation":"

\n Specifies the number of consecutive health probe successes required before\n moving the instance to the Healthy state.\n

" - } - }, - "documentation":"

\n The HealthCheck data type.\n

" + "Target":{"shape":"HealthCheckTarget"}, + "Interval":{"shape":"HealthCheckInterval"}, + "Timeout":{"shape":"HealthCheckTimeout"}, + "UnhealthyThreshold":{"shape":"UnhealthyThreshold"}, + "HealthyThreshold":{"shape":"HealthyThreshold"} + } }, "HealthCheckInterval":{ "type":"integer", @@ -1866,15 +1577,16 @@ "min":2, "max":10 }, + "IdleTimeout":{ + "type":"integer", + "min":1, + "max":3600 + }, "Instance":{ "type":"structure", "members":{ - "InstanceId":{ - "shape":"InstanceId", - "documentation":"

\n Provides an EC2 instance ID.\n

" - } - }, - "documentation":"

\n The Instance data type.\n

" + "InstanceId":{"shape":"InstanceId"} + } }, "InstanceId":{"type":"string"}, "InstancePort":{ @@ -1885,24 +1597,11 @@ "InstanceState":{ "type":"structure", "members":{ - "InstanceId":{ - "shape":"InstanceId", - "documentation":"

\n Provides an EC2 instance ID.\n

" - }, - "State":{ - "shape":"State", - "documentation":"

Specifies the current state of the instance.

\n \n

Valid value: InService|OutOfService

" - }, - "ReasonCode":{ - "shape":"ReasonCode", - "documentation":"

\n Provides information about the cause of OutOfService instances.\n Specifically, it indicates whether the cause is Elastic Load Balancing\n or the instance behind the load balancer.\n

\n

Valid value: ELB|Instance|N/A

" - }, - "Description":{ - "shape":"Description", - "documentation":"

\n Provides a description of the instance state.\n

" - } - }, - "documentation":"

\n The InstanceState data type.\n

" + "InstanceId":{"shape":"InstanceId"}, + "State":{"shape":"State"}, + "ReasonCode":{"shape":"ReasonCode"}, + "Description":{"shape":"Description"} + } }, "InstanceStates":{ "type":"list", @@ -1921,8 +1620,7 @@ "httpStatusCode":409, "senderFault":true }, - "exception":true, - "documentation":"

\n Requested configuration change is invalid.\n

" + "exception":true }, "InvalidEndPointException":{ "type":"structure", @@ -1933,8 +1631,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The specified EndPoint is not valid.\n

" + "exception":true }, "InvalidSchemeException":{ "type":"structure", @@ -1945,8 +1642,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Invalid value for scheme. Scheme can only be specified for load balancers in VPC. \n

" + "exception":true }, "InvalidSecurityGroupException":{ "type":"structure", @@ -1957,8 +1653,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more specified security groups do not exist. \n

" + "exception":true }, "InvalidSubnetException":{ "type":"structure", @@ -1969,8 +1664,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The VPC has no Internet gateway. \n

" + "exception":true }, "LBCookieStickinessPolicies":{ "type":"list", @@ -1979,16 +1673,9 @@ "LBCookieStickinessPolicy":{ "type":"structure", "members":{ - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The name for the policy being created. The name must be unique within the set of policies for this load balancer.\n

" - }, - "CookieExpirationPeriod":{ - "shape":"CookieExpirationPeriod", - "documentation":"

The time period in seconds after which the cookie should be considered stale. Not specifying this parameter indicates that the stickiness session will last for the duration of the browser session.\n

" - } - }, - "documentation":"

The LBCookieStickinessPolicy data type.\n

" + "PolicyName":{"shape":"PolicyName"}, + "CookieExpirationPeriod":{"shape":"CookieExpirationPeriod"} + } }, "Listener":{ "type":"structure", @@ -1998,39 +1685,19 @@ "InstancePort" ], "members":{ - "Protocol":{ - "shape":"Protocol", - "documentation":"

\n Specifies the load balancer transport protocol to use for routing\n - HTTP, HTTPS, TCP or SSL.\n This property cannot be modified for the life of the load balancer.\n

" - }, - "LoadBalancerPort":{ - "shape":"AccessPointPort", - "documentation":"

\n Specifies the external load balancer port number.\n This property cannot be modified for the life of the load balancer.\n

" - }, - "InstanceProtocol":{ - "shape":"Protocol", - "documentation":"

\n \tSpecifies the protocol to use for routing traffic to back-end instances - HTTP, HTTPS, TCP, or SSL.\n \tThis property cannot be modified for the life of the load balancer.\n \t

\n \t\n \tIf the front-end protocol is HTTP or HTTPS, InstanceProtocol has to be at the same protocol layer,\n \t i.e., HTTP or HTTPS. Likewise, if the front-end protocol is TCP or SSL, InstanceProtocol has to be TCP or SSL.\n \t\n \t\n \tIf there is another listener with the same InstancePort whose InstanceProtocol is secure,\n \ti.e., HTTPS or SSL, the listener's InstanceProtocol has to be secure, i.e., HTTPS or SSL. \n If there is another listener with the same InstancePort whose InstanceProtocol is HTTP or TCP,\n the listener's InstanceProtocol must be either HTTP or TCP. \n \t" - }, - "InstancePort":{ - "shape":"InstancePort", - "documentation":"

\n Specifies the TCP port on which the instance server is listening.\n This property cannot be modified for the life of the load balancer.\n

" - }, - "SSLCertificateId":{ - "shape":"SSLCertificateId", - "documentation":"

\n The ARN string of the server certificate. \n To get the ARN of the server certificate, call the AWS Identity and Access Management \n UploadServerCertificate \t\n API.

" - } - }, - "documentation":"

\n The Listener data type.\n

" + "Protocol":{"shape":"Protocol"}, + "LoadBalancerPort":{"shape":"AccessPointPort"}, + "InstanceProtocol":{"shape":"Protocol"}, + "InstancePort":{"shape":"InstancePort"}, + "SSLCertificateId":{"shape":"SSLCertificateId"} + } }, "ListenerDescription":{ "type":"structure", "members":{ "Listener":{"shape":"Listener"}, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

\n A list of policies enabled for this listener. \n An empty list indicates that no policies are enabled.\n

" - } - }, - "documentation":"

\n The ListenerDescription data type. \n

" + "PolicyNames":{"shape":"PolicyNames"} + } }, "ListenerDescriptions":{ "type":"list", @@ -2045,8 +1712,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Load balancer does not have a listener configured at the given port.\n

" + "exception":true }, "Listeners":{ "type":"list", @@ -2061,96 +1727,37 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

The specified load balancer attribute could not be found.

" + "exception":true }, "LoadBalancerAttributes":{ "type":"structure", "members":{ - "CrossZoneLoadBalancing":{ - "shape":"CrossZoneLoadBalancing", - "documentation":"

The name of the load balancer attribute. \n If enabled, the load balancer routes the request traffic evenly across all back-end instances regardless of the Availability Zones.

\n

For more information, see Enable Cross-Zone Load Balancing.

" - }, - "AccessLog":{ - "shape":"AccessLog", - "documentation":"

The name of the load balancer attribute.\n If enabled, the load balancer captures detailed information of all the requests and delivers the information to the Amazon S3 bucket you specify.

\n

For more information, see Enable Access Logs.

" - }, - "ConnectionDraining":{ - "shape":"ConnectionDraining", - "documentation":"

The name of the load balancer attribute.\n If enabled, the load balancer allows existing requests to complete before the load balancer shifts traffic away from a deregistered or unhealthy back-end instance.

\n

For more information, see Enable Connection Draining.

" - } - }, - "documentation":"

The LoadBalancerAttributes data type.

" + "CrossZoneLoadBalancing":{"shape":"CrossZoneLoadBalancing"}, + "AccessLog":{"shape":"AccessLog"}, + "ConnectionDraining":{"shape":"ConnectionDraining"}, + "ConnectionSettings":{"shape":"ConnectionSettings"} + } }, "LoadBalancerDescription":{ "type":"structure", "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n Specifies the name associated with the load balancer.\n

" - }, - "DNSName":{ - "shape":"DNSName", - "documentation":"

\n Specifies the external DNS name associated with the load balancer.\n

" - }, - "CanonicalHostedZoneName":{ - "shape":"DNSName", - "documentation":"

\n Provides the name of the Amazon Route 53 hosted zone that is associated\n with the load balancer. For information on how to associate your load\n balancer with a hosted zone, go to Using Domain Names With Elastic Load Balancing\n in the Elastic Load Balancing Developer Guide.\n

" - }, - "CanonicalHostedZoneNameID":{ - "shape":"DNSName", - "documentation":"

\n Provides the ID of the Amazon Route 53 hosted zone name that is associated\n with the load balancer. For information on how to associate or disassociate your load\n balancer with a hosted zone, go to Using Domain Names With Elastic Load Balancing\n in the Elastic Load Balancing Developer Guide. \n

" - }, - "ListenerDescriptions":{ - "shape":"ListenerDescriptions", - "documentation":"

\n LoadBalancerPort, InstancePort, Protocol, InstanceProtocol, and PolicyNames are returned\n in a list of tuples in the ListenerDescriptions element.\n

" - }, - "Policies":{ - "shape":"Policies", - "documentation":"

\n \t\tProvides a list of policies defined for the load balancer.\n \t\t

" - }, - "BackendServerDescriptions":{ - "shape":"BackendServerDescriptions", - "documentation":"

\n Contains a list of back-end server descriptions.\n

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

\n Specifies a list of Availability Zones.\n

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

\n Provides a list of VPC subnet IDs for the load balancer.\n

" - }, - "VPCId":{ - "shape":"VPCId", - "documentation":"

\n Provides the ID of the VPC attached to the load balancer.\n

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

\n Provides a list of EC2 instance IDs for the load balancer.\n

" - }, - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

\n Specifies information regarding the\n various health probes conducted on the load balancer.\n

" - }, - "SourceSecurityGroup":{ - "shape":"SourceSecurityGroup", - "documentation":"

\n The security group that you can use as part of your inbound rules for \n your load balancer's back-end Amazon EC2 application instances. \n To only allow traffic from load balancers, add a security group rule to your back end instance that specifies this\n source security group as the inbound source. \n

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

\n The security groups the load balancer is a member of (VPC only).\n

" - }, - "CreatedTime":{ - "shape":"CreatedTime", - "documentation":"

\n Provides the date and time the load balancer was created.\n

" - }, - "Scheme":{ - "shape":"LoadBalancerScheme", - "documentation":"

Specifies the type of load balancer.

\n\n

If the Scheme is internet-facing, the load balancer\n has a publicly resolvable DNS name that resolves to public IP addresses.

\n \n

If the Scheme is internal, the load balancer has a publicly resolvable\n DNS name that resolves to private IP addresses.

\n \n

This option is only available for load balancers attached to an Amazon VPC.

" - } - }, - "documentation":"

\n Contains the result of a successful invocation of DescribeLoadBalancers.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "DNSName":{"shape":"DNSName"}, + "CanonicalHostedZoneName":{"shape":"DNSName"}, + "CanonicalHostedZoneNameID":{"shape":"DNSName"}, + "ListenerDescriptions":{"shape":"ListenerDescriptions"}, + "Policies":{"shape":"Policies"}, + "BackendServerDescriptions":{"shape":"BackendServerDescriptions"}, + "AvailabilityZones":{"shape":"AvailabilityZones"}, + "Subnets":{"shape":"Subnets"}, + "VPCId":{"shape":"VPCId"}, + "Instances":{"shape":"Instances"}, + "HealthCheck":{"shape":"HealthCheck"}, + "SourceSecurityGroup":{"shape":"SourceSecurityGroup"}, + "SecurityGroups":{"shape":"SecurityGroups"}, + "CreatedTime":{"shape":"CreatedTime"}, + "Scheme":{"shape":"LoadBalancerScheme"} + } }, "LoadBalancerDescriptions":{ "type":"list", @@ -2160,6 +1767,12 @@ "type":"list", "member":{"shape":"AccessPointName"} }, + "LoadBalancerNamesMax20":{ + "type":"list", + "member":{"shape":"AccessPointName"}, + "min":1, + "max":20 + }, "LoadBalancerScheme":{"type":"string"}, "Marker":{"type":"string"}, "ModifyLoadBalancerAttributesInput":{ @@ -2169,73 +1782,43 @@ "LoadBalancerAttributes" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "LoadBalancerAttributes":{ - "shape":"LoadBalancerAttributes", - "documentation":"

Attributes of the load balancer.

" - } - }, - "documentation":"

The input for the ModifyLoadBalancerAttributes action.

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "LoadBalancerAttributes":{"shape":"LoadBalancerAttributes"} + } }, "ModifyLoadBalancerAttributesOutput":{ "type":"structure", "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, + "LoadBalancerName":{"shape":"AccessPointName"}, "LoadBalancerAttributes":{"shape":"LoadBalancerAttributes"} - }, - "documentation":"

The output for the ModifyLoadBalancerAttributes action.

" + } + }, + "PageSize":{ + "type":"integer", + "min":1, + "max":400 }, "Policies":{ "type":"structure", "members":{ - "AppCookieStickinessPolicies":{ - "shape":"AppCookieStickinessPolicies", - "documentation":"

\n A list of the AppCookieStickinessPolicy objects created with CreateAppCookieStickinessPolicy.\n

" - }, - "LBCookieStickinessPolicies":{ - "shape":"LBCookieStickinessPolicies", - "documentation":"

\n A list of LBCookieStickinessPolicy objects created with CreateAppCookieStickinessPolicy.\n

" - }, - "OtherPolicies":{ - "shape":"PolicyNames", - "documentation":"

\n A list of policy names other than the stickiness policies.\n

" - } - }, - "documentation":"

\n The policies data type.\n

" + "AppCookieStickinessPolicies":{"shape":"AppCookieStickinessPolicies"}, + "LBCookieStickinessPolicies":{"shape":"LBCookieStickinessPolicies"}, + "OtherPolicies":{"shape":"PolicyNames"} + } }, "PolicyAttribute":{ "type":"structure", "members":{ - "AttributeName":{ - "shape":"AttributeName", - "documentation":"

\n The name of the attribute associated with the policy.\n

" - }, - "AttributeValue":{ - "shape":"AttributeValue", - "documentation":"

\n The value of the attribute associated with the policy.\n

" - } - }, - "documentation":"

\n The PolicyAttribute data type. This data type contains a key/value pair that defines properties of\n a specific policy.\n

" + "AttributeName":{"shape":"AttributeName"}, + "AttributeValue":{"shape":"AttributeValue"} + } }, "PolicyAttributeDescription":{ "type":"structure", "members":{ - "AttributeName":{ - "shape":"AttributeName", - "documentation":"

\n The name of the attribute associated with the policy.\n

" - }, - "AttributeValue":{ - "shape":"AttributeValue", - "documentation":"

\n The value of the attribute associated with the policy.\n

" - } - }, - "documentation":"

\n The PolicyAttributeDescription data type.\n This data type is used to describe the attributes and values\n associated with a policy.\n

" + "AttributeName":{"shape":"AttributeName"}, + "AttributeValue":{"shape":"AttributeValue"} + } }, "PolicyAttributeDescriptions":{ "type":"list", @@ -2244,28 +1827,12 @@ "PolicyAttributeTypeDescription":{ "type":"structure", "members":{ - "AttributeName":{ - "shape":"AttributeName", - "documentation":"

\n The name of the attribute associated with the policy type.\n

" - }, - "AttributeType":{ - "shape":"AttributeType", - "documentation":"

\n The type of attribute. For example, Boolean, Integer, etc.\n

" - }, - "Description":{ - "shape":"Description", - "documentation":"

\n A human-readable description of the attribute.\n

" - }, - "DefaultValue":{ - "shape":"DefaultValue", - "documentation":"

\n The default value of the attribute, if applicable.\n

" - }, - "Cardinality":{ - "shape":"Cardinality", - "documentation":"

\n The cardinality of the attribute. Valid Values:\n

    \n
  • ONE(1) : Single value required
  • \n
  • ZERO_OR_ONE(0..1) : Up to one value can be supplied
  • \n
  • ZERO_OR_MORE(0..*) : Optional. Multiple values are allowed
  • \n
  • ONE_OR_MORE(1..*0) : Required. Multiple values are allowed
  • \n
\n

" - } - }, - "documentation":"

\n The PolicyAttributeTypeDescription data type. This data type is used to describe values\n that are acceptable for the policy attribute.\n

" + "AttributeName":{"shape":"AttributeName"}, + "AttributeType":{"shape":"AttributeType"}, + "Description":{"shape":"Description"}, + "DefaultValue":{"shape":"DefaultValue"}, + "Cardinality":{"shape":"Cardinality"} + } }, "PolicyAttributeTypeDescriptions":{ "type":"list", @@ -2278,20 +1845,10 @@ "PolicyDescription":{ "type":"structure", "members":{ - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

\n The name of the policy associated with the load balancer.\n

" - }, - "PolicyTypeName":{ - "shape":"PolicyTypeName", - "documentation":"

\n The name of the policy type associated with the load balancer.\n

" - }, - "PolicyAttributeDescriptions":{ - "shape":"PolicyAttributeDescriptions", - "documentation":"

\n A list of policy attribute description structures.\n

" - } - }, - "documentation":"

\n The PolicyDescription data type.\n

" + "PolicyName":{"shape":"PolicyName"}, + "PolicyTypeName":{"shape":"PolicyTypeName"}, + "PolicyAttributeDescriptions":{"shape":"PolicyAttributeDescriptions"} + } }, "PolicyDescriptions":{ "type":"list", @@ -2311,26 +1868,15 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more specified policies were not found.\n

" + "exception":true }, "PolicyTypeDescription":{ "type":"structure", "members":{ - "PolicyTypeName":{ - "shape":"PolicyTypeName", - "documentation":"

\n The name of the policy type.\n

" - }, - "Description":{ - "shape":"Description", - "documentation":"

\n A human-readable description of the policy type.\n

" - }, - "PolicyAttributeTypeDescriptions":{ - "shape":"PolicyAttributeTypeDescriptions", - "documentation":"

\n The description of the policy attributes associated with the load balancer policies defined by the Elastic Load Balancing service.\n

" - } - }, - "documentation":"

\n The PolicyTypeDescription data type.\n

" + "PolicyTypeName":{"shape":"PolicyTypeName"}, + "Description":{"shape":"Description"}, + "PolicyAttributeTypeDescriptions":{"shape":"PolicyAttributeTypeDescriptions"} + } }, "PolicyTypeDescriptions":{ "type":"list", @@ -2350,8 +1896,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more of the specified policy types do not exist.\n

" + "exception":true }, "Ports":{ "type":"list", @@ -2366,26 +1911,15 @@ "Instances" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer.\n The name must be unique within your set of load balancers. \n

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

\n A list of instance IDs that should be registered with the load balancer.

" - } - }, - "documentation":"

\n\t\tThe input for the RegisterInstancesWithLoadBalancer action.\n\t\t

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "Instances":{"shape":"Instances"} + } }, "RegisterEndPointsOutput":{ "type":"structure", "members":{ - "Instances":{ - "shape":"Instances", - "documentation":"

\n An updated list of instances for the load balancer.\n

" - } - }, - "documentation":"

\n\t\tThe output for the RegisterInstancesWithLoadBalancer action.\n\t\t

" + "Instances":{"shape":"Instances"} + } }, "RemoveAvailabilityZonesInput":{ "type":"structure", @@ -2394,26 +1928,31 @@ "AvailabilityZones" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name associated with the load balancer. \n

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

\n A list of Availability Zones to be removed from the load balancer.\n

\n \n There must be at least one Availability Zone\n registered with a load balancer at all times. \n Specified Availability Zones must be in the same region.\n " - } - }, - "documentation":"

\n\t\tThe input for the DisableAvailabilityZonesForLoadBalancer action.\n\t\t

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "AvailabilityZones":{"shape":"AvailabilityZones"} + } }, "RemoveAvailabilityZonesOutput":{ "type":"structure", "members":{ - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

\n A list of updated Availability Zones for the load balancer.\n

" - } - }, - "documentation":"

\n\t\tThe output for the DisableAvailabilityZonesForLoadBalancer action.\n\t\t

" + "AvailabilityZones":{"shape":"AvailabilityZones"} + } + }, + "RemoveTagsInput":{ + "type":"structure", + "required":[ + "LoadBalancerNames", + "Tags" + ], + "members":{ + "LoadBalancerNames":{"shape":"LoadBalancerNames"}, + "Tags":{"shape":"TagKeyList"} + } + }, + "RemoveTagsOutput":{ + "type":"structure", + "members":{ + } }, "S3BucketName":{"type":"string"}, "SSLCertificateId":{"type":"string"}, @@ -2432,26 +1971,15 @@ "SSLCertificateId" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name of the load balancer. \n

" - }, - "LoadBalancerPort":{ - "shape":"AccessPointPort", - "documentation":"

\n The port that uses the specified SSL certificate. \n

" - }, - "SSLCertificateId":{ - "shape":"SSLCertificateId", - "documentation":"

\n The Amazon Resource Number (ARN) of the SSL certificate chain to use. \n For more information on SSL certificates, see \n \n Managing Server Certificates in the AWS Identity and Access Management User Guide.

" - } - }, - "documentation":"

\n The input for the SetLoadBalancerListenerSSLCertificate action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "LoadBalancerPort":{"shape":"AccessPointPort"}, + "SSLCertificateId":{"shape":"SSLCertificateId"} + } }, "SetLoadBalancerListenerSSLCertificateOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the SetLoadBalancerListenerSSLCertificate action.\n

" + } }, "SetLoadBalancerPoliciesForBackendServerInput":{ "type":"structure", @@ -2461,25 +1989,15 @@ "PolicyNames" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The mnemonic name associated with the load balancer.\n This name must be unique within the set of your load balancers.\n

" - }, - "InstancePort":{ - "shape":"EndPointPort", - "documentation":"

\n The port number associated with the back-end server.\n

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

\n List of policy names to be set. If the list is empty, then all current polices are\n removed from the back-end server.\n

" - } + "LoadBalancerName":{"shape":"AccessPointName"}, + "InstancePort":{"shape":"EndPointPort"}, + "PolicyNames":{"shape":"PolicyNames"} } }, "SetLoadBalancerPoliciesForBackendServerOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the SetLoadBalancerPoliciesForBackendServer action.\n

" + } }, "SetLoadBalancerPoliciesOfListenerInput":{ "type":"structure", @@ -2489,40 +2007,22 @@ "PolicyNames" ], "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

\n The name of the load balancer. \n

" - }, - "LoadBalancerPort":{ - "shape":"AccessPointPort", - "documentation":"

\n The external port of the load balancer to associate the policy. \n

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

\n List of policies to be associated with the listener. If the list is empty, the current policy is removed from the listener.\n

" - } - }, - "documentation":"

\n The input for the SetLoadBalancerPoliciesOfListener action.\n

" + "LoadBalancerName":{"shape":"AccessPointName"}, + "LoadBalancerPort":{"shape":"AccessPointPort"}, + "PolicyNames":{"shape":"PolicyNames"} + } }, "SetLoadBalancerPoliciesOfListenerOutput":{ "type":"structure", "members":{ - }, - "documentation":"

\n The output for the SetLoadBalancerPoliciesOfListener action.\n

" + } }, "SourceSecurityGroup":{ "type":"structure", "members":{ - "OwnerAlias":{ - "shape":"SecurityGroupOwnerAlias", - "documentation":"

\n Owner of the source security group. Use this value for the \n --source-group-user parameter of the ec2-authorize\n command in the Amazon EC2 command line tool.\n

" - }, - "GroupName":{ - "shape":"SecurityGroupName", - "documentation":"

\n Name of the source security group. Use this value for the \n --source-group parameter of the ec2-authorize\n command in the Amazon EC2 command line tool.\n

" - } - }, - "documentation":"

\n This data type is used as a response element in the DescribeLoadBalancers action.\n For information about Elastic Load Balancing security groups, go to Using Security Groups With Elastic Load Balancing\n in the Elastic Load Balancing Developer Guide. \n

" + "OwnerAlias":{"shape":"SecurityGroupOwnerAlias"}, + "GroupName":{"shape":"SecurityGroupName"} + } }, "State":{"type":"string"}, "SubnetId":{"type":"string"}, @@ -2535,13 +2035,59 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n One or more subnets were not found.\n

" + "exception":true }, "Subnets":{ "type":"list", "member":{"shape":"SubnetId"} }, + "Tag":{ + "type":"structure", + "required":["Key"], + "members":{ + "Key":{"shape":"TagKey"}, + "Value":{"shape":"TagValue"} + } + }, + "TagDescription":{ + "type":"structure", + "members":{ + "LoadBalancerName":{"shape":"AccessPointName"}, + "Tags":{"shape":"TagList"} + } + }, + "TagDescriptions":{ + "type":"list", + "member":{"shape":"TagDescription"} + }, + "TagKey":{ + "type":"string", + "min":1, + "max":128, + "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" + }, + "TagKeyList":{ + "type":"list", + "member":{"shape":"TagKeyOnly"}, + "min":1 + }, + "TagKeyOnly":{ + "type":"structure", + "members":{ + "Key":{"shape":"TagKey"} + } + }, + "TagList":{ + "type":"list", + "member":{"shape":"Tag"}, + "min":1 + }, + "TagValue":{ + "type":"string", + "min":0, + "max":256, + "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" + }, "TooManyAccessPointsException":{ "type":"structure", "members":{ @@ -2551,8 +2097,7 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n The quota for the number of load balancers has already been reached.\n

" + "exception":true }, "TooManyPoliciesException":{ "type":"structure", @@ -2563,8 +2108,18 @@ "httpStatusCode":400, "senderFault":true }, - "exception":true, - "documentation":"

\n Quota for number of policies for this load balancer\n has already been reached.\n

" + "exception":true + }, + "TooManyTagsException":{ + "type":"structure", + "members":{ + }, + "error":{ + "code":"TooManyTags", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true }, "UnhealthyThreshold":{ "type":"integer", diff --git a/Kinesis/AWSKinesis.h b/Kinesis/AWSKinesis.h index c4879e46982..317cedbbc2d 100644 --- a/Kinesis/AWSKinesis.h +++ b/Kinesis/AWSKinesis.h @@ -25,14 +25,13 @@ @interface AWSKinesis : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultKinesis; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

This operation adds a new Amazon Kinesis stream to your AWS account. A stream captures and transports data records that are continuously emitted from different data sources or producers. Scale-out within an Amazon Kinesis stream is explicitly supported by means of shards, which are uniquely identified groups of data records in an Amazon Kinesis stream.

You specify and control the number of shards that a stream is composed of. Each open shard can support up to 5 read transactions per second, up to a maximum total of 2 MB of data read per second. Each shard can support up to 1000 write transactions per second, up to a maximum total of 1 MB data written per second. You can add shards to a stream if the amount of data input increases and you can remove shards if the amount of data input decreases.

The stream name identifies the stream. The name is scoped to the AWS account used by the application. It is also scoped by region. That is, two streams in two different accounts can have the same name, and two streams in the same account, but in two different regions, can have the same name.

CreateStream is an asynchronous operation. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets the stream status to CREATING. After the stream is created, Amazon Kinesis sets the stream status to ACTIVE. You should perform read and write operations only on an ACTIVE stream.

You receive a LimitExceededException when making a CreateStream request if you try to do one of the following:

  • Have more than five streams in the CREATING state at any point in time.
  • Create more shards than are authorized for your account.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

You can use the DescribeStream operation to check the stream status, which is returned in StreamStatus.

CreateStream has a limit of 5 transactions per second per account.

+ *

This operation adds a new Amazon Kinesis stream to your AWS account. A stream captures and transports data records that are continuously emitted from different data sources or producers. Scale-out within an Amazon Kinesis stream is explicitly supported by means of shards, which are uniquely identified groups of data records in an Amazon Kinesis stream.

You specify and control the number of shards that a stream is composed of. Each open shard can support up to 5 read transactions per second, up to a maximum total of 2 MB of data read per second. Each shard can support up to 1000 write transactions per second, up to a maximum total of 1 MB data written per second. You can add shards to a stream if the amount of data input increases and you can remove shards if the amount of data input decreases.

The stream name identifies the stream. The name is scoped to the AWS account used by the application. It is also scoped by region. That is, two streams in two different accounts can have the same name, and two streams in the same account, but in two different regions, can have the same name.

CreateStream is an asynchronous operation. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets the stream status to CREATING. After the stream is created, Amazon Kinesis sets the stream status to ACTIVE. You should perform read and write operations only on an ACTIVE stream.

You receive a LimitExceededException when making a CreateStream request if you try to do one of the following:

  • Have more than five streams in the CREATING state at any point in time.
  • Create more shards than are authorized for your account.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

You can use the DescribeStream operation to check the stream status, which is returned in StreamStatus.

CreateStream has a limit of 5 transactions per second per account.

* * @param request A container for the necessary parameters to execute the CreateStream service method. * @@ -43,7 +42,7 @@ - (BFTask *)createStream:(AWSKinesisCreateStreamInput *)request; /** - *

This operation deletes a stream and all of its shards and data. You must shut down any applications that are operating on the stream before you delete the stream. If an application attempts to operate on a deleted stream, it will receive the exception ResourceNotFoundException.

If the stream is in the ACTIVE state, you can delete it. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion.

Note: Amazon Kinesis might continue to accept data read and write operations, such as PutRecord and GetRecords, on a stream in the DELETING state until the stream deletion is complete.

When you delete a stream, any shards in that stream are also deleted.

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

DeleteStream has a limit of 5 transactions per second per account.

+ *

This operation deletes a stream and all of its shards and data. You must shut down any applications that are operating on the stream before you delete the stream. If an application attempts to operate on a deleted stream, it will receive the exception ResourceNotFoundException.

If the stream is in the ACTIVE state, you can delete it. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion.

Note: Amazon Kinesis might continue to accept data read and write operations, such as PutRecord and GetRecords, on a stream in the DELETING state until the stream deletion is complete.

When you delete a stream, any shards in that stream are also deleted.

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

DeleteStream has a limit of 5 transactions per second per account.

* * @param request A container for the necessary parameters to execute the DeleteStream service method. * @@ -54,7 +53,7 @@ - (BFTask *)deleteStream:(AWSKinesisDeleteStreamInput *)request; /** - *

This operation returns the following information about the stream: the current status of the stream, the stream Amazon Resource Name (ARN), and an array of shard objects that comprise the stream. For each shard object there is information about the hash key and sequence number ranges that the shard spans, and the IDs of any earlier shards that played in a role in a MergeShards or SplitShard operation that created the shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

You can limit the number of returned shards using the Limit parameter. The number of shards in a stream may be too large to return from a single call to DescribeStream. You can detect this by using the HasMoreShards flag in the returned output. HasMoreShards is set to true when there is more data available.

If there are more shards available, you can request more shards by using the shard ID of the last shard returned by the DescribeStream request, in the ExclusiveStartShardId parameter in a subsequent request to DescribeStream. DescribeStream is a paginated operation.

DescribeStream has a limit of 10 transactions per second per account.

+ *

This operation returns the following information about the stream: the current status of the stream, the stream Amazon Resource Name (ARN), and an array of shard objects that comprise the stream. For each shard object there is information about the hash key and sequence number ranges that the shard spans, and the IDs of any earlier shards that played in a role in a MergeShards or SplitShard operation that created the shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

You can limit the number of returned shards using the Limit parameter. The number of shards in a stream may be too large to return from a single call to DescribeStream. You can detect this by using the HasMoreShards flag in the returned output. HasMoreShards is set to true when there is more data available.

If there are more shards available, you can request more shards by using the shard ID of the last shard returned by the DescribeStream request, in the ExclusiveStartShardId parameter in a subsequent request to DescribeStream. DescribeStream is a paginated operation.

DescribeStream has a limit of 10 transactions per second per account.

* * @param request A container for the necessary parameters to execute the DescribeStream service method. * @@ -66,7 +65,7 @@ - (BFTask *)describeStream:(AWSKinesisDescribeStreamInput *)request; /** - *

This operation returns one or more data records from a shard. A GetRecords operation request can retrieve up to 10 MB of data.

You specify a shard iterator for the shard that you want to read data from in the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in the shard. For more information about the shard iterator, see GetShardIterator.

GetRecords may return a partial result if the response size limit is exceeded. You will get an error, but not a partial result if the shard's provisioned throughput is exceeded, the shard iterator has expired, or an internal processing failure has occurred. Clients can request a smaller amount of data by specifying a maximum number of returned records using the Limit parameter. The Limit parameter can be set to an integer value of up to 10,000. If you set the value to an integer greater than 10,000, you will receive InvalidArgumentException.

A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request. When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to use in your first GetRecords request and then use the shard iterator returned in NextShardIterator for subsequent reads.

GetRecords can return null for the NextShardIterator to reflect that the shard has been closed and that the requested shard iterator would never have returned more data.

If no items can be processed because of insufficient provisioned throughput on the shard involved in the request, GetRecords throws ProvisionedThroughputExceededException.

+ *

This operation returns one or more data records from a shard. A GetRecords operation request can retrieve up to 10 MB of data.

You specify a shard iterator for the shard that you want to read data from in the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in the shard. For more information about the shard iterator, see GetShardIterator.

GetRecords may return a partial result if the response size limit is exceeded. You will get an error, but not a partial result if the shard's provisioned throughput is exceeded, the shard iterator has expired, or an internal processing failure has occurred. Clients can request a smaller amount of data by specifying a maximum number of returned records using the Limit parameter. The Limit parameter can be set to an integer value of up to 10,000. If you set the value to an integer greater than 10,000, you will receive InvalidArgumentException.

A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request. When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to use in your first GetRecords request and then use the shard iterator returned in NextShardIterator for subsequent reads.

GetRecords can return null for the NextShardIterator to reflect that the shard has been closed and that the requested shard iterator would never have returned more data.

If no items can be processed because of insufficient provisioned throughput on the shard involved in the request, GetRecords throws ProvisionedThroughputExceededException.

* * @param request A container for the necessary parameters to execute the GetRecords service method. * @@ -78,7 +77,7 @@ - (BFTask *)getRecords:(AWSKinesisGetRecordsInput *)request; /** - *

This operation returns a shard iterator in ShardIterator. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in a shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

You must specify the shard iterator type in the GetShardIterator request. For example, you can set the ShardIteratorType parameter to read exactly from the position denoted by a specific sequence number by using the AT_SEQUENCE_NUMBER shard iterator type, or right after the sequence number by using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers returned by earlier PutRecord, GetRecords or DescribeStream requests. You can specify the shard iterator type TRIM_HORIZON in the request to cause ShardIterator to point to the last untrimmed record in the shard in the system, which is the oldest data record in the shard. Or you can point to just after the most recent record in the shard, by using the shard iterator type LATEST, so that you always read the most recent data in the shard.

Note: Each shard iterator expires five minutes after it is returned to the requester.

When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to to use in your first GetRecords request and then use the shard iterator returned by the GetRecords request in NextShardIterator for subsequent reads. A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request.

If a GetShardIterator request is made too often, you will receive a ProvisionedThroughputExceededException. For more information about throughput limits, see the Amazon Kinesis Developer Guide.

GetShardIterator can return null for its ShardIterator to indicate that the shard has been closed and that the requested iterator will return no more data. A shard can be closed by a SplitShard or MergeShards operation.

GetShardIterator has a limit of 5 transactions per second per account per open shard.

+ *

This operation returns a shard iterator in ShardIterator. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in a shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

You must specify the shard iterator type in the GetShardIterator request. For example, you can set the ShardIteratorType parameter to read exactly from the position denoted by a specific sequence number by using the AT_SEQUENCE_NUMBER shard iterator type, or right after the sequence number by using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers returned by earlier PutRecord, GetRecords or DescribeStream requests. You can specify the shard iterator type TRIM_HORIZON in the request to cause ShardIterator to point to the last untrimmed record in the shard in the system, which is the oldest data record in the shard. Or you can point to just after the most recent record in the shard, by using the shard iterator type LATEST, so that you always read the most recent data in the shard.

Note: Each shard iterator expires five minutes after it is returned to the requester.

When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to to use in your first GetRecords request and then use the shard iterator returned by the GetRecords request in NextShardIterator for subsequent reads. A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request.

If a GetShardIterator request is made too often, you will receive a ProvisionedThroughputExceededException. For more information about throughput limits, see the Amazon Kinesis Developer Guide.

GetShardIterator can return null for its ShardIterator to indicate that the shard has been closed and that the requested iterator will return no more data. A shard can be closed by a SplitShard or MergeShards operation.

GetShardIterator has a limit of 5 transactions per second per account per open shard.

* * @param request A container for the necessary parameters to execute the GetShardIterator service method. * @@ -90,7 +89,7 @@ - (BFTask *)getShardIterator:(AWSKinesisGetShardIteratorInput *)request; /** - *

This operation returns an array of the names of all the streams that are associated with the AWS account making the ListStreams request. A given AWS account can have many streams active at one time.

The number of streams may be too large to return from a single call to ListStreams. You can limit the number of returned streams using the Limit parameter. If you do not specify a value for the Limit parameter, Amazon Kinesis uses the default limit, which is currently 10.

You can detect if there are more streams available to list by using the HasMoreStreams flag from the returned output. If there are more streams available, you can request more streams by using the name of the last stream returned by the ListStreams request in the ExclusiveStartStreamName parameter in a subsequent request to ListStreams. The group of stream names returned by the subsequent request is then added to the list. You can continue this process until all the stream names have been collected in the list.

ListStreams has a limit of 5 transactions per second per account.

+ *

This operation returns an array of the names of all the streams that are associated with the AWS account making the ListStreams request. A given AWS account can have many streams active at one time.

The number of streams may be too large to return from a single call to ListStreams. You can limit the number of returned streams using the Limit parameter. If you do not specify a value for the Limit parameter, Amazon Kinesis uses the default limit, which is currently 10.

You can detect if there are more streams available to list by using the HasMoreStreams flag from the returned output. If there are more streams available, you can request more streams by using the name of the last stream returned by the ListStreams request in the ExclusiveStartStreamName parameter in a subsequent request to ListStreams. The group of stream names returned by the subsequent request is then added to the list. You can continue this process until all the stream names have been collected in the list.

ListStreams has a limit of 5 transactions per second per account.

* * @param request A container for the necessary parameters to execute the ListStreams service method. * @@ -102,7 +101,7 @@ - (BFTask *)listStreams:(AWSKinesisListStreamsInput *)request; /** - *

This operation merges two adjacent shards in a stream and combines them into a single shard to reduce the stream's capacity to ingest and transport data. Two shards are considered adjacent if the union of the hash key ranges for the two shards form a contiguous set with no gaps. For example, if you have two shards, one with a hash key range of 276...381 and the other with a hash key range of 382...454, then you could merge these two shards into a single shard that would have a hash key range of 276...454. After the merge, the single child shard receives data for all hash key values covered by the two parent shards.

MergeShards is called when there is a need to reduce the overall capacity of a stream because of excess capacity that is not being used. The operation requires that you specify the shard to be merged and the adjacent shard for a given stream. For more information about merging shards, see the Amazon Kinesis Developer Guide.

If the stream is in the ACTIVE state, you can call MergeShards. If a stream is in CREATING or UPDATING or DELETING states, then Amazon Kinesis returns a ResourceInUseException. If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException.

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

MergeShards is an asynchronous operation. Upon receiving a MergeShards request, Amazon Kinesis immediately returns a response and sets the StreamStatus to UPDATING. After the operation is completed, Amazon Kinesis sets the StreamStatus to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You use the DescribeStream operation to determine the shard IDs that are specified in the MergeShards request.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException.

MergeShards has limit of 5 transactions per second per account.

+ *

This operation merges two adjacent shards in a stream and combines them into a single shard to reduce the stream's capacity to ingest and transport data. Two shards are considered adjacent if the union of the hash key ranges for the two shards form a contiguous set with no gaps. For example, if you have two shards, one with a hash key range of 276...381 and the other with a hash key range of 382...454, then you could merge these two shards into a single shard that would have a hash key range of 276...454. After the merge, the single child shard receives data for all hash key values covered by the two parent shards.

MergeShards is called when there is a need to reduce the overall capacity of a stream because of excess capacity that is not being used. The operation requires that you specify the shard to be merged and the adjacent shard for a given stream. For more information about merging shards, see the Amazon Kinesis Developer Guide.

If the stream is in the ACTIVE state, you can call MergeShards. If a stream is in CREATING or UPDATING or DELETING states, then Amazon Kinesis returns a ResourceInUseException. If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException.

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

MergeShards is an asynchronous operation. Upon receiving a MergeShards request, Amazon Kinesis immediately returns a response and sets the StreamStatus to UPDATING. After the operation is completed, Amazon Kinesis sets the StreamStatus to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You use the DescribeStream operation to determine the shard IDs that are specified in the MergeShards request.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException.

MergeShards has limit of 5 transactions per second per account.

* * @param request A container for the necessary parameters to execute the MergeShards service method. * @@ -113,7 +112,7 @@ - (BFTask *)mergeShards:(AWSKinesisMergeShardsInput *)request; /** - *

This operation puts a data record into an Amazon Kinesis stream from a producer. This operation must be called to send data from the producer into the Amazon Kinesis stream for real-time ingestion and subsequent processing. The PutRecord operation requires the name of the stream that captures, stores, and transports the data; a partition key; and the data blob itself. The data blob could be a segment from a log file, geographic/location data, website clickstream data, or any other data type.

The partition key is used to distribute data across shards. Amazon Kinesis segregates the data records that belong to a data stream into multiple shards, using the partition key associated with each data record to determine which shard a given data record belongs to.

Partition keys are Unicode strings, with a maximum length limit of 256 bytes. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards using the hash key ranges of the shards. You can override hashing the partition key to determine the shard by explicitly specifying a hash value using the ExplicitHashKey parameter. For more information, see the Amazon Kinesis Developer Guide.

PutRecord returns the shard ID of where the data record was placed and the sequence number that was assigned to the data record.

Sequence numbers generally increase over time. To guarantee strictly increasing ordering, use the SequenceNumberForOrdering parameter. For more information, see the Amazon Kinesis Developer Guide.

If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, PutRecord throws ProvisionedThroughputExceededException.

Data records are accessible for only 24 hours from the time that they are added to an Amazon Kinesis stream.

+ *

This operation puts a data record into an Amazon Kinesis stream from a producer. This operation must be called to send data from the producer into the Amazon Kinesis stream for real-time ingestion and subsequent processing. The PutRecord operation requires the name of the stream that captures, stores, and transports the data; a partition key; and the data blob itself. The data blob could be a segment from a log file, geographic/location data, website clickstream data, or any other data type.

The partition key is used to distribute data across shards. Amazon Kinesis segregates the data records that belong to a data stream into multiple shards, using the partition key associated with each data record to determine which shard a given data record belongs to.

Partition keys are Unicode strings, with a maximum length limit of 256 bytes. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards using the hash key ranges of the shards. You can override hashing the partition key to determine the shard by explicitly specifying a hash value using the ExplicitHashKey parameter. For more information, see the Amazon Kinesis Developer Guide.

PutRecord returns the shard ID of where the data record was placed and the sequence number that was assigned to the data record.

Sequence numbers generally increase over time. To guarantee strictly increasing ordering, use the SequenceNumberForOrdering parameter. For more information, see the Amazon Kinesis Developer Guide.

If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, PutRecord throws ProvisionedThroughputExceededException.

Data records are accessible for only 24 hours from the time that they are added to an Amazon Kinesis stream.

* * @param request A container for the necessary parameters to execute the PutRecord service method. * @@ -125,7 +124,7 @@ - (BFTask *)putRecord:(AWSKinesisPutRecordInput *)request; /** - *

This operation splits a shard into two new shards in the stream, to increase the stream's capacity to ingest and transport data. SplitShard is called when there is a need to increase the overall capacity of stream because of an expected increase in the volume of data records being ingested.

SplitShard can also be used when a given shard appears to be approaching its maximum utilization, for example, when the set of producers sending data into the specific shard are suddenly sending more than previously anticipated. You can also call the SplitShard operation to increase stream capacity, so that more Amazon Kinesis applications can simultaneously read data from the stream for real-time processing.

The SplitShard operation requires that you specify the shard to be split and the new hash key, which is the position in the shard where the shard gets split in two. In many cases, the new hash key might simply be the average of the beginning and ending hash key, but it can be any hash key value in the range being mapped into the shard. For more information about splitting shards, see the Amazon Kinesis Developer Guide.

You can use the DescribeStream operation to determine the shard ID and hash key values for the ShardToSplit and NewStartingHashKey parameters that are specified in the SplitShard request.

SplitShard is an asynchronous operation. Upon receiving a SplitShard request, Amazon Kinesis immediately returns a response and sets the stream status to UPDATING. After the operation is completed, Amazon Kinesis sets the stream status to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You can use DescribeStream to check the status of the stream, which is returned in StreamStatus. If the stream is in the ACTIVE state, you can call SplitShard. If a stream is in CREATING or UPDATING or DELETING states, then Amazon Kinesis returns a ResourceInUseException.

If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException. If you try to create more shards than are authorized for your account, you receive a LimitExceededException.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException.

SplitShard has limit of 5 transactions per second per account.

+ *

This operation splits a shard into two new shards in the stream, to increase the stream's capacity to ingest and transport data. SplitShard is called when there is a need to increase the overall capacity of stream because of an expected increase in the volume of data records being ingested.

SplitShard can also be used when a given shard appears to be approaching its maximum utilization, for example, when the set of producers sending data into the specific shard are suddenly sending more than previously anticipated. You can also call the SplitShard operation to increase stream capacity, so that more Amazon Kinesis applications can simultaneously read data from the stream for real-time processing.

The SplitShard operation requires that you specify the shard to be split and the new hash key, which is the position in the shard where the shard gets split in two. In many cases, the new hash key might simply be the average of the beginning and ending hash key, but it can be any hash key value in the range being mapped into the shard. For more information about splitting shards, see the Amazon Kinesis Developer Guide.

You can use the DescribeStream operation to determine the shard ID and hash key values for the ShardToSplit and NewStartingHashKey parameters that are specified in the SplitShard request.

SplitShard is an asynchronous operation. Upon receiving a SplitShard request, Amazon Kinesis immediately returns a response and sets the stream status to UPDATING. After the operation is completed, Amazon Kinesis sets the stream status to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You can use DescribeStream to check the status of the stream, which is returned in StreamStatus. If the stream is in the ACTIVE state, you can call SplitShard. If a stream is in CREATING or UPDATING or DELETING states, then Amazon Kinesis returns a ResourceInUseException.

If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException. If you try to create more shards than are authorized for your account, you receive a LimitExceededException.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException.

SplitShard has limit of 5 transactions per second per account.

* * @param request A container for the necessary parameters to execute the SplitShard service method. * diff --git a/Kinesis/AWSKinesis.m b/Kinesis/AWSKinesis.m index ecf9f19e2cd..54cc88d8da7 100644 --- a/Kinesis/AWSKinesis.m +++ b/Kinesis/AWSKinesis.m @@ -15,8 +15,8 @@ #import "AWSKinesis.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -24,11 +24,15 @@ #import "AWSURLResponseSerialization.h" #import "AWSURLRequestRetryHandler.h" +NSString *const AWSKinesisDefinitionFileName = @"kinesis-2013-12-02"; + @interface AWSKinesisResponseSerializer : AWSJSONResponseSerializer @property (nonatomic, assign) Class outputClass; -+ (instancetype)serializerWithOutputClass:(Class)outputClass; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName; @end @@ -53,8 +57,10 @@ + (void)initialize { #pragma mark - -+ (instancetype)serializerWithOutputClass:(Class)outputClass { - AWSKinesisResponseSerializer *serializer = [AWSKinesisResponseSerializer new]; ++ (instancetype)serializerWithOutputClass:(Class)outputClass + resource:(NSString *)resource + actionName:(NSString *)actionName { + AWSKinesisResponseSerializer *serializer = [AWSKinesisResponseSerializer serializerWithResource:resource actionName:actionName]; serializer.outputClass = outputClass; return serializer; @@ -75,14 +81,14 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSKinesisErrorDomain code:[[errorCodeDictionary objectForKey:[[[responseObject objectForKey:@"__type"] componentsSeparatedByString:@"#"] lastObject]] integerValue] - userInfo:@{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null]}]; + userInfo:responseObject]; } return responseObject; } else if ([[[responseObject objectForKey:@"__type"] componentsSeparatedByString:@"#"] lastObject]) { if (error) { *error = [NSError errorWithDomain:AWSKinesisErrorDomain code:AWSKinesisErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [responseObject objectForKey:@"message"]?[responseObject objectForKey:@"message"]:[NSNull null]}]; + userInfo:responseObject]; } return responseObject; } @@ -105,22 +111,22 @@ @interface AWSKinesisRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSKinesisRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount - response:(NSHTTPURLResponse *)response - data:(NSData *)data - error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount - response:response - data:data - error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount + response:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *)error { + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + response:response + data:data + error:error]; + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSKinesisErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSKinesisErrorIncompleteSignature: case AWSKinesisErrorInvalidClientTokenId: case AWSKinesisErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -135,15 +141,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSKinesis() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -167,29 +172,28 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceKinesis]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceKinesis]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; - _configuration.requestSerializer = [AWSJSONRequestSerializer new]; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSKinesisRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; _configuration.headers = @{ - @"Host" : _endpoint.hostName, + @"Host" : _configuration.endpoint.hostName, @"Content-Type" : @"application/x-amz-json-1.1" }; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -198,19 +202,19 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } - + NSMutableDictionary *headers = [NSMutableDictionary new]; headers[@"X-Amz-Target"] = [NSString stringWithFormat:@"%@.%@", targetPrefix, operationName]; networkingRequest.headers = headers; - networkingRequest.HTTPMethod = HTTPMethod; - networkingRequest.responseSerializer = [AWSKinesisResponseSerializer serializerWithOutputClass:outputClass]; + networkingRequest.responseSerializer = [AWSKinesisResponseSerializer serializerWithOutputClass:outputClass resource:AWSKinesisDefinitionFileName actionName:operationName]; + networkingRequest.requestSerializer = [AWSJSONRequestSerializer serializerWithResource:AWSKinesisDefinitionFileName actionName:operationName]; return [self.networking sendRequest:networkingRequest]; } @@ -219,7 +223,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)createStream:(AWSKinesisCreateStreamInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"CreateStream" @@ -228,7 +232,7 @@ - (BFTask *)createStream:(AWSKinesisCreateStreamInput *)request { - (BFTask *)deleteStream:(AWSKinesisDeleteStreamInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"DeleteStream" @@ -237,7 +241,7 @@ - (BFTask *)deleteStream:(AWSKinesisDeleteStreamInput *)request { - (BFTask *)describeStream:(AWSKinesisDescribeStreamInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"DescribeStream" @@ -246,7 +250,7 @@ - (BFTask *)describeStream:(AWSKinesisDescribeStreamInput *)request { - (BFTask *)getRecords:(AWSKinesisGetRecordsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"GetRecords" @@ -255,7 +259,7 @@ - (BFTask *)getRecords:(AWSKinesisGetRecordsInput *)request { - (BFTask *)getShardIterator:(AWSKinesisGetShardIteratorInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"GetShardIterator" @@ -264,7 +268,7 @@ - (BFTask *)getShardIterator:(AWSKinesisGetShardIteratorInput *)request { - (BFTask *)listStreams:(AWSKinesisListStreamsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"ListStreams" @@ -273,7 +277,7 @@ - (BFTask *)listStreams:(AWSKinesisListStreamsInput *)request { - (BFTask *)mergeShards:(AWSKinesisMergeShardsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"MergeShards" @@ -282,7 +286,7 @@ - (BFTask *)mergeShards:(AWSKinesisMergeShardsInput *)request { - (BFTask *)putRecord:(AWSKinesisPutRecordInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"PutRecord" @@ -291,7 +295,7 @@ - (BFTask *)putRecord:(AWSKinesisPutRecordInput *)request { - (BFTask *)splitShard:(AWSKinesisSplitShardInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"Kinesis_20131202" operationName:@"SplitShard" diff --git a/Kinesis/AWSKinesisModel.h b/Kinesis/AWSKinesisModel.h index cd7e2ddbda0..b062fdb35b4 100644 --- a/Kinesis/AWSKinesisModel.h +++ b/Kinesis/AWSKinesisModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSKinesisErrorDomain; @@ -76,12 +76,12 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { /** - *

The number of shards that the stream will use. The throughput of the stream is a function of the number of shards; more shards are required for greaterprovisioned throughput.

Note: The default limit for an AWS account is 10 shards per stream.If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

+ *

The number of shards that the stream will use. The throughput of the stream is a function of the number of shards; more shards are required for greater provisioned throughput.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

*/ @property (nonatomic, strong) NSNumber *shardCount; /** - *

A name to identify the stream. The stream name is scoped to the AWS account used by the application that creates the stream.It is also scoped by region. That is, two streams in two different AWS accounts can have the same name,and two streams in the same AWS account, but in two different regions, can have the same name.

+ *

A name to identify the stream. The stream name is scoped to the AWS account used by the application that creates the stream. It is also scoped by region. That is, two streams in two different AWS accounts can have the same name, and two streams in the same AWS account, but in two different regions, can have the same name.

*/ @property (nonatomic, strong) NSString *streamName; @@ -129,11 +129,11 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

Represents the output of a DescribeStream operation.

* Required parameters: [StreamDescription] */ -@interface AWSKinesisDescribeStreamOutput : AZModel +@interface AWSKinesisDescribeStreamOutput : AWSModel /** - *

Contains the current status of the stream, the stream ARN, an array of shard objects that comprise the stream,and states whether there are more shards available.

+ *

Contains the current status of the stream, the stream ARN, an array of shard objects that comprise the stream, and states whether there are more shards available.

*/ @property (nonatomic, strong) AWSKinesisStreamDescription *streamDescription; @@ -162,11 +162,11 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

Represents the output of a GetRecords operation.

* Required parameters: [Records] */ -@interface AWSKinesisGetRecordsOutput : AZModel +@interface AWSKinesisGetRecordsOutput : AWSModel /** - *

The next position in the shard from which to start sequentially reading data records.If set to null, the shard has been closed and the requested iterator will not return any more data.

+ *

The next position in the shard from which to start sequentially reading data records. If set to null, the shard has been closed and the requested iterator will not return any more data.

*/ @property (nonatomic, strong) NSString *nextShardIterator; @@ -190,7 +190,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { @property (nonatomic, strong) NSString *shardId; /** - *

Determines how the shard iterator is used to start reading data records from the shard.

The following are the valid shard iterator types:

  • AT_SEQUENCE_NUMBER -Start reading exactly from the position denoted by a specific sequence number.
  • AFTER_SEQUENCE_NUMBER- Start reading right after the position denoted by a specific sequence number.
  • TRIM_HORIZON -Start reading at the last untrimmed record in the shard in the system, which is the oldest data record in the shard.
  • LATEST - Start reading just after the most recent record in the shard, so that you always read the most recent data in the shard.
+ *

Determines how the shard iterator is used to start reading data records from the shard.

The following are the valid shard iterator types:

  • AT_SEQUENCE_NUMBER - Start reading exactly from the position denoted by a specific sequence number.
  • AFTER_SEQUENCE_NUMBER - Start reading right after the position denoted by a specific sequence number.
  • TRIM_HORIZON - Start reading at the last untrimmed record in the shard in the system, which is the oldest data record in the shard.
  • LATEST - Start reading just after the most recent record in the shard, so that you always read the most recent data in the shard.
*/ @property (nonatomic, assign) AWSKinesisShardIteratorType shardIteratorType; @@ -209,7 +209,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { /** *

Represents the output of a GetShardIterator operation.

*/ -@interface AWSKinesisGetShardIteratorOutput : AZModel +@interface AWSKinesisGetShardIteratorOutput : AWSModel /** @@ -223,7 +223,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

The range of possible hash key values for the shard, which is a set of ordered contiguous positive integers.

* Required parameters: [StartingHashKey, EndingHashKey] */ -@interface AWSKinesisHashKeyRange : AZModel +@interface AWSKinesisHashKeyRange : AWSModel /** @@ -260,7 +260,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

Represents the output of a ListStreams operation.

* Required parameters: [StreamNames, HasMoreStreams] */ -@interface AWSKinesisListStreamsOutput : AZModel +@interface AWSKinesisListStreamsOutput : AWSModel /** @@ -317,7 +317,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { @property (nonatomic, strong) NSString *explicitHashKey; /** - *

Determines which shard in the stream the data record is assigned to.Partition keys are Unicode strings with a maximum length limit of 256 bytes.Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards.As a result of this hashing mechanism, all data records with the same partition key will map to the same shard within the stream.

+ *

Determines which shard in the stream the data record is assigned to. Partition keys are Unicode strings with a maximum length limit of 256 bytes. Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key will map to the same shard within the stream.

*/ @property (nonatomic, strong) NSString *partitionKey; @@ -337,7 +337,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

Represents the output of a PutRecord operation.

* Required parameters: [ShardId, SequenceNumber] */ -@interface AWSKinesisPutRecordOutput : AZModel +@interface AWSKinesisPutRecordOutput : AWSModel /** @@ -356,7 +356,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

The unit of data of the Amazon Kinesis stream, which is composed of a sequence number, a partition key, and a data blob.

* Required parameters: [SequenceNumber, Data, PartitionKey] */ -@interface AWSKinesisRecord : AZModel +@interface AWSKinesisRecord : AWSModel /** @@ -380,7 +380,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

The range of possible sequence numbers for the shard.

* Required parameters: [StartingSequenceNumber] */ -@interface AWSKinesisSequenceNumberRange : AZModel +@interface AWSKinesisSequenceNumberRange : AWSModel /** @@ -399,7 +399,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

A uniquely identified group of data records in an Amazon Kinesis stream.

* Required parameters: [ShardId, HashKeyRange, SequenceNumberRange] */ -@interface AWSKinesisShard : AZModel +@interface AWSKinesisShard : AWSModel /** @@ -453,7 +453,7 @@ typedef NS_ENUM(NSInteger, AWSKinesisStreamStatus) { *

Represents the output of a DescribeStream operation.

* Required parameters: [StreamName, StreamARN, StreamStatus, Shards, HasMoreShards] */ -@interface AWSKinesisStreamDescription : AZModel +@interface AWSKinesisStreamDescription : AWSModel /** diff --git a/Kinesis/AWSKinesisModel.m b/Kinesis/AWSKinesisModel.m index 220ebd9b692..8ff85dbaf66 100644 --- a/Kinesis/AWSKinesisModel.m +++ b/Kinesis/AWSKinesisModel.m @@ -14,7 +14,7 @@ */ #import "AWSKinesisModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSKinesisErrorDomain = @"com.amazonaws.AWSKinesisErrorDomain"; @@ -203,15 +203,6 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { }; } -+ (NSValueTransformer *)dataJSONTransformer { - return [MTLValueTransformer reversibleTransformerWithForwardBlock:^NSData *(NSString *value) { - return [[NSData alloc] initWithBase64EncodedString:value - options:kNilOptions]; - } reverseBlock:^NSString *(NSData *value) { - return [value az_base64EncodedString]; - }]; -} - @end @implementation AWSKinesisPutRecordOutput @@ -235,15 +226,6 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { }; } -+ (NSValueTransformer *)dataJSONTransformer { - return [MTLValueTransformer reversibleTransformerWithForwardBlock:^NSData *(NSString *value) { - return [[NSData alloc] initWithBase64EncodedString:value - options:kNilOptions]; - } reverseBlock:^NSString *(NSData *value) { - return [value az_base64EncodedString]; - }]; -} - @end @implementation AWSKinesisSequenceNumberRange diff --git a/Kinesis/AWSKinesisRecorder.h b/Kinesis/AWSKinesisRecorder.h index 86e2316aaa7..7cea9679d76 100644 --- a/Kinesis/AWSKinesisRecorder.h +++ b/Kinesis/AWSKinesisRecorder.h @@ -61,8 +61,7 @@ FOUNDATION_EXPORT NSString *const AWSKinesisRecorderByteThresholdReachedNotifica * Returns an instance of this service client using `configuration` and `identifier`. * * @param configuration An object to configure the internal `AWSKinesis`. At least `regionType` and `credentialsProvider` need to be set. - * @param identifier An unique identifier for AWSKinesisRecorder to create a disk cache. Multiple instances with the same identifier are allowed and can safely access - the same data on disk. + * @param identifier An unique identifier for AWSKinesisRecorder to create a disk cache. Multiple instances with the same identifier are allowed and can safely access the same data on disk. * * @return An instance of this service client. */ diff --git a/Kinesis/AWSKinesisRecorder.m b/Kinesis/AWSKinesisRecorder.m index 01cffd728cb..ea4734a3de6 100644 --- a/Kinesis/AWSKinesisRecorder.m +++ b/Kinesis/AWSKinesisRecorder.m @@ -17,8 +17,8 @@ #import "AWSKinesis.h" #import "TMCache.h" #import "Bolts.h" -#import "AZLogging.h" -#import "AZCategory.h" +#import "AWSLogging.h" +#import "AWSCategory.h" NSString *const AWSKinesisRecorderByteThresholdReachedNotification = @"com.amazonaws.AWSKinesisRecorderByteThresholdReachedNotification"; NSString *const AWSKinesisRecorderCacheName = @"com.amazonaws.AWSKinesisRecorderCacheName.Cache"; @@ -42,9 +42,8 @@ + (instancetype)defaultKinesisRecorder { static AWSKinesisRecorder *_defaultKinesisRecorder = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - AWSKinesis *kinesis = [[AWSKinesis alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager].defaultServiceConfiguration]; - _defaultKinesisRecorder = [[AWSKinesisRecorder alloc] initWithKinesis:kinesis - cacheName:AWSKinesisRecorderCacheName]; + _defaultKinesisRecorder = [[AWSKinesisRecorder alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager].defaultServiceConfiguration + cacheName:AWSKinesisRecorderCacheName]; }); return _defaultKinesisRecorder; @@ -52,20 +51,20 @@ + (instancetype)defaultKinesisRecorder { - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration identifier:(NSString *)identifier { - if (self = [super init]) { - _kinesis = [[AWSKinesis alloc] initWithConfiguration:configuration]; - _cache = [[TMCache alloc] initWithName:[NSString stringWithFormat:@"%@.%@", AWSKinesisRecorderCacheName, identifier]]; - _cache.diskCache.byteLimit = AWSKinesisRecorderByteLimitDefault; - _cache.diskCache.ageLimit = AWSKinesisRecorderAgeLimitDefault; + if (self = [self initWithConfiguration:configuration + cacheName:[NSString stringWithFormat:@"%@.%@", AWSKinesisRecorderCacheName, identifier]]) { } return self; } -- (instancetype)initWithKinesis:(AWSKinesis *)kinesis - cacheName:(NSString *)cacheName { +- (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration + cacheName:(NSString *)cacheName { if (self = [super init]) { - _kinesis = kinesis; - _cache = [[TMCache alloc] initWithName:cacheName]; + _kinesis = [[AWSKinesis alloc] initWithConfiguration:configuration]; + NSString *rootPath = [NSTemporaryDirectory() stringByAppendingPathComponent:AWSKinesisRecorderCacheName]; + _cache = [[TMCache alloc] initWithName:cacheName + rootPath:rootPath]; + AWSLogDebug(@"The cache root path: %@", rootPath); _cache.diskCache.byteLimit = AWSKinesisRecorderByteLimitDefault; _cache.diskCache.ageLimit = AWSKinesisRecorderAgeLimitDefault; } @@ -77,14 +76,14 @@ - (BFTask *)saveRecord:(NSData *)data AWSKinesisPutRecordInput *putRecordInput = [AWSKinesisPutRecordInput new]; putRecordInput.data = data; putRecordInput.streamName = streamName; - putRecordInput.partitionKey = [NSString az_randomStringWithLength:36]; + putRecordInput.partitionKey = [NSString aws_randomStringWithLength:36]; BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; NSTimeInterval timeIntervalSince1970 = [[NSDate date] timeIntervalSince1970]; __block AWSKinesisRecorder *kinesisRecorder = self; [self.cache setObject:putRecordInput - forKey:[NSString stringWithFormat:@"%10.10f.%@", timeIntervalSince1970, [NSString az_randomStringWithLength:10]] + forKey:[NSString stringWithFormat:@"%10.10f.%@", timeIntervalSince1970, [NSString aws_randomStringWithLength:10]] block:^(TMCache *cache, NSString *key, id object) { [taskCompletionSource setResult:object]; @@ -123,28 +122,32 @@ - (BFTask *)submitAllRecords { }] continueWithSuccessBlock:^id(BFTask *task) { NSMutableArray *tasks = [NSMutableArray new]; for (NSString *key in task.result) { - id queuedObject = [self.cache objectForKey:key]; - if ([queuedObject isKindOfClass:[AWSKinesisPutRecordInput class]]) { - [tasks addObject:[[self.kinesis putRecord:queuedObject] continueWithBlock:^id(BFTask *task) { - if (task.error) { - if ([task.error.domain isEqualToString:AWSKinesisErrorDomain]) { - switch (task.error.code) { - case AWSKinesisErrorUnknown: - case AWSKinesisErrorResourceNotFound: - [self.cache removeObjectForKey:key]; - break; - default: - break; + BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource taskCompletionSource]; + [self.cache objectForKey:key block:^(TMCache *cache, NSString *key, id object) { + if ([object isKindOfClass:[AWSKinesisPutRecordInput class]]) { + [[self.kinesis putRecord:object] continueWithBlock:^id(BFTask *task) { + if (task.error) { + if ([task.error.domain isEqualToString:AWSKinesisErrorDomain]) { + switch (task.error.code) { + case AWSKinesisErrorUnknown: + case AWSKinesisErrorResourceNotFound: + [self.cache removeObjectForKey:key block:nil]; + break; + default: + break; + } } + } else { + [self.cache removeObjectForKey:key block:nil]; } - } else { - [self.cache removeObjectForKey:key]; - } - return nil; - }]]; - } else { - AZLogError(@"Only AWSKinesisPutRecordInput should be in the queue. [%@]", [queuedObject class]); - } + [taskCompletionSource setResult:task]; + return nil; + }]; + } else { + AWSLogError(@"Only AWSKinesisPutRecordInput should be in the queue. [%@]", [object class]); + } + }]; + [tasks addObject:taskCompletionSource.task]; } return [BFTask taskForCompletionOfAllTasks:tasks]; }]; diff --git a/Kinesis/Resources/kinesis-2013-12-02.json b/Kinesis/Resources/kinesis-2013-12-02.json index 108ca9dcf23..c20564f2a21 100644 --- a/Kinesis/Resources/kinesis-2013-12-02.json +++ b/Kinesis/Resources/kinesis-2013-12-02.json @@ -9,7 +9,7 @@ "targetPrefix":"Kinesis_20131202", "protocol":"json" }, - "documentation":"Amazon Kinesis Service API Reference\n

Amazon Kinesis is a managed service that scales elastically for real time processing of streaming big data.

", + "documentation":"Amazon Kinesis Service API Reference

Amazon Kinesis is a managed service that scales elastically for real time processing of streaming big data.

", "operations":{ "CreateStream":{ "name":"CreateStream", @@ -35,7 +35,7 @@ "exception":true } ], - "documentation":"

This operation adds a new Amazon Kinesis stream to your AWS account. A stream captures and transports data records that are continuously emitted from different data sources or producers. \n\t Scale-out within an Amazon Kinesis stream is explicitly supported by means of shards, which are uniquely identified groups of data records in an Amazon Kinesis stream.

\n\t

You specify and control the number of shards that a stream is composed of. Each open shard can support up to 5 read transactions per second, up to a maximum total of 2 MB of data read per second. Each shard can support up to 1000 write transactions per second, up to a maximum total of 1 MB data written per second. \n\t You can add shards to a stream if the amount of data input increases and you can remove shards if the amount of data input decreases.

\n\t

The stream name identifies the stream. The name is scoped to the AWS account used by the application. It is also scoped by region. \n\t That is, two streams in two different accounts can have the same name, and two streams in the same account, but in two different regions, can have the same name.

\n\t

CreateStream is an asynchronous operation. Upon receiving a CreateStream request, \n\t Amazon Kinesis immediately returns and sets the stream status to CREATING. After the stream is created, Amazon Kinesis sets the stream status to ACTIVE. \n\t You should perform read and write operations only on an ACTIVE stream.

\n\t

You receive a LimitExceededException when making a CreateStream request if you try to do one of the following:

\n\t
    \n\t
  • Have more than five streams in the CREATING state at any point in time.
  • \n\t
  • Create more shards than are authorized for your account.
  • \n\t
\n\t

Note: The default limit for an AWS account is 10 shards per stream. \n\t If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

\n\t

You can use the DescribeStream operation to check the stream status, which is returned in StreamStatus.

\n\t

CreateStream has a limit of 5 transactions per second per account.

\n\t \n\t \n\t Create a Stream \n\t The following is an example of an Amazon Kinesis CreateStream request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.CreateStream \n\n{\n \"StreamName\":\"exampleStreamName\",\"ShardCount\":3\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\t \n\t \n\t " + "documentation":"

This operation adds a new Amazon Kinesis stream to your AWS account. A stream captures and transports data records that are continuously emitted from different data sources or producers. Scale-out within an Amazon Kinesis stream is explicitly supported by means of shards, which are uniquely identified groups of data records in an Amazon Kinesis stream.

You specify and control the number of shards that a stream is composed of. Each open shard can support up to 5 read transactions per second, up to a maximum total of 2 MB of data read per second. Each shard can support up to 1000 write transactions per second, up to a maximum total of 1 MB data written per second. You can add shards to a stream if the amount of data input increases and you can remove shards if the amount of data input decreases.

The stream name identifies the stream. The name is scoped to the AWS account used by the application. It is also scoped by region. That is, two streams in two different accounts can have the same name, and two streams in the same account, but in two different regions, can have the same name.

CreateStream is an asynchronous operation. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets the stream status to CREATING. After the stream is created, Amazon Kinesis sets the stream status to ACTIVE. You should perform read and write operations only on an ACTIVE stream.

You receive a LimitExceededException when making a CreateStream request if you try to do one of the following:

  • Have more than five streams in the CREATING state at any point in time.
  • Create more shards than are authorized for your account.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

You can use the DescribeStream operation to check the stream status, which is returned in StreamStatus.

CreateStream has a limit of 5 transactions per second per account.

" }, "DeleteStream":{ "name":"DeleteStream", @@ -57,7 +57,7 @@ "exception":true } ], - "documentation":"

This operation deletes a stream and all of its shards and data. \n\t You must shut down any applications that are operating on the stream before you delete the stream. \n\t If an application attempts to operate on a deleted stream, it will receive the exception ResourceNotFoundException.

\n\t

If the stream is in the ACTIVE state, you can delete it. \n\t After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion.

\n\t

Note: Amazon Kinesis might continue to accept data read and write operations, such as PutRecord and GetRecords, \n\t on a stream in the DELETING state until the stream deletion is complete.

\n\t

When you delete a stream, any shards in that stream are also deleted.

\n\t

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

\n\t

DeleteStream has a limit of 5 transactions per second per account.

\n\t \n\t \n\t Delete a Stream \n\t The following is an example of an Amazon Kinesis DeleteStream request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.DeleteStream\n\n{\n \"StreamName\":\"exampleStreamName\"\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\t \n\t \n\t " + "documentation":"

This operation deletes a stream and all of its shards and data. You must shut down any applications that are operating on the stream before you delete the stream. If an application attempts to operate on a deleted stream, it will receive the exception ResourceNotFoundException.

If the stream is in the ACTIVE state, you can delete it. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion.

Note: Amazon Kinesis might continue to accept data read and write operations, such as PutRecord and GetRecords, on a stream in the DELETING state until the stream deletion is complete.

When you delete a stream, any shards in that stream are also deleted.

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

DeleteStream has a limit of 5 transactions per second per account.

" }, "DescribeStream":{ "name":"DescribeStream", @@ -83,7 +83,7 @@ "exception":true } ], - "documentation":"

This operation returns the following information about the stream: the current status of the stream, the stream Amazon Resource Name (ARN), \n\t and an array of shard objects that comprise the stream. For each shard object there is information about the hash key and sequence number ranges that the shard spans, \n\t and the IDs of any earlier shards that played in a role in a MergeShards or SplitShard operation that created the shard. \n\t A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. \n\t The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

\n\t

You can limit the number of returned shards using the Limit parameter. \n\t The number of shards in a stream may be too large to return from a single call to DescribeStream. \n\t You can detect this by using the HasMoreShards flag in the returned output. \n\t HasMoreShards is set to true when there is more data available. \n\t

\n\t

If there are more shards available, you can request more shards by using the shard ID of the last shard returned by the DescribeStream \n\t request, in the ExclusiveStartShardId parameter in a subsequent request to DescribeStream. \n\t DescribeStream is a paginated operation. \n\t

\n\t

DescribeStream has a limit of 10 transactions per second per account.

\n\t \n\t \n\t Obtain Information About a Stream \n\t The following is an example of an Amazon Kinesis DescribeStream request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.DescribeStream\n{\n \"StreamName\":\"exampleStreamName\"\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\n\n{\n \"StreamDescription\": {\n \"HasMoreShards\": false,\n \"Shards\": [\n {\n \"HashKeyRange\": {\n \"EndingHashKey\": \"113427455640312821154458202477256070484\",\n \"StartingHashKey\": \"0\"\n },\n \"SequenceNumberRange\": {\n \"EndingSequenceNumber\": \"21269319989741826081360214168359141376\",\n \"StartingSequenceNumber\": \"21267647932558653966460912964485513216\"\n },\n \"ShardId\": \"shardId-000000000000\"\n },\n {\n \"HashKeyRange\": {\n \"EndingHashKey\": \"226854911280625642308916404954512140969\",\n \"StartingHashKey\": \"113427455640312821154458202477256070485\"\n },\n \"SequenceNumberRange\": {\n \"StartingSequenceNumber\": \"21267647932558653966460912964485513217\"\n },\n \"ShardId\": \"shardId-000000000001\"\n },\n {\n \"HashKeyRange\": {\n \"EndingHashKey\": \"340282366920938463463374607431768211455\",\n \"StartingHashKey\": \"226854911280625642308916404954512140970\"\n },\n \"SequenceNumberRange\": {\n \"StartingSequenceNumber\": \"21267647932558653966460912964485513218\"\n },\n \"ShardId\": \"shardId-000000000002\"\n }\n ],\n \"StreamARN\": \"arn:aws:kinesis:us-east-1:052958737983:exampleStreamName\",\n \"StreamName\": \"exampleStreamName\",\n \"StreamStatus\": \"ACTIVE\"\n }\n}\n\t \n\t \n\t " + "documentation":"

This operation returns the following information about the stream: the current status of the stream, the stream Amazon Resource Name (ARN), and an array of shard objects that comprise the stream. For each shard object there is information about the hash key and sequence number ranges that the shard spans, and the IDs of any earlier shards that played in a role in a MergeShards or SplitShard operation that created the shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

You can limit the number of returned shards using the Limit parameter. The number of shards in a stream may be too large to return from a single call to DescribeStream. You can detect this by using the HasMoreShards flag in the returned output. HasMoreShards is set to true when there is more data available.

If there are more shards available, you can request more shards by using the shard ID of the last shard returned by the DescribeStream request, in the ExclusiveStartShardId parameter in a subsequent request to DescribeStream. DescribeStream is a paginated operation.

DescribeStream has a limit of 10 transactions per second per account.

" }, "GetRecords":{ "name":"GetRecords", @@ -117,7 +117,7 @@ "exception":true } ], - "documentation":"

This operation returns one or more data records from a shard. A GetRecords operation request can retrieve up to 10 MB of data.

\n\t

You specify a shard iterator for the shard that you want to read data from in the ShardIterator parameter. \n\t The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. \n\t A shard iterator specifies this position using the sequence number of a data record in the shard. \n\t For more information about the shard iterator, see GetShardIterator.

\n\t

GetRecords may return a partial result if the response size limit is exceeded. \n\t You will get an error, but not a partial result if the shard's provisioned throughput is exceeded, the shard iterator has expired, \n\t or an internal processing failure has occurred. \n\t Clients can request a smaller amount of data by specifying a maximum number of returned records using the Limit parameter. \n\t The Limit parameter can be set to an integer value of up to 10,000. \n\t If you set the value to an integer greater than 10,000, you will receive InvalidArgumentException.

\n\t

A new shard iterator is returned by every GetRecords request in NextShardIterator, \n\t which you use in the ShardIterator parameter of the next GetRecords request. \n\t When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to \n\t use in your first GetRecords request and then use the shard iterator returned in NextShardIterator for subsequent reads.

\n\t

GetRecords can return null for the NextShardIterator to reflect that the shard has been closed \n\t and that the requested shard iterator would never have returned more data.

\n\t

If no items can be processed because of insufficient provisioned throughput on the shard involved in the request, \n\t GetRecords throws ProvisionedThroughputExceededException.

\n\t \n\t \n\t Get Data from the Shards in a Stream\n\t The following is an example of an Amazon Kinesis GetRecords request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.GetRecords\n\n{\n \"ShardIterator\": \"AAAAAAAAAAETYyAYzd665+8e0X7JTsASDM/Hr2rSwc0X2qz93iuA3udrjTH+ikQvpQk/1ZcMMLzRdAesqwBGPnsthzU0/CBlM/U8/8oEqGwX3pKw0XyeDNRAAZyXBo3MqkQtCpXhr942BRTjvWKhFz7OmCb2Ncfr8Tl2cBktooi6kJhr+djN5WYkB38Rr3akRgCl9qaU4dY=\",\n \"Limit\": 2\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\n\n{\n \"NextShardIterator\": \"AAAAAAAAAAHsW8zCWf9164uy8Epue6WS3w6wmj4a4USt+CNvMd6uXQ+HL5vAJMznqqC0DLKsIjuoiTi1BpT6nW0LN2M2D56zM5H8anHm30Gbri9ua+qaGgj+3XTyvbhpERfrezgLHbPB/rIcVpykJbaSj5tmcXYRmFnqZBEyHwtZYFmh6hvWVFkIwLuMZLMrpWhG5r5hzkE=\",\n \"Records\": [\n {\n \"Data\": \"XzxkYXRhPl8w\",\n \"PartitionKey\": \"partitionKey\",\n \"SequenceNumber\": \"21269319989652663814458848515492872193\"\n }\n ] \n}\n\t \n\t \n\t " + "documentation":"

This operation returns one or more data records from a shard. A GetRecords operation request can retrieve up to 10 MB of data.

You specify a shard iterator for the shard that you want to read data from in the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in the shard. For more information about the shard iterator, see GetShardIterator.

GetRecords may return a partial result if the response size limit is exceeded. You will get an error, but not a partial result if the shard's provisioned throughput is exceeded, the shard iterator has expired, or an internal processing failure has occurred. Clients can request a smaller amount of data by specifying a maximum number of returned records using the Limit parameter. The Limit parameter can be set to an integer value of up to 10,000. If you set the value to an integer greater than 10,000, you will receive InvalidArgumentException.

A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request. When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to use in your first GetRecords request and then use the shard iterator returned in NextShardIterator for subsequent reads.

GetRecords can return null for the NextShardIterator to reflect that the shard has been closed and that the requested shard iterator would never have returned more data.

If no items can be processed because of insufficient provisioned throughput on the shard involved in the request, GetRecords throws ProvisionedThroughputExceededException.

" }, "GetShardIterator":{ "name":"GetShardIterator", @@ -147,7 +147,7 @@ "exception":true } ], - "documentation":"

This operation returns a shard iterator in ShardIterator. The shard iterator specifies the position in the shard from \n\t which you want to start reading data records sequentially. \n\t A shard iterator specifies this position using the sequence number of a data record in a shard. \n\t A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. \n\t The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

\n\t

You must specify the shard iterator type in the GetShardIterator request. \n\t For example, you can set the ShardIteratorType parameter to read exactly from the position denoted by a specific sequence number \n\t by using the AT_SEQUENCE_NUMBER shard iterator type, or right after the sequence number by using the AFTER_SEQUENCE_NUMBER shard iterator type, \n\t using sequence numbers returned by earlier PutRecord, GetRecords or DescribeStream requests. \n\t You can specify the shard iterator type TRIM_HORIZON in the request to cause ShardIterator \n\t to point to the last untrimmed record in the shard in the system, which is the oldest data record in the shard. \n\t Or you can point to just after the most recent record in the shard, by using the shard iterator type LATEST, so that you always \n\t read the most recent data in the shard.

\n\t

Note: Each shard iterator expires five minutes after it is returned to the requester.

\n\t

When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to \n\t to use in your first GetRecords request and then use the shard iterator returned by the \n\t GetRecords request in NextShardIterator for subsequent reads.\n\t A new shard iterator is returned by every GetRecords request in NextShardIterator, \n\t which you use in the ShardIterator parameter of the next GetRecords request.

\n\t

If a GetShardIterator request is made too often, you will receive a ProvisionedThroughputExceededException. \n\t For more information about throughput limits, see the Amazon Kinesis Developer Guide.

\n\t

GetShardIterator can return null for its ShardIterator to indicate that the shard has been closed \n\t and that the requested iterator will return no more data. A shard can be closed by a SplitShard or MergeShards operation.

\n\t

GetShardIterator has a limit of 5 transactions per second per account per open shard.

\n\t \n\t \n\t Get a Shard Iterator\n\t The following is an example of an Amazon Kinesis GetShardIterator request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.GetShardIterator\n\n{\n \"StreamName\": \"exampleStreamName\",\n \"ShardId\": \"shardId-000000000001\",\n \"ShardIteratorType\": \"LATEST\"\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\n{\n \"ShardIterator\": \"AAAAAAAAAAETYyAYzd665+8e0X7JTsASDM/Hr2rSwc0X2qz93iuA3udrjTH+ikQvpQk/1ZcMMLzRdAesqwBGPnsthzU0/CBlM/U8/8oEqGwX3pKw0XyeDNRAAZyXBo3MqkQtCpXhr942BRTjvWKhFz7OmCb2Ncfr8Tl2cBktooi6kJhr+djN5WYkB38Rr3akRgCl9qaU4dY=\" \n}\n\t \n\t \n\t " + "documentation":"

This operation returns a shard iterator in ShardIterator. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in a shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned by the Amazon Kinesis service when a record is put into the stream.

You must specify the shard iterator type in the GetShardIterator request. For example, you can set the ShardIteratorType parameter to read exactly from the position denoted by a specific sequence number by using the AT_SEQUENCE_NUMBER shard iterator type, or right after the sequence number by using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers returned by earlier PutRecord, GetRecords or DescribeStream requests. You can specify the shard iterator type TRIM_HORIZON in the request to cause ShardIterator to point to the last untrimmed record in the shard in the system, which is the oldest data record in the shard. Or you can point to just after the most recent record in the shard, by using the shard iterator type LATEST, so that you always read the most recent data in the shard.

Note: Each shard iterator expires five minutes after it is returned to the requester.

When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to to use in your first GetRecords request and then use the shard iterator returned by the GetRecords request in NextShardIterator for subsequent reads. A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request.

If a GetShardIterator request is made too often, you will receive a ProvisionedThroughputExceededException. For more information about throughput limits, see the Amazon Kinesis Developer Guide.

GetShardIterator can return null for its ShardIterator to indicate that the shard has been closed and that the requested iterator will return no more data. A shard can be closed by a SplitShard or MergeShards operation.

GetShardIterator has a limit of 5 transactions per second per account per open shard.

" }, "ListStreams":{ "name":"ListStreams", @@ -169,7 +169,7 @@ "exception":true } ], - "documentation":"

This operation returns an array of the names of all the streams that are associated with the AWS account \n\t making the ListStreams request. A given AWS account can have many streams active at one time. \n\t

\n\t

The number of streams may be too large to return from a single call to ListStreams. \n\t You can limit the number of returned streams using the Limit parameter. \n\t If you do not specify a value for the Limit parameter, Amazon Kinesis uses the default limit, which is currently 10.

\n\t

You can detect if there are more streams available to list by using the HasMoreStreams flag from the returned output. \n\t If there are more streams available, you can request more streams by using the name of the last stream returned by the ListStreams \n\t request in the ExclusiveStartStreamName parameter in a subsequent request to ListStreams. \n\t The group of stream names returned by the subsequent request is then added to the list. \n\t You can continue this process until all the stream names have been collected in the list.

\n\t

ListStreams has a limit of 5 transactions per second per account.

\n\t \n\t \n\t List the Streams for an AWS Account\n\t The following is an example of an Amazon Kinesis ListStreams request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.ListStreams\n\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\n\n{\n \"HasMoreStreams\": false,\n \"StreamNames\": [\n \"exampleStreamName\"\n ]\n}\n\t \n\t \n\t " + "documentation":"

This operation returns an array of the names of all the streams that are associated with the AWS account making the ListStreams request. A given AWS account can have many streams active at one time.

The number of streams may be too large to return from a single call to ListStreams. You can limit the number of returned streams using the Limit parameter. If you do not specify a value for the Limit parameter, Amazon Kinesis uses the default limit, which is currently 10.

You can detect if there are more streams available to list by using the HasMoreStreams flag from the returned output. If there are more streams available, you can request more streams by using the name of the last stream returned by the ListStreams request in the ExclusiveStartStreamName parameter in a subsequent request to ListStreams. The group of stream names returned by the subsequent request is then added to the list. You can continue this process until all the stream names have been collected in the list.

ListStreams has a limit of 5 transactions per second per account.

" }, "MergeShards":{ "name":"MergeShards", @@ -199,7 +199,7 @@ "exception":true } ], - "documentation":"

This operation merges two adjacent shards in a stream and combines them into a single shard to reduce the stream's capacity to ingest and transport data. \n\t Two shards are considered adjacent if the union of the hash key ranges for the two shards form a contiguous set with no gaps. \n\t For example, if you have two shards, one with a hash key range of 276...381 and the other with a hash key range of 382...454, \n\t then you could merge these two shards into a single shard that would have a hash key range of 276...454. After the\n\t merge, the single child shard receives data for all hash key values covered by the two parent shards.

\n\t

MergeShards is called when there is a need to reduce the overall capacity of a stream because of excess capacity \n\t that is not being used. \n\t The operation requires that you specify the shard to be merged and the adjacent shard for a given stream. \n\t For more information about merging shards, see the Amazon Kinesis Developer Guide.

\n\t

If the stream is in the ACTIVE state, you can call MergeShards. If a stream is in CREATING or UPDATING or DELETING states, \n\t then Amazon Kinesis returns a ResourceInUseException. \n\t If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException.

\n\t

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

\n\t

MergeShards is an asynchronous operation. Upon receiving a MergeShards request, \n\t Amazon Kinesis immediately returns a response and sets the StreamStatus to UPDATING. \n\t After the operation is completed, Amazon Kinesis sets the StreamStatus to ACTIVE. \n\t Read and write operations continue to work while the stream is in the UPDATING state.

\n\t

You use the DescribeStream operation to determine the shard IDs that are specified in the MergeShards request.

\n\t

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, \n\t MergeShards or SplitShard, you will receive a LimitExceededException.

\n\t

MergeShards has limit of 5 transactions per second per account.

\n\t \n\t \n\t Merge Two Adjacent Shards\n\t The following is an example of an Amazon Kinesis MergeShards request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.MergeShards\n\n{\n \"StreamName\": \"exampleStreamName\",\n \"ShardToMerge\": \"shardId-000000000000\",\n \"AdjacentShardToMerge\": \"shardId-000000000001\"\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\t \n\t \n\t " + "documentation":"

This operation merges two adjacent shards in a stream and combines them into a single shard to reduce the stream's capacity to ingest and transport data. Two shards are considered adjacent if the union of the hash key ranges for the two shards form a contiguous set with no gaps. For example, if you have two shards, one with a hash key range of 276...381 and the other with a hash key range of 382...454, then you could merge these two shards into a single shard that would have a hash key range of 276...454. After the merge, the single child shard receives data for all hash key values covered by the two parent shards.

MergeShards is called when there is a need to reduce the overall capacity of a stream because of excess capacity that is not being used. The operation requires that you specify the shard to be merged and the adjacent shard for a given stream. For more information about merging shards, see the Amazon Kinesis Developer Guide.

If the stream is in the ACTIVE state, you can call MergeShards. If a stream is in CREATING or UPDATING or DELETING states, then Amazon Kinesis returns a ResourceInUseException. If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException.

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

MergeShards is an asynchronous operation. Upon receiving a MergeShards request, Amazon Kinesis immediately returns a response and sets the StreamStatus to UPDATING. After the operation is completed, Amazon Kinesis sets the StreamStatus to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You use the DescribeStream operation to determine the shard IDs that are specified in the MergeShards request.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException.

MergeShards has limit of 5 transactions per second per account.

" }, "PutRecord":{ "name":"PutRecord", @@ -229,7 +229,7 @@ "exception":true } ], - "documentation":"

This operation puts a data record into an Amazon Kinesis stream from a producer. \n\t This operation must be called to send data from the producer into the Amazon Kinesis stream for real-time ingestion and subsequent processing. \n\t The PutRecord operation requires the name of the stream that captures, stores, and transports the data; a partition key; \n\t and the data blob itself. The data blob could be a segment from a log file, geographic/location data, website clickstream data, \n\t or any other data type.

\n\t

The partition key is used to distribute data across shards. Amazon Kinesis segregates the data records that belong to a data stream into multiple shards, \n\t using the partition key associated with each data record to determine which shard a given data record belongs to.

\n\t

Partition keys are Unicode strings, with a maximum length limit of 256 bytes. An MD5 hash function is used to map partition keys to 128-bit \n\t integer values and to map associated data records to shards using the hash key ranges of the shards. \n\t You can override hashing the partition key to determine the shard by explicitly specifying a hash value \n\t using the ExplicitHashKey parameter. For more information, see the \n\t Amazon Kinesis Developer Guide.

\n\t

PutRecord returns the shard ID of where the data record was placed and the sequence number that was assigned to the data record.

\n

Sequence numbers generally increase over time. To guarantee strictly increasing ordering, use the SequenceNumberForOrdering parameter. For more information, see the Amazon Kinesis Developer Guide.

\n\t

If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, \n\t PutRecord throws ProvisionedThroughputExceededException.

\n\t

Data records are accessible for only 24 hours from the time that they are added to an Amazon Kinesis stream.

\n\t \n\t \n\t Add Data to a Stream \n\t The following is an example of an Amazon Kinesis PutRecord request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.PutRecord\n\n{\n \"StreamName\": \"exampleStreamName\",\n \"Data\": \"XzxkYXRhPl8x\",\n \"PartitionKey\": \"partitionKey\"\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\n{\n \"SequenceNumber\": \"21269319989653637946712965403778482177\",\n \"ShardId\": \"shardId-000000000001\"\n}\n\t \n\t \n\t " + "documentation":"

This operation puts a data record into an Amazon Kinesis stream from a producer. This operation must be called to send data from the producer into the Amazon Kinesis stream for real-time ingestion and subsequent processing. The PutRecord operation requires the name of the stream that captures, stores, and transports the data; a partition key; and the data blob itself. The data blob could be a segment from a log file, geographic/location data, website clickstream data, or any other data type.

The partition key is used to distribute data across shards. Amazon Kinesis segregates the data records that belong to a data stream into multiple shards, using the partition key associated with each data record to determine which shard a given data record belongs to.

Partition keys are Unicode strings, with a maximum length limit of 256 bytes. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards using the hash key ranges of the shards. You can override hashing the partition key to determine the shard by explicitly specifying a hash value using the ExplicitHashKey parameter. For more information, see the Amazon Kinesis Developer Guide.

PutRecord returns the shard ID of where the data record was placed and the sequence number that was assigned to the data record.

Sequence numbers generally increase over time. To guarantee strictly increasing ordering, use the SequenceNumberForOrdering parameter. For more information, see the Amazon Kinesis Developer Guide.

If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, PutRecord throws ProvisionedThroughputExceededException.

Data records are accessible for only 24 hours from the time that they are added to an Amazon Kinesis stream.

" }, "SplitShard":{ "name":"SplitShard", @@ -259,7 +259,7 @@ "exception":true } ], - "documentation":"

This operation splits a shard into two new shards in the stream, to increase the stream's capacity to ingest and transport data. \n\t SplitShard is called when there is a need to increase the overall capacity of stream because of an expected increase \n\t in the volume of data records being ingested.

\n\t

SplitShard can also be used when a given shard appears to be approaching its maximum utilization, for example, \n\t when the set of producers sending data into the specific shard are suddenly sending more than previously anticipated. \n\t You can also call the SplitShard operation to increase stream capacity, so that more\n\t Amazon Kinesis applications can simultaneously read data from the stream for real-time processing.

\n\t

The SplitShard operation requires that you specify the shard to be split and the new hash key, \n\t which is the position in the shard where the shard gets split in two. \n\t In many cases, the new hash key might simply be the average of the beginning and ending hash key, \n\t but it can be any hash key value in the range being mapped into the shard. \n\t For more information about splitting shards, see the Amazon Kinesis Developer Guide.\n\t

\n\t

You can use the DescribeStream operation to determine the shard ID and hash key values for the \n\t ShardToSplit and NewStartingHashKey parameters that are specified in the SplitShard request.

\n\t

SplitShard is an asynchronous operation. Upon receiving a SplitShard request, Amazon Kinesis \n\t immediately returns a response and sets the stream status to UPDATING. After the operation is completed, Amazon Kinesis \n\t sets the stream status to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state. \n\t

\n\t

You can use DescribeStream to check the status of the stream, which is returned in StreamStatus. \n\t If the stream is in the ACTIVE state, you can call SplitShard. \n\t If a stream is in CREATING or UPDATING or DELETING states, then Amazon Kinesis returns a ResourceInUseException.

\n\t

If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException. \n\t If you try to create more shards than are authorized for your account, you receive a LimitExceededException.

\n\t

Note: The default limit for an AWS account is 10 shards per stream. \n\t If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

\n\t

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, \n\t you will receive a LimitExceededException.

\n\t

SplitShard has limit of 5 transactions per second per account.

\n\t \n\t \n\t Split a Shard \n\t The following is an example of an Amazon Kinesis SplitShard request and response.\n\t .\nx-amz-Date: \nAuthorization: AWS4-HMAC-SHA256 Credential=, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=\nUser-Agent: \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nConnection: Keep-Alive]]>\nX-Amz-Target: Kinesis_20131202.SplitShard\n\n{\n \"StreamName\": \"exampleStreamName\",\n \"ShardToSplit\": \"shardId-000000000000\",\n \"NewStartingHashKey\": \"10\"\n}\n\t \n\t \nContent-Type: application/x-amz-json-1.1\nContent-Length: \nDate: ]]>\n\t \n\t \n\t " + "documentation":"

This operation splits a shard into two new shards in the stream, to increase the stream's capacity to ingest and transport data. SplitShard is called when there is a need to increase the overall capacity of stream because of an expected increase in the volume of data records being ingested.

SplitShard can also be used when a given shard appears to be approaching its maximum utilization, for example, when the set of producers sending data into the specific shard are suddenly sending more than previously anticipated. You can also call the SplitShard operation to increase stream capacity, so that more Amazon Kinesis applications can simultaneously read data from the stream for real-time processing.

The SplitShard operation requires that you specify the shard to be split and the new hash key, which is the position in the shard where the shard gets split in two. In many cases, the new hash key might simply be the average of the beginning and ending hash key, but it can be any hash key value in the range being mapped into the shard. For more information about splitting shards, see the Amazon Kinesis Developer Guide.

You can use the DescribeStream operation to determine the shard ID and hash key values for the ShardToSplit and NewStartingHashKey parameters that are specified in the SplitShard request.

SplitShard is an asynchronous operation. Upon receiving a SplitShard request, Amazon Kinesis immediately returns a response and sets the stream status to UPDATING. After the operation is completed, Amazon Kinesis sets the stream status to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You can use DescribeStream to check the status of the stream, which is returned in StreamStatus. If the stream is in the ACTIVE state, you can call SplitShard. If a stream is in CREATING or UPDATING or DELETING states, then Amazon Kinesis returns a ResourceInUseException.

If the specified stream does not exist, Amazon Kinesis returns a ResourceNotFoundException. If you try to create more shards than are authorized for your account, you receive a LimitExceededException.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException.

SplitShard has limit of 5 transactions per second per account.

" } }, "shapes":{ @@ -273,11 +273,11 @@ "members":{ "StreamName":{ "shape":"StreamName", - "documentation":"

A name to identify the stream. The stream name is scoped to the AWS account used by the application that creates the stream.\n It is also scoped by region. That is, two streams in two different AWS accounts can have the same name,\n and two streams in the same AWS account, but in two different regions, can have the same name.

" + "documentation":"

A name to identify the stream. The stream name is scoped to the AWS account used by the application that creates the stream. It is also scoped by region. That is, two streams in two different AWS accounts can have the same name, and two streams in the same AWS account, but in two different regions, can have the same name.

" }, "ShardCount":{ "shape":"PositiveIntegerObject", - "documentation":"

The number of shards that the stream will use. The throughput of the stream is a function of the number of shards; more shards are required for greater\n provisioned throughput.

\n

Note: The default limit for an AWS account is 10 shards per stream. \n If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

" + "documentation":"

The number of shards that the stream will use. The throughput of the stream is a function of the number of shards; more shards are required for greater provisioned throughput.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

" } }, "documentation":"

Represents the input of a CreateStream operation.

" @@ -328,7 +328,7 @@ "members":{ "StreamDescription":{ "shape":"StreamDescription", - "documentation":"

Contains the current status of the stream, the stream ARN, an array of shard objects that comprise the stream, \n and states whether there are more shards available.

" + "documentation":"

Contains the current status of the stream, the stream ARN, an array of shard objects that comprise the stream, and states whether there are more shards available.

" } }, "documentation":"

Represents the output of a DescribeStream operation.

" @@ -371,7 +371,7 @@ }, "NextShardIterator":{ "shape":"ShardIterator", - "documentation":"

The next position in the shard from which to start sequentially reading data records.\n If set to null, the shard has been closed and the requested iterator will not return any more data. \n

" + "documentation":"

The next position in the shard from which to start sequentially reading data records. If set to null, the shard has been closed and the requested iterator will not return any more data.

" } }, "documentation":"

Represents the output of a GetRecords operation.

" @@ -394,7 +394,7 @@ }, "ShardIteratorType":{ "shape":"ShardIteratorType", - "documentation":"

Determines how the shard iterator is used to start reading data records from the shard.

\n

The following are the valid shard iterator types:

\n
    \n
  • AT_SEQUENCE_NUMBER - Start reading exactly from the position denoted by a specific sequence number.
  • \n
  • AFTER_SEQUENCE_NUMBER - Start reading right after the position denoted by a specific sequence number.
  • \n
  • TRIM_HORIZON - Start reading at the last untrimmed record in the shard in the system, which is the oldest data record in the shard.
  • \n
  • LATEST - Start reading just after the most recent record in the shard, so that you always read the most recent data in the shard.
  • \n
" + "documentation":"

Determines how the shard iterator is used to start reading data records from the shard.

The following are the valid shard iterator types:

  • AT_SEQUENCE_NUMBER - Start reading exactly from the position denoted by a specific sequence number.
  • AFTER_SEQUENCE_NUMBER - Start reading right after the position denoted by a specific sequence number.
  • TRIM_HORIZON - Start reading at the last untrimmed record in the shard in the system, which is the oldest data record in the shard.
  • LATEST - Start reading just after the most recent record in the shard, so that you always read the most recent data in the shard.
" }, "StartingSequenceNumber":{ "shape":"SequenceNumber", @@ -408,7 +408,7 @@ "members":{ "ShardIterator":{ "shape":"ShardIterator", - "documentation":"

The position in the shard from which to start reading data records sequentially. \n A shard iterator specifies this position using the sequence number of a data record in a shard.

" + "documentation":"

The position in the shard from which to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in a shard.

" } }, "documentation":"

Represents the output of a GetShardIterator operation.

" @@ -543,7 +543,7 @@ }, "PartitionKey":{ "shape":"PartitionKey", - "documentation":"

Determines which shard in the stream the data record is assigned to. \n Partition keys are Unicode strings with a maximum length limit of 256 bytes. \n Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. \n Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. \n As a result of this hashing mechanism, all data records with the same partition key will map to the same shard within the stream.

" + "documentation":"

Determines which shard in the stream the data record is assigned to. Partition keys are Unicode strings with a maximum length limit of 256 bytes. Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key will map to the same shard within the stream.

" }, "ExplicitHashKey":{ "shape":"HashKey", @@ -569,7 +569,7 @@ }, "SequenceNumber":{ "shape":"SequenceNumber", - "documentation":"

The sequence number identifier that was assigned to the put data record. The sequence number for the record is unique across \n all records in the stream. A sequence number is the identifier associated with every record put into the stream.

" + "documentation":"

The sequence number identifier that was assigned to the put data record. The sequence number for the record is unique across all records in the stream. A sequence number is the identifier associated with every record put into the stream.

" } }, "documentation":"

Represents the output of a PutRecord operation.

" @@ -588,7 +588,7 @@ }, "Data":{ "shape":"Data", - "documentation":"

The data blob. The data in the blob is both opaque and immutable to the Amazon Kinesis service, \n which does not inspect, interpret, or change the data in the blob in any way. The maximum size of the data blob (the payload after Base64-decoding) is 50 kilobytes (KB)

" + "documentation":"

The data blob. The data in the blob is both opaque and immutable to the Amazon Kinesis service, which does not inspect, interpret, or change the data in the blob in any way. The maximum size of the data blob (the payload after Base64-decoding) is 50 kilobytes (KB)

" }, "PartitionKey":{ "shape":"PartitionKey", @@ -707,7 +707,7 @@ }, "NewStartingHashKey":{ "shape":"HashKey", - "documentation":"

A hash key value for the starting hash key of one of the child shards created by the split. \n The hash key range for a given shard constitutes a set of ordered contiguous positive integers. \n The value for NewStartingHashKey must be in the range of hash keys being mapped into the shard. \n The NewStartingHashKey hash key value and all higher hash key values in hash key range are distributed to one of the child shards. \n All the lower hash key values in the range are distributed to the other child shard.

" + "documentation":"

A hash key value for the starting hash key of one of the child shards created by the split. The hash key range for a given shard constitutes a set of ordered contiguous positive integers. The value for NewStartingHashKey must be in the range of hash keys being mapped into the shard. The NewStartingHashKey hash key value and all higher hash key values in hash key range are distributed to one of the child shards. All the lower hash key values in the range are distributed to the other child shard.

" } }, "documentation":"

Represents the input of a SplitShard operation.

" @@ -733,7 +733,7 @@ }, "StreamStatus":{ "shape":"StreamStatus", - "documentation":"

The current status of the stream being described.

\n

The stream status is one of the following states:

\n
    \n
  • CREATING - The stream is being created. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets StreamStatus to CREATING.
  • \n
  • DELETING - The stream is being deleted. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion.
  • \n
  • ACTIVE - The stream exists and is ready for read and write operations or deletion. You should perform read and write operations only on an ACTIVE stream.
  • \n
  • UPDATING - Shards in the stream are being merged or split. Read and write operations continue to work while the stream is in the UPDATING state.
  • \n
" + "documentation":"

The current status of the stream being described.

The stream status is one of the following states:

  • CREATING - The stream is being created. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets StreamStatus to CREATING.
  • DELETING - The stream is being deleted. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion.
  • ACTIVE - The stream exists and is ready for read and write operations or deletion. You should perform read and write operations only on an ACTIVE stream.
  • UPDATING - Shards in the stream are being merged or split. Read and write operations continue to work while the stream is in the UPDATING state.
" }, "Shards":{ "shape":"ShardList", diff --git a/Podfile b/Podfile index d47b18d3454..1705f987eaf 100644 --- a/Podfile +++ b/Podfile @@ -1,7 +1,6 @@ -pod 'Bolts', '~> 1.1.0' +pod 'Bolts', '~> 1.1.1' pod 'Mantle', '~> 1.4.1' -pod 'TMCache', '~> 1.2.0' -pod 'CSURITemplate', '~> 0.3.0' +pod 'TMCache', '~> 1.2.1' pod 'XMLDictionary', '~> 1.4.0' pod 'UICKeyChainStore', '~> 1.0.5' pod 'Reachability', '~> 3.1.1' diff --git a/S3/AWSS3.h b/S3/AWSS3.h index da060638b76..f7b8b8a4665 100644 --- a/S3/AWSS3.h +++ b/S3/AWSS3.h @@ -25,7 +25,6 @@ @interface AWSS3 : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultS3; diff --git a/S3/AWSS3.m b/S3/AWSS3.m index bfaa5565265..ea4cef4522d 100644 --- a/S3/AWSS3.m +++ b/S3/AWSS3.m @@ -15,10 +15,10 @@ #import "AWSS3.h" -#import "AZNetworking.h" +#import "AWSNetworking.h" #import "AWSSignature.h" #import "AWSService.h" -#import "AZCategory.h" +#import "AWSCategory.h" #import "AWSNetworking.h" #import "AWSURLRequestSerialization.h" #import "AWSURLResponseSerialization.h" @@ -87,7 +87,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSS3ErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -95,8 +95,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSS3ErrorDomain code:AWSS3ErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } } @@ -119,15 +118,15 @@ @interface AWSS3RequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSS3RequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSS3ErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { @@ -135,11 +134,11 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount case AWSS3ErrorInvalidAccessKeyId: case AWSS3ErrorInvalidToken: case AWSS3ErrorTokenRefreshRequired: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; - break; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + break; default: - break; + break; } } @@ -150,7 +149,7 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @@ -159,9 +158,8 @@ @interface AWSRequest() */ @interface AWSS3() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -188,20 +186,20 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceS3]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceS3]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSS3RequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; _configuration.headers = @{ - @"Host" : _endpoint.hostName, + @"Host" : _configuration.endpoint.hostName, }; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } @@ -213,14 +211,14 @@ -(NSString *)urlStringWithBucketName:(NSString *)bucketName objectName:(NSString NSString *keyPath; NSString *resQuery; - keyPath = (objectName == nil ? [NSString stringWithFormat:@"%@", bucketName] : [NSString stringWithFormat:@"%@/%@", bucketName, [objectName az_stringWithURLEncoding]]); + keyPath = (objectName == nil ? [NSString stringWithFormat:@"%@", bucketName] : [NSString stringWithFormat:@"%@/%@", bucketName, [objectName aws_stringWithURLEncoding]]); resQuery = (subResource == nil ? @"" : [NSString stringWithFormat:@"?%@", subResource]); - return [NSString stringWithFormat:@"%@/%@%@", self.endpoint.URL, keyPath, resQuery]; + return [NSString stringWithFormat:@"%@/%@%@", self.configuration.endpoint.URL, keyPath, resQuery]; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -229,9 +227,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -251,8 +249,8 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)abortMultipartUpload:(AWSS3AbortMultipartUploadRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodDELETE + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"AbortMultipartUpload" outputClass:nil]; @@ -260,8 +258,8 @@ - (BFTask *)abortMultipartUpload:(AWSS3AbortMultipartUploadRequest *)request { - (BFTask *)completeMultipartUpload:(AWSS3CompleteMultipartUploadRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodPOST + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"CompleteMultipartUpload" outputClass:[AWSS3CompleteMultipartUploadOutput class]]; @@ -269,7 +267,7 @@ - (BFTask *)completeMultipartUpload:(AWSS3CompleteMultipartUploadRequest *)reque - (BFTask *)createBucket:(AWSS3CreateBucketRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}" targetPrefix:@"" operationName:@"CreateBucket" @@ -278,8 +276,8 @@ - (BFTask *)createBucket:(AWSS3CreateBucketRequest *)request { - (BFTask *)createMultipartUpload:(AWSS3CreateMultipartUploadRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST - URLString:@"/{Bucket}/{Key}?uploads" + HTTPMethod:AWSHTTPMethodPOST + URLString:@"/{Bucket}/{Key+}?uploads" targetPrefix:@"" operationName:@"CreateMultipartUpload" outputClass:[AWSS3CreateMultipartUploadOutput class]]; @@ -287,7 +285,7 @@ - (BFTask *)createMultipartUpload:(AWSS3CreateMultipartUploadRequest *)request { - (BFTask *)deleteBucket:(AWSS3DeleteBucketRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE + HTTPMethod:AWSHTTPMethodDELETE URLString:@"/{Bucket}" targetPrefix:@"" operationName:@"DeleteBucket" @@ -296,7 +294,7 @@ - (BFTask *)deleteBucket:(AWSS3DeleteBucketRequest *)request { - (BFTask *)deleteBucketCors:(AWSS3DeleteBucketCorsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE + HTTPMethod:AWSHTTPMethodDELETE URLString:@"/{Bucket}?cors" targetPrefix:@"" operationName:@"DeleteBucketCors" @@ -305,7 +303,7 @@ - (BFTask *)deleteBucketCors:(AWSS3DeleteBucketCorsRequest *)request { - (BFTask *)deleteBucketLifecycle:(AWSS3DeleteBucketLifecycleRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE + HTTPMethod:AWSHTTPMethodDELETE URLString:@"/{Bucket}?lifecycle" targetPrefix:@"" operationName:@"DeleteBucketLifecycle" @@ -314,7 +312,7 @@ - (BFTask *)deleteBucketLifecycle:(AWSS3DeleteBucketLifecycleRequest *)request { - (BFTask *)deleteBucketPolicy:(AWSS3DeleteBucketPolicyRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE + HTTPMethod:AWSHTTPMethodDELETE URLString:@"/{Bucket}?policy" targetPrefix:@"" operationName:@"DeleteBucketPolicy" @@ -323,7 +321,7 @@ - (BFTask *)deleteBucketPolicy:(AWSS3DeleteBucketPolicyRequest *)request { - (BFTask *)deleteBucketTagging:(AWSS3DeleteBucketTaggingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE + HTTPMethod:AWSHTTPMethodDELETE URLString:@"/{Bucket}?tagging" targetPrefix:@"" operationName:@"DeleteBucketTagging" @@ -332,7 +330,7 @@ - (BFTask *)deleteBucketTagging:(AWSS3DeleteBucketTaggingRequest *)request { - (BFTask *)deleteBucketWebsite:(AWSS3DeleteBucketWebsiteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE + HTTPMethod:AWSHTTPMethodDELETE URLString:@"/{Bucket}?website" targetPrefix:@"" operationName:@"DeleteBucketWebsite" @@ -341,8 +339,8 @@ - (BFTask *)deleteBucketWebsite:(AWSS3DeleteBucketWebsiteRequest *)request { - (BFTask *)deleteObject:(AWSS3DeleteObjectRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodDELETE - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodDELETE + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"DeleteObject" outputClass:[AWSS3DeleteObjectOutput class]]; @@ -350,7 +348,7 @@ - (BFTask *)deleteObject:(AWSS3DeleteObjectRequest *)request { - (BFTask *)deleteObjects:(AWSS3DeleteObjectsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"/{Bucket}?delete" targetPrefix:@"" operationName:@"DeleteObjects" @@ -359,7 +357,7 @@ - (BFTask *)deleteObjects:(AWSS3DeleteObjectsRequest *)request { - (BFTask *)getBucketAcl:(AWSS3GetBucketAclRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?acl" targetPrefix:@"" operationName:@"GetBucketAcl" @@ -368,7 +366,7 @@ - (BFTask *)getBucketAcl:(AWSS3GetBucketAclRequest *)request { - (BFTask *)getBucketCors:(AWSS3GetBucketCorsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?cors" targetPrefix:@"" operationName:@"GetBucketCors" @@ -377,7 +375,7 @@ - (BFTask *)getBucketCors:(AWSS3GetBucketCorsRequest *)request { - (BFTask *)getBucketLifecycle:(AWSS3GetBucketLifecycleRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?lifecycle" targetPrefix:@"" operationName:@"GetBucketLifecycle" @@ -386,7 +384,7 @@ - (BFTask *)getBucketLifecycle:(AWSS3GetBucketLifecycleRequest *)request { - (BFTask *)getBucketLocation:(AWSS3GetBucketLocationRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?location" targetPrefix:@"" operationName:@"GetBucketLocation" @@ -395,7 +393,7 @@ - (BFTask *)getBucketLocation:(AWSS3GetBucketLocationRequest *)request { - (BFTask *)getBucketLogging:(AWSS3GetBucketLoggingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?logging" targetPrefix:@"" operationName:@"GetBucketLogging" @@ -404,7 +402,7 @@ - (BFTask *)getBucketLogging:(AWSS3GetBucketLoggingRequest *)request { - (BFTask *)getBucketNotification:(AWSS3GetBucketNotificationRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?notification" targetPrefix:@"" operationName:@"GetBucketNotification" @@ -413,7 +411,7 @@ - (BFTask *)getBucketNotification:(AWSS3GetBucketNotificationRequest *)request { - (BFTask *)getBucketPolicy:(AWSS3GetBucketPolicyRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?policy" targetPrefix:@"" operationName:@"GetBucketPolicy" @@ -422,7 +420,7 @@ - (BFTask *)getBucketPolicy:(AWSS3GetBucketPolicyRequest *)request { - (BFTask *)getBucketRequestPayment:(AWSS3GetBucketRequestPaymentRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?requestPayment" targetPrefix:@"" operationName:@"GetBucketRequestPayment" @@ -431,7 +429,7 @@ - (BFTask *)getBucketRequestPayment:(AWSS3GetBucketRequestPaymentRequest *)reque - (BFTask *)getBucketTagging:(AWSS3GetBucketTaggingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?tagging" targetPrefix:@"" operationName:@"GetBucketTagging" @@ -440,7 +438,7 @@ - (BFTask *)getBucketTagging:(AWSS3GetBucketTaggingRequest *)request { - (BFTask *)getBucketVersioning:(AWSS3GetBucketVersioningRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?versioning" targetPrefix:@"" operationName:@"GetBucketVersioning" @@ -449,7 +447,7 @@ - (BFTask *)getBucketVersioning:(AWSS3GetBucketVersioningRequest *)request { - (BFTask *)getBucketWebsite:(AWSS3GetBucketWebsiteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?website" targetPrefix:@"" operationName:@"GetBucketWebsite" @@ -458,8 +456,8 @@ - (BFTask *)getBucketWebsite:(AWSS3GetBucketWebsiteRequest *)request { - (BFTask *)getObject:(AWSS3GetObjectRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodGET + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"GetObject" outputClass:[AWSS3GetObjectOutput class]]; @@ -467,8 +465,8 @@ - (BFTask *)getObject:(AWSS3GetObjectRequest *)request { - (BFTask *)getObjectAcl:(AWSS3GetObjectAclRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET - URLString:@"/{Bucket}/{Key}?acl" + HTTPMethod:AWSHTTPMethodGET + URLString:@"/{Bucket}/{Key+}?acl" targetPrefix:@"" operationName:@"GetObjectAcl" outputClass:[AWSS3GetObjectAclOutput class]]; @@ -476,8 +474,8 @@ - (BFTask *)getObjectAcl:(AWSS3GetObjectAclRequest *)request { - (BFTask *)getObjectTorrent:(AWSS3GetObjectTorrentRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET - URLString:@"/{Bucket}/{Key}?torrent" + HTTPMethod:AWSHTTPMethodGET + URLString:@"/{Bucket}/{Key+}?torrent" targetPrefix:@"" operationName:@"GetObjectTorrent" outputClass:[AWSS3GetObjectTorrentOutput class]]; @@ -485,7 +483,7 @@ - (BFTask *)getObjectTorrent:(AWSS3GetObjectTorrentRequest *)request { - (BFTask *)headBucket:(AWSS3HeadBucketRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodHEAD + HTTPMethod:AWSHTTPMethodHEAD URLString:@"/{Bucket}" targetPrefix:@"" operationName:@"HeadBucket" @@ -494,8 +492,8 @@ - (BFTask *)headBucket:(AWSS3HeadBucketRequest *)request { - (BFTask *)headObject:(AWSS3HeadObjectRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodHEAD - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodHEAD + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"HeadObject" outputClass:[AWSS3HeadObjectOutput class]]; @@ -503,7 +501,7 @@ - (BFTask *)headObject:(AWSS3HeadObjectRequest *)request { - (BFTask *)listBuckets:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"" targetPrefix:@"" operationName:@"ListBuckets" @@ -512,7 +510,7 @@ - (BFTask *)listBuckets:(AWSRequest *)request { - (BFTask *)listMultipartUploads:(AWSS3ListMultipartUploadsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?uploads" targetPrefix:@"" operationName:@"ListMultipartUploads" @@ -521,7 +519,7 @@ - (BFTask *)listMultipartUploads:(AWSS3ListMultipartUploadsRequest *)request { - (BFTask *)listObjectVersions:(AWSS3ListObjectVersionsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}?versions" targetPrefix:@"" operationName:@"ListObjectVersions" @@ -530,7 +528,7 @@ - (BFTask *)listObjectVersions:(AWSS3ListObjectVersionsRequest *)request { - (BFTask *)listObjects:(AWSS3ListObjectsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET + HTTPMethod:AWSHTTPMethodGET URLString:@"/{Bucket}" targetPrefix:@"" operationName:@"ListObjects" @@ -539,8 +537,8 @@ - (BFTask *)listObjects:(AWSS3ListObjectsRequest *)request { - (BFTask *)listParts:(AWSS3ListPartsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodGET - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodGET + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"ListParts" outputClass:[AWSS3ListPartsOutput class]]; @@ -548,7 +546,7 @@ - (BFTask *)listParts:(AWSS3ListPartsRequest *)request { - (BFTask *)putBucketAcl:(AWSS3PutBucketAclRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?acl" targetPrefix:@"" operationName:@"PutBucketAcl" @@ -557,7 +555,7 @@ - (BFTask *)putBucketAcl:(AWSS3PutBucketAclRequest *)request { - (BFTask *)putBucketCors:(AWSS3PutBucketCorsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?cors" targetPrefix:@"" operationName:@"PutBucketCors" @@ -566,7 +564,7 @@ - (BFTask *)putBucketCors:(AWSS3PutBucketCorsRequest *)request { - (BFTask *)putBucketLifecycle:(AWSS3PutBucketLifecycleRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?lifecycle" targetPrefix:@"" operationName:@"PutBucketLifecycle" @@ -575,7 +573,7 @@ - (BFTask *)putBucketLifecycle:(AWSS3PutBucketLifecycleRequest *)request { - (BFTask *)putBucketLogging:(AWSS3PutBucketLoggingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?logging" targetPrefix:@"" operationName:@"PutBucketLogging" @@ -584,7 +582,7 @@ - (BFTask *)putBucketLogging:(AWSS3PutBucketLoggingRequest *)request { - (BFTask *)putBucketNotification:(AWSS3PutBucketNotificationRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?notification" targetPrefix:@"" operationName:@"PutBucketNotification" @@ -593,7 +591,7 @@ - (BFTask *)putBucketNotification:(AWSS3PutBucketNotificationRequest *)request { - (BFTask *)putBucketPolicy:(AWSS3PutBucketPolicyRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?policy" targetPrefix:@"" operationName:@"PutBucketPolicy" @@ -602,7 +600,7 @@ - (BFTask *)putBucketPolicy:(AWSS3PutBucketPolicyRequest *)request { - (BFTask *)putBucketRequestPayment:(AWSS3PutBucketRequestPaymentRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?requestPayment" targetPrefix:@"" operationName:@"PutBucketRequestPayment" @@ -611,7 +609,7 @@ - (BFTask *)putBucketRequestPayment:(AWSS3PutBucketRequestPaymentRequest *)reque - (BFTask *)putBucketTagging:(AWSS3PutBucketTaggingRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?tagging" targetPrefix:@"" operationName:@"PutBucketTagging" @@ -620,7 +618,7 @@ - (BFTask *)putBucketTagging:(AWSS3PutBucketTaggingRequest *)request { - (BFTask *)putBucketVersioning:(AWSS3PutBucketVersioningRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?versioning" targetPrefix:@"" operationName:@"PutBucketVersioning" @@ -629,7 +627,7 @@ - (BFTask *)putBucketVersioning:(AWSS3PutBucketVersioningRequest *)request { - (BFTask *)putBucketWebsite:(AWSS3PutBucketWebsiteRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT + HTTPMethod:AWSHTTPMethodPUT URLString:@"/{Bucket}?website" targetPrefix:@"" operationName:@"PutBucketWebsite" @@ -638,8 +636,8 @@ - (BFTask *)putBucketWebsite:(AWSS3PutBucketWebsiteRequest *)request { - (BFTask *)putObject:(AWSS3PutObjectRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodPUT + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"PutObject" outputClass:[AWSS3PutObjectOutput class]]; @@ -647,8 +645,8 @@ - (BFTask *)putObject:(AWSS3PutObjectRequest *)request { - (BFTask *)putObjectAcl:(AWSS3PutObjectAclRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT - URLString:@"/{Bucket}/{Key}?acl" + HTTPMethod:AWSHTTPMethodPUT + URLString:@"/{Bucket}/{Key+}?acl" targetPrefix:@"" operationName:@"PutObjectAcl" outputClass:nil]; @@ -656,8 +654,8 @@ - (BFTask *)putObjectAcl:(AWSS3PutObjectAclRequest *)request { - (BFTask *)replicateObject:(AWSS3ReplicateObjectRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodPUT + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"ReplicateObject" outputClass:[AWSS3ReplicateObjectOutput class]]; @@ -665,8 +663,8 @@ - (BFTask *)replicateObject:(AWSS3ReplicateObjectRequest *)request { - (BFTask *)restoreObject:(AWSS3RestoreObjectRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST - URLString:@"/{Bucket}/{Key}?restore" + HTTPMethod:AWSHTTPMethodPOST + URLString:@"/{Bucket}/{Key+}?restore" targetPrefix:@"" operationName:@"RestoreObject" outputClass:nil]; @@ -674,8 +672,8 @@ - (BFTask *)restoreObject:(AWSS3RestoreObjectRequest *)request { - (BFTask *)uploadPart:(AWSS3UploadPartRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodPUT + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"UploadPart" outputClass:[AWSS3UploadPartOutput class]]; @@ -683,8 +681,8 @@ - (BFTask *)uploadPart:(AWSS3UploadPartRequest *)request { - (BFTask *)uploadPartCopy:(AWSS3UploadPartCopyRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPUT - URLString:@"/{Bucket}/{Key}" + HTTPMethod:AWSHTTPMethodPUT + URLString:@"/{Bucket}/{Key+}" targetPrefix:@"" operationName:@"UploadPartCopy" outputClass:[AWSS3UploadPartCopyOutput class]]; diff --git a/S3/AWSS3Model.h b/S3/AWSS3Model.h index 33b8a008cf7..6eb94bb9a1e 100644 --- a/S3/AWSS3Model.h +++ b/S3/AWSS3Model.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSS3ErrorDomain; @@ -249,6 +249,8 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @class AWSS3ListPartsRequest; @class AWSS3LoggingEnabled; @class AWSS3MultipartUpload; +@class AWSS3NoncurrentVersionExpiration; +@class AWSS3NoncurrentVersionTransition; @class AWSS3NotificationConfiguration; @class AWSS3Object; @class AWSS3ObjectIdentifier; @@ -299,7 +301,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3AccessControlPolicy : AZModel +@interface AWSS3AccessControlPolicy : AWSModel /** @@ -310,7 +312,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Bucket : AZModel +@interface AWSS3Bucket : AWSModel /** @@ -325,19 +327,19 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3BucketLoggingStatus : AZModel +@interface AWSS3BucketLoggingStatus : AWSModel @property (nonatomic, strong) AWSS3LoggingEnabled *loggingEnabled; @end -@interface AWSS3CORSConfiguration : AZModel +@interface AWSS3CORSConfiguration : AWSModel @property (nonatomic, strong) NSArray *CORSRules; @end -@interface AWSS3CORSRule : AZModel +@interface AWSS3CORSRule : AWSModel /** @@ -367,13 +369,13 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3CommonPrefix : AZModel +@interface AWSS3CommonPrefix : AWSModel @property (nonatomic, strong) NSString *prefix; @end -@interface AWSS3CompleteMultipartUploadOutput : AZModel +@interface AWSS3CompleteMultipartUploadOutput : AWSModel @property (nonatomic, strong) NSString *bucket; @@ -410,13 +412,13 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3CompletedMultipartUpload : AZModel +@interface AWSS3CompletedMultipartUpload : AWSModel @property (nonatomic, strong) NSArray *parts; @end -@interface AWSS3CompletedPart : AZModel +@interface AWSS3CompletedPart : AWSModel /** @@ -431,7 +433,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Condition : AZModel +@interface AWSS3Condition : AWSModel /** @@ -446,7 +448,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3CreateBucketConfiguration : AZModel +@interface AWSS3CreateBucketConfiguration : AWSModel /** @@ -456,7 +458,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3CreateBucketOutput : AZModel +@interface AWSS3CreateBucketOutput : AWSModel @property (nonatomic, strong) NSString *location; @@ -499,7 +501,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3CreateMultipartUploadOutput : AZModel +@interface AWSS3CreateMultipartUploadOutput : AWSModel /** @@ -512,6 +514,16 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSString *key; +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -589,6 +601,21 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSDictionary *metadata; +/** + * Specifies the algorithm to use to when encrypting the object (e.g., AES256). + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. + */ +@property (nonatomic, strong) NSString *SSECustomerKey; + +/** + * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -606,7 +633,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Delete : AZModel +@interface AWSS3Delete : AWSModel @property (nonatomic, strong) NSArray *objects; @@ -653,7 +680,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3DeleteMarkerEntry : AZModel +@interface AWSS3DeleteMarkerEntry : AWSModel /** @@ -679,7 +706,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3DeleteObjectOutput : AZModel +@interface AWSS3DeleteObjectOutput : AWSModel /** @@ -711,7 +738,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3DeleteObjectsOutput : AZModel +@interface AWSS3DeleteObjectsOutput : AWSModel @property (nonatomic, strong) NSArray *deleted; @property (nonatomic, strong) NSArray *errors; @@ -730,7 +757,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3DeletedObject : AZModel +@interface AWSS3DeletedObject : AWSModel @property (nonatomic, strong) NSNumber *deleteMarker; @property (nonatomic, strong) NSString *deleteMarkerVersionId; @@ -739,7 +766,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Error : AZModel +@interface AWSS3Error : AWSModel @property (nonatomic, strong) NSString *code; @property (nonatomic, strong) NSString *key; @@ -748,7 +775,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ErrorDocument : AZModel +@interface AWSS3ErrorDocument : AWSModel /** @@ -758,7 +785,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketAclOutput : AZModel +@interface AWSS3GetBucketAclOutput : AWSModel /** @@ -775,7 +802,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketCorsOutput : AZModel +@interface AWSS3GetBucketCorsOutput : AWSModel @property (nonatomic, strong) NSArray *CORSRules; @@ -787,7 +814,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketLifecycleOutput : AZModel +@interface AWSS3GetBucketLifecycleOutput : AWSModel @property (nonatomic, strong) NSArray *rules; @@ -799,7 +826,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketLocationOutput : AZModel +@interface AWSS3GetBucketLocationOutput : AWSModel @property (nonatomic, assign) AWSS3BucketLocationConstraint locationConstraint; @@ -811,7 +838,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketLoggingOutput : AZModel +@interface AWSS3GetBucketLoggingOutput : AWSModel @property (nonatomic, strong) AWSS3LoggingEnabled *loggingEnabled; @@ -823,7 +850,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketNotificationOutput : AZModel +@interface AWSS3GetBucketNotificationOutput : AWSModel @property (nonatomic, strong) AWSS3TopicConfiguration *topicConfiguration; @@ -835,7 +862,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketPolicyOutput : AZModel +@interface AWSS3GetBucketPolicyOutput : AWSModel /** @@ -851,7 +878,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketRequestPaymentOutput : AZModel +@interface AWSS3GetBucketRequestPaymentOutput : AWSModel /** @@ -867,7 +894,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketTaggingOutput : AZModel +@interface AWSS3GetBucketTaggingOutput : AWSModel @property (nonatomic, strong) NSArray *tagSet; @@ -879,7 +906,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketVersioningOutput : AZModel +@interface AWSS3GetBucketVersioningOutput : AWSModel /** @@ -900,7 +927,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetBucketWebsiteOutput : AZModel +@interface AWSS3GetBucketWebsiteOutput : AWSModel @property (nonatomic, strong) AWSS3ErrorDocument *errorDocument; @property (nonatomic, strong) AWSS3IndexDocument *indexDocument; @@ -915,7 +942,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetObjectAclOutput : AZModel +@interface AWSS3GetObjectAclOutput : AWSModel /** @@ -938,7 +965,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetObjectOutput : AZModel +@interface AWSS3GetObjectOutput : AWSModel @property (nonatomic, strong) NSString *acceptRanges; @@ -1017,6 +1044,16 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSString *restore; +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -1094,6 +1131,21 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSDate *responseExpires; +/** + * Specifies the algorithm to use to when encrypting the object (e.g., AES256). + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. + */ +@property (nonatomic, strong) NSString *SSECustomerKey; + +/** + * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * VersionId used to reference a specific version of the object. */ @@ -1101,7 +1153,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3GetObjectTorrentOutput : AZModel +@interface AWSS3GetObjectTorrentOutput : AWSModel @property (nonatomic, strong) id body; @@ -1114,7 +1166,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Grant : AZModel +@interface AWSS3Grant : AWSModel @property (nonatomic, strong) AWSS3Grantee *grantee; @@ -1125,7 +1177,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Grantee : AZModel +@interface AWSS3Grantee : AWSModel /** @@ -1161,7 +1213,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3HeadObjectOutput : AZModel +@interface AWSS3HeadObjectOutput : AWSModel @property (nonatomic, strong) NSString *acceptRanges; @@ -1235,6 +1287,16 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSString *restore; +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -1282,6 +1344,21 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSString *range; +/** + * Specifies the algorithm to use to when encrypting the object (e.g., AES256). + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. + */ +@property (nonatomic, strong) NSString *SSECustomerKey; + +/** + * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * VersionId used to reference a specific version of the object. */ @@ -1289,7 +1366,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3IndexDocument : AZModel +@interface AWSS3IndexDocument : AWSModel /** @@ -1299,7 +1376,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Initiator : AZModel +@interface AWSS3Initiator : AWSModel /** @@ -1314,13 +1391,13 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3LifecycleConfiguration : AZModel +@interface AWSS3LifecycleConfiguration : AWSModel @property (nonatomic, strong) NSArray *rules; @end -@interface AWSS3LifecycleExpiration : AZModel +@interface AWSS3LifecycleExpiration : AWSModel /** @@ -1335,14 +1412,14 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ListBucketsOutput : AZModel +@interface AWSS3ListBucketsOutput : AWSModel @property (nonatomic, strong) NSArray *buckets; @property (nonatomic, strong) AWSS3Owner *owner; @end -@interface AWSS3ListMultipartUploadsOutput : AZModel +@interface AWSS3ListMultipartUploadsOutput : AWSModel /** @@ -1430,7 +1507,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ListObjectVersionsOutput : AZModel +@interface AWSS3ListObjectVersionsOutput : AWSModel @property (nonatomic, strong) NSArray *commonPrefixes; @property (nonatomic, strong) NSArray *deleteMarkers; @@ -1503,7 +1580,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ListObjectsOutput : AZModel +@interface AWSS3ListObjectsOutput : AWSModel @property (nonatomic, strong) NSArray *commonPrefixes; @property (nonatomic, strong) NSArray *contents; @@ -1560,7 +1637,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ListPartsOutput : AZModel +@interface AWSS3ListPartsOutput : AWSModel /** @@ -1634,7 +1711,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3LoggingEnabled : AZModel +@interface AWSS3LoggingEnabled : AWSModel /** @@ -1650,7 +1727,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3MultipartUpload : AZModel +@interface AWSS3MultipartUpload : AWSModel /** @@ -1681,13 +1758,44 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3NotificationConfiguration : AZModel +/** + * Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that Amazon S3 delete noncurrent object versions at a specific period in the object's lifetime. + */ +@interface AWSS3NoncurrentVersionExpiration : AWSModel + + +/** + * Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide. + */ +@property (nonatomic, strong) NSNumber *noncurrentDays; + +@end + +/** + * Container for the transition rule that describes when noncurrent objects transition to the GLACIER storage class. If your bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to the GLACIER storage class at a specific period in the object's lifetime. + */ +@interface AWSS3NoncurrentVersionTransition : AWSModel + + +/** + * Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide. + */ +@property (nonatomic, strong) NSNumber *noncurrentDays; + +/** + * The class of storage used to store the object. + */ +@property (nonatomic, assign) AWSS3TransitionStorageClass storageClass; + +@end + +@interface AWSS3NotificationConfiguration : AWSModel @property (nonatomic, strong) AWSS3TopicConfiguration *topicConfiguration; @end -@interface AWSS3Object : AZModel +@interface AWSS3Object : AWSModel @property (nonatomic, strong) NSString *ETag; @property (nonatomic, strong) NSString *key; @@ -1702,7 +1810,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ObjectIdentifier : AZModel +@interface AWSS3ObjectIdentifier : AWSModel /** @@ -1717,7 +1825,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ObjectVersion : AZModel +@interface AWSS3ObjectVersion : AWSModel @property (nonatomic, strong) NSString *ETag; @@ -1754,14 +1862,14 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Owner : AZModel +@interface AWSS3Owner : AWSModel @property (nonatomic, strong) NSString *displayName; @property (nonatomic, strong) NSString *ID; @end -@interface AWSS3Part : AZModel +@interface AWSS3Part : AWSModel /** @@ -1944,7 +2052,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3PutObjectOutput : AZModel +@interface AWSS3PutObjectOutput : AWSModel /** @@ -1957,6 +2065,16 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSDate *expiration; +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -2041,6 +2159,21 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSDictionary *metadata; +/** + * Specifies the algorithm to use to when encrypting the object (e.g., AES256). + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. + */ +@property (nonatomic, strong) NSString *SSECustomerKey; + +/** + * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -2058,7 +2191,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Redirect : AZModel +@interface AWSS3Redirect : AWSModel /** @@ -2088,7 +2221,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3RedirectAllRequestsTo : AZModel +@interface AWSS3RedirectAllRequestsTo : AWSModel /** @@ -2103,7 +2236,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ReplicateObjectOutput : AZModel +@interface AWSS3ReplicateObjectOutput : AWSModel /** @@ -2113,6 +2246,16 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @property (nonatomic, strong) AWSS3ReplicateObjectResult *replicateObjectResult; @property (nonatomic, strong) NSString *replicateSourceVersionId; +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -2194,6 +2337,24 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @property (nonatomic, strong) NSDate *replicateSourceIfModifiedSince; @property (nonatomic, strong) NSString *replicateSourceIfNoneMatch; @property (nonatomic, strong) NSDate *replicateSourceIfUnmodifiedSince; +@property (nonatomic, strong) NSString *replicateSourceSSECustomerAlgorithm; +@property (nonatomic, strong) NSString *replicateSourceSSECustomerKey; +@property (nonatomic, strong) NSString *replicateSourceSSECustomerKeyMD5; + +/** + * Specifies the algorithm to use to when encrypting the object (e.g., AES256). + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. + */ +@property (nonatomic, strong) NSString *SSECustomerKey; + +/** + * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; /** * The Server-side encryption algorithm used when storing this object in S3. @@ -2212,14 +2373,14 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3ReplicateObjectResult : AZModel +@interface AWSS3ReplicateObjectResult : AWSModel @property (nonatomic, strong) NSString *ETag; @property (nonatomic, strong) NSDate *lastModified; @end -@interface AWSS3ReplicatePartResult : AZModel +@interface AWSS3ReplicatePartResult : AWSModel /** @@ -2234,7 +2395,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3RequestPaymentConfiguration : AZModel +@interface AWSS3RequestPaymentConfiguration : AWSModel /** @@ -2249,10 +2410,11 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @property (nonatomic, strong) NSString *bucket; @property (nonatomic, strong) NSString *key; @property (nonatomic, strong) AWSS3RestoreRequest *restoreRequest; +@property (nonatomic, strong) NSString *versionId; @end -@interface AWSS3RestoreRequest : AZModel +@interface AWSS3RestoreRequest : AWSModel /** @@ -2262,7 +2424,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3RoutingRule : AZModel +@interface AWSS3RoutingRule : AWSModel /** @@ -2277,7 +2439,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Rule : AZModel +@interface AWSS3Rule : AWSModel @property (nonatomic, strong) AWSS3LifecycleExpiration *expiration; @@ -2286,6 +2448,16 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSString *ID; +/** + * Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that Amazon S3 delete noncurrent object versions at a specific period in the object's lifetime. + */ +@property (nonatomic, strong) AWSS3NoncurrentVersionExpiration *noncurrentVersionExpiration; + +/** + * Container for the transition rule that describes when noncurrent objects transition to the GLACIER storage class. If your bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to the GLACIER storage class at a specific period in the object's lifetime. + */ +@property (nonatomic, strong) AWSS3NoncurrentVersionTransition *noncurrentVersionTransition; + /** * Prefix identifying one or more objects to which the rule applies. */ @@ -2299,7 +2471,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Tag : AZModel +@interface AWSS3Tag : AWSModel /** @@ -2314,13 +2486,13 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Tagging : AZModel +@interface AWSS3Tagging : AWSModel @property (nonatomic, strong) NSArray *tagSet; @end -@interface AWSS3TargetGrant : AZModel +@interface AWSS3TargetGrant : AWSModel @property (nonatomic, strong) AWSS3Grantee *grantee; @@ -2331,7 +2503,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3TopicConfiguration : AZModel +@interface AWSS3TopicConfiguration : AWSModel /** @@ -2346,7 +2518,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3Transition : AZModel +@interface AWSS3Transition : AWSModel /** @@ -2366,11 +2538,21 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3UploadPartCopyOutput : AZModel +@interface AWSS3UploadPartCopyOutput : AWSModel @property (nonatomic, strong) AWSS3ReplicatePartResult *replicatePartResult; @property (nonatomic, strong) NSString *replicateSourceVersionId; +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -2393,6 +2575,24 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @property (nonatomic, strong) NSString *replicateSourceIfNoneMatch; @property (nonatomic, strong) NSDate *replicateSourceIfUnmodifiedSince; @property (nonatomic, strong) NSString *replicateSourceRange; +@property (nonatomic, strong) NSString *replicateSourceSSECustomerAlgorithm; +@property (nonatomic, strong) NSString *replicateSourceSSECustomerKey; +@property (nonatomic, strong) NSString *replicateSourceSSECustomerKeyMD5; + +/** + * Specifies the algorithm to use to when encrypting the object (e.g., AES256). + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request. + */ +@property (nonatomic, strong) NSString *SSECustomerKey; + +/** + * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; /** * Upload ID identifying the multipart upload whose part is being copied. @@ -2401,7 +2601,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3UploadPartOutput : AZModel +@interface AWSS3UploadPartOutput : AWSModel /** @@ -2409,6 +2609,16 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSString *ETag; +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used. + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * The Server-side encryption algorithm used when storing this object in S3. */ @@ -2433,6 +2643,21 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { */ @property (nonatomic, strong) NSNumber *partNumber; +/** + * Specifies the algorithm to use to when encrypting the object (e.g., AES256). + */ +@property (nonatomic, strong) NSString *SSECustomerAlgorithm; + +/** + * Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request. + */ +@property (nonatomic, strong) NSString *SSECustomerKey; + +/** + * Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error. + */ +@property (nonatomic, strong) NSString *SSECustomerKeyMD5; + /** * Upload ID identifying the multipart upload whose part is being uploaded. */ @@ -2440,7 +2665,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3VersioningConfiguration : AZModel +@interface AWSS3VersioningConfiguration : AWSModel /** @@ -2455,7 +2680,7 @@ typedef NS_ENUM(NSInteger, AWSS3Type) { @end -@interface AWSS3WebsiteConfiguration : AZModel +@interface AWSS3WebsiteConfiguration : AWSModel @property (nonatomic, strong) AWSS3ErrorDocument *errorDocument; @property (nonatomic, strong) AWSS3IndexDocument *indexDocument; diff --git a/S3/AWSS3Model.m b/S3/AWSS3Model.m index c1e83d7ffaf..de1b999054f 100644 --- a/S3/AWSS3Model.m +++ b/S3/AWSS3Model.m @@ -14,7 +14,7 @@ */ #import "AWSS3Model.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSS3ErrorDomain = @"com.amazonaws.AWSS3ErrorDomain"; @@ -60,9 +60,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)creationDateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -136,9 +136,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)expirationJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -350,6 +350,8 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"bucket" : @"Bucket", @"key" : @"Key", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", @"uploadId" : @"UploadId", }; @@ -392,6 +394,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"grantWriteACP" : @"GrantWriteACP", @"key" : @"Key", @"metadata" : @"Metadata", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKey" : @"SSECustomerKey", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", @"storageClass" : @"StorageClass", @"websiteRedirectLocation" : @"WebsiteRedirectLocation", @@ -442,9 +447,9 @@ + (NSValueTransformer *)ACLJSONTransformer { + (NSValueTransformer *)expiresJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -578,9 +583,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1128,6 +1133,8 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"metadata" : @"Metadata", @"missingMeta" : @"MissingMeta", @"restore" : @"Restore", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", @"versionId" : @"VersionId", @"websiteRedirectLocation" : @"WebsiteRedirectLocation", @@ -1136,25 +1143,25 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)expirationJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)expiresJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1194,31 +1201,34 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"responseContentLanguage" : @"ResponseContentLanguage", @"responseContentType" : @"ResponseContentType", @"responseExpires" : @"ResponseExpires", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKey" : @"SSECustomerKey", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"versionId" : @"VersionId", }; } + (NSValueTransformer *)ifModifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)ifUnmodifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)responseExpiresJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1367,6 +1377,8 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"metadata" : @"Metadata", @"missingMeta" : @"MissingMeta", @"restore" : @"Restore", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", @"versionId" : @"VersionId", @"websiteRedirectLocation" : @"WebsiteRedirectLocation", @@ -1375,25 +1387,25 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)expirationJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)expiresJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1427,23 +1439,26 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"ifUnmodifiedSince" : @"IfUnmodifiedSince", @"key" : @"Key", @"range" : @"Range", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKey" : @"SSECustomerKey", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"versionId" : @"VersionId", }; } + (NSValueTransformer *)ifModifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)ifUnmodifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1495,9 +1510,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)dateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1857,9 +1872,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)initiatedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1895,6 +1910,44 @@ + (NSValueTransformer *)storageClassJSONTransformer { @end +@implementation AWSS3NoncurrentVersionExpiration + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"noncurrentDays" : @"NoncurrentDays", + }; +} + +@end + +@implementation AWSS3NoncurrentVersionTransition + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"noncurrentDays" : @"NoncurrentDays", + @"storageClass" : @"StorageClass", + }; +} + ++ (NSValueTransformer *)storageClassJSONTransformer { + return [MTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { + if ([value isEqualToString:@"GLACIER"]) { + return @(AWSS3TransitionStorageClassGlacier); + } + return @(AWSS3TransitionStorageClassUnknown); + } reverseBlock:^NSString *(NSNumber *value) { + switch ([value integerValue]) { + case AWSS3TransitionStorageClassGlacier: + return @"GLACIER"; + case AWSS3TransitionStorageClassUnknown: + default: + return nil; + } + }]; +} + +@end + @implementation AWSS3NotificationConfiguration + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -1924,9 +1977,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -1991,9 +2044,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2044,9 +2097,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2318,6 +2371,8 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"ETag" : @"ETag", @"expiration" : @"Expiration", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", @"versionId" : @"VersionId", }; @@ -2325,9 +2380,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)expirationJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2371,6 +2426,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"grantWriteACP" : @"GrantWriteACP", @"key" : @"Key", @"metadata" : @"Metadata", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKey" : @"SSECustomerKey", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", @"storageClass" : @"StorageClass", @"websiteRedirectLocation" : @"WebsiteRedirectLocation", @@ -2421,9 +2479,9 @@ + (NSValueTransformer *)ACLJSONTransformer { + (NSValueTransformer *)expiresJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2544,15 +2602,17 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"expiration" : @"Expiration", @"replicateObjectResult" : @"CopyObjectResult", @"replicateSourceVersionId" : @"CopySourceVersionId", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", }; } + (NSValueTransformer *)expirationJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2603,6 +2663,12 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"replicateSourceIfModifiedSince" : @"CopySourceIfModifiedSince", @"replicateSourceIfNoneMatch" : @"CopySourceIfNoneMatch", @"replicateSourceIfUnmodifiedSince" : @"CopySourceIfUnmodifiedSince", + @"replicateSourceSSECustomerAlgorithm" : @"CopySourceSSECustomerAlgorithm", + @"replicateSourceSSECustomerKey" : @"CopySourceSSECustomerKey", + @"replicateSourceSSECustomerKeyMD5" : @"CopySourceSSECustomerKeyMD5", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKey" : @"SSECustomerKey", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", @"storageClass" : @"StorageClass", @"websiteRedirectLocation" : @"WebsiteRedirectLocation", @@ -2653,9 +2719,9 @@ + (NSValueTransformer *)ACLJSONTransformer { + (NSValueTransformer *)expiresJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2683,17 +2749,17 @@ + (NSValueTransformer *)metadataDirectiveJSONTransformer { + (NSValueTransformer *)replicateSourceIfModifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)replicateSourceIfUnmodifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2749,9 +2815,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2768,9 +2834,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)lastModifiedJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -2815,6 +2881,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"bucket" : @"Bucket", @"key" : @"Key", @"restoreRequest" : @"RestoreRequest", + @"versionId" : @"VersionId", }; } @@ -2859,6 +2926,8 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"expiration" : @"Expiration", @"ID" : @"ID", + @"noncurrentVersionExpiration" : @"NoncurrentVersionExpiration", + @"noncurrentVersionTransition" : @"NoncurrentVersionTransition", @"prefix" : @"Prefix", @"status" : @"Status", @"transition" : @"Transition", @@ -2869,6 +2938,14 @@ + (NSValueTransformer *)expirationJSONTransformer { return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSS3LifecycleExpiration class]]; } ++ (NSValueTransformer *)noncurrentVersionExpirationJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSS3NoncurrentVersionExpiration class]]; +} + ++ (NSValueTransformer *)noncurrentVersionTransitionJSONTransformer { + return [NSValueTransformer mtl_JSONDictionaryTransformerWithModelClass:[AWSS3NoncurrentVersionTransition class]]; +} + + (NSValueTransformer *)statusJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { if ([value isEqualToString:@"Enabled"]) { @@ -3004,9 +3081,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)dateJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -3035,6 +3112,8 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"replicatePartResult" : @"CopyPartResult", @"replicateSourceVersionId" : @"CopySourceVersionId", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", }; } @@ -3075,23 +3154,29 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"replicateSourceIfNoneMatch" : @"CopySourceIfNoneMatch", @"replicateSourceIfUnmodifiedSince" : @"CopySourceIfUnmodifiedSince", @"replicateSourceRange" : @"CopySourceRange", + @"replicateSourceSSECustomerAlgorithm" : @"CopySourceSSECustomerAlgorithm", + @"replicateSourceSSECustomerKey" : @"CopySourceSSECustomerKey", + @"replicateSourceSSECustomerKeyMD5" : @"CopySourceSSECustomerKeyMD5", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKey" : @"SSECustomerKey", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"uploadId" : @"UploadId", }; } + (NSValueTransformer *)replicateSourceIfModifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } + (NSValueTransformer *)replicateSourceIfUnmodifiedSinceJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -3102,6 +3187,8 @@ @implementation AWSS3UploadPartOutput + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"ETag" : @"ETag", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"serverSideEncryption" : @"ServerSideEncryption", }; } @@ -3135,6 +3222,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { @"contentMD5" : @"ContentMD5", @"key" : @"Key", @"partNumber" : @"PartNumber", + @"SSECustomerAlgorithm" : @"SSECustomerAlgorithm", + @"SSECustomerKey" : @"SSECustomerKey", + @"SSECustomerKeyMD5" : @"SSECustomerKeyMD5", @"uploadId" : @"UploadId", }; } diff --git a/S3/AWSS3TransferManager.h b/S3/AWSS3TransferManager.h index 5ca6db81d3f..172730987c7 100644 --- a/S3/AWSS3TransferManager.h +++ b/S3/AWSS3TransferManager.h @@ -22,6 +22,9 @@ typedef NS_ENUM(NSInteger, AWSS3TransferManagerErrorType) { AWSS3TransferManagerErrorCancelled, AWSS3TransferManagerErrorPaused, AWSS3TransferManagerErrorCompleted, + AWSS3TransferManagerErrorInternalInConsistency, + AWSS3TransferManagerErrorMissingRequiredParameters, + AWSS3TransferManagerErrorInvalidParameters, }; typedef NS_ENUM(NSInteger, AWSS3TransferManagerRequestState) { @@ -45,11 +48,18 @@ typedef void (^AWSS3TransferManagerResumeAllBlock) (AWSRequest *request); */ @interface AWSS3TransferManager : AWSService -@property (nonatomic, strong, readonly) AWSS3 *s3; - + (instancetype)defaultS3TransferManager; -- (instancetype)initWithS3:(AWSS3 *)s3; +/** + * Returns an instance of this service client using `configuration` and `identifier`. + * + * @param configuration An object to configure the internal `AWSS3`. At least `regionType` and `credentialsProvider` need to be set. + * @param identifier An unique identifier for AWSS3TransferManager to create a disk cache. Multiple instances with the same identifier are allowed and can safely access the same data on disk. + * + * @return An instance of this service client. + */ +- (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration + identifier:(NSString *)identifier; /** * Schedules a new transfer to upload data to Amazon S3. @@ -99,6 +109,18 @@ typedef void (^AWSS3TransferManagerResumeAllBlock) (AWSRequest *request); */ - (BFTask *)clearCache; + +/** + * The limit of the disk cache size in bytes. When exceeded, older requests will be discarded. Setting this value to 0.0 meaning no practical limit. The default value is 5MB. + */ +@property (nonatomic, assign) NSUInteger diskByteLimit; + +/** + * The age limit of the cached requests. When exceeded, requests older than the specified age will be discarded. Setting this value to 0 meaning no practical limit. The default is no age limit(i.e. 0.0). + */ +@property (nonatomic, assign) NSTimeInterval diskAgeLimit; + + @end @interface AWSS3TransferManagerUploadRequest : AWSS3PutObjectRequest diff --git a/S3/AWSS3TransferManager.m b/S3/AWSS3TransferManager.m index ff13d0e63a6..fcea0a48de5 100644 --- a/S3/AWSS3TransferManager.m +++ b/S3/AWSS3TransferManager.m @@ -17,8 +17,8 @@ #import "AWSS3.h" #import "Bolts.h" #import "TMCache.h" -#import "AZCategory.h" -#import "AZLogging.h" +#import "AWSCategory.h" +#import "AWSLogging.h" NSUInteger const AWSS3TransferManagerMinimumPartSize = 5 * 1024 * 1024; // 5MB NSString *const AWSS3TransferManagerCacheName = @"com.amazonaws.AWSS3TransferManager.CacheName"; @@ -60,25 +60,35 @@ + (instancetype)defaultS3TransferManager { if (![AWSServiceManager defaultServiceManager].defaultServiceConfiguration) { return nil; } - + static AWSS3TransferManager *_defaultS3TransferManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - AWSS3 *s3 = [[AWSS3 alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager].defaultServiceConfiguration]; - _defaultS3TransferManager = [[AWSS3TransferManager alloc] initWithS3:s3]; + _defaultS3TransferManager = [[AWSS3TransferManager alloc] initWithConfiguration:[AWSServiceManager defaultServiceManager].defaultServiceConfiguration + cacheName:AWSS3TransferManagerCacheName]; }); - + return _defaultS3TransferManager; } -- (instancetype)initWithS3:(AWSS3 *)s3 { +- (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration + identifier:(NSString *)identifier { + if (self = [self initWithConfiguration:configuration + cacheName:[NSString stringWithFormat:@"%@.%@", AWSS3TransferManagerCacheName, identifier]]) { + } + + return self; +} + +- (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration + cacheName:(NSString *)cacheName { if (self = [super init]) { - _s3 = s3; - _cache = [[TMCache alloc] initWithName:AWSS3TransferManagerCacheName]; + _s3 = [[AWSS3 alloc] initWithConfiguration:configuration]; + _cache = [[TMCache alloc] initWithName:cacheName + rootPath:[NSTemporaryDirectory() stringByAppendingPathComponent:AWSS3TransferManagerCacheName]]; _cache.diskCache.byteLimit = AWSS3TransferManagerByteLimitDefault; _cache.diskCache.ageLimit = AWSS3TransferManagerAgeLimitDefault; } - return self; } @@ -90,12 +100,30 @@ - (BFTask *)upload:(AWSS3TransferManagerUploadRequest *)uploadRequest { cacheKey = [[NSProcessInfo processInfo] globallyUniqueString]; [uploadRequest setValue:cacheKey forKey:@"cacheIdentifier"]; } - + return [self upload:uploadRequest cacheKey:cacheKey]; } - (BFTask *)upload:(AWSS3TransferManagerUploadRequest *)uploadRequest cacheKey:(NSString *)cacheKey { + //validate input + if ([uploadRequest.bucket length] == 0) { + NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"'bucket' name can not be empty", nil)}; + return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorMissingRequiredParameters userInfo:userInfo]]; + } + if ([uploadRequest.key length] == 0) { + NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"'key' name can not be empty", nil)}; + return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorMissingRequiredParameters userInfo:userInfo]]; + } + if (uploadRequest.body == nil) { + NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"'body' can not be nil", nil)}; + return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorMissingRequiredParameters userInfo:userInfo]]; + + } else if ([uploadRequest.body isKindOfClass:[NSURL class]] == NO) { + NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Invalid 'body' Type, must be an instance of NSURL Class", nil)}; + return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorInvalidParameters userInfo:userInfo]]; + } + //Check if the task has already completed if (uploadRequest.state == AWSS3TransferManagerRequestStateCompleted) { NSDictionary *userInfo = @{NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedString(@"can not continue to upload a completed task", nil)]}; @@ -107,16 +135,16 @@ - (BFTask *)upload:(AWSS3TransferManagerUploadRequest *)uploadRequest //change state to running [uploadRequest setValue:[NSNumber numberWithInteger:AWSS3TransferManagerRequestStateRunning] forKey:@"state"]; } - + NSError *error = nil; NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[[uploadRequest.body path] stringByResolvingSymlinksInPath] error:&error]; if (error) { return [BFTask taskWithError:error]; } - + unsigned long long fileSize = [attributes fileSize]; - + BFTask *task = [BFTask taskWithResult:nil]; task = [[[task continueWithSuccessBlock:^id(BFTask *task) { [self.cache setObject:uploadRequest @@ -148,7 +176,7 @@ - (BFTask *)upload:(AWSS3TransferManagerUploadRequest *)uploadRequest return [BFTask taskWithResult:task.result]; } }]; - + return task; } @@ -157,27 +185,27 @@ - (BFTask *)putObject:(AWSS3TransferManagerUploadRequest *)uploadRequest cacheKey:(NSString *)cacheKey { uploadRequest.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize]; AWSS3PutObjectRequest *putObjectRequest = [AWSS3PutObjectRequest new]; - [putObjectRequest az_copyPropertiesFromObject:uploadRequest]; - + [putObjectRequest aws_copyPropertiesFromObject:uploadRequest]; + BFTask *uploadTask = [[self.s3 putObject:putObjectRequest] continueWithBlock:^id(BFTask *task) { //delete cached Object if state is not Paused if (uploadRequest.state != AWSS3TransferManagerRequestStatePaused) { - [self.cache removeObjectForKey:cacheKey]; + [self removeObjectForKey:cacheKey removeTempFile:YES]; } if (task.error) { return [BFTask taskWithError:task.error]; } - + AWSS3TransferManagerUploadOutput *uploadOutput = [AWSS3TransferManagerUploadOutput new]; if (task.result) { AWSS3PutObjectOutput *putObjectOutput = task.result; - [uploadOutput az_copyPropertiesFromObject:putObjectOutput]; + [uploadOutput aws_copyPropertiesFromObject:putObjectOutput]; } - + return uploadOutput; }]; - + return uploadTask; } @@ -185,46 +213,46 @@ - (BFTask *)multipartUpload:(AWSS3TransferManagerUploadRequest *)uploadRequest fileSize:(unsigned long long) fileSize cacheKey:(NSString *)cacheKey { NSUInteger partCount = ceil((double)fileSize / AWSS3TransferManagerMinimumPartSize); - + BFTask *initRequest = nil; - + //if it is a new request, Init multipart upload request if ([[uploadRequest valueForKey:@"pausedPartCount"] integerValue] == 0) { AWSS3CreateMultipartUploadRequest *createMultipartUploadRequest = [AWSS3CreateMultipartUploadRequest new]; - [createMultipartUploadRequest az_copyPropertiesFromObject:uploadRequest]; - [createMultipartUploadRequest setValue:[AZNetworkingRequest new] forKey:@"internalRequest"]; //recreate a new internalRequest + [createMultipartUploadRequest aws_copyPropertiesFromObject:uploadRequest]; + [createMultipartUploadRequest setValue:[AWSNetworkingRequest new] forKey:@"internalRequest"]; //recreate a new internalRequest initRequest = [self.s3 createMultipartUpload:createMultipartUploadRequest]; [uploadRequest setValue:[NSMutableArray arrayWithCapacity:partCount] forKey:@"completedPartsArray"]; } else { //if it is a paused request, skip initMultipart Upload request. initRequest = [BFTask taskWithResult:nil]; } - + AWSS3CompleteMultipartUploadRequest *completeMultipartUploadRequest = [AWSS3CompleteMultipartUploadRequest new]; - [completeMultipartUploadRequest az_copyPropertiesFromObject:uploadRequest]; - [completeMultipartUploadRequest setValue:[AZNetworkingRequest new] forKey:@"internalRequest"]; //recreate a new internalRequest - + [completeMultipartUploadRequest aws_copyPropertiesFromObject:uploadRequest]; + [completeMultipartUploadRequest setValue:[AWSNetworkingRequest new] forKey:@"internalRequest"]; //recreate a new internalRequest + BFTask *uploadTask = [[[initRequest continueWithSuccessBlock:^id(BFTask *task) { AWSS3CreateMultipartUploadOutput *output = task.result; - + if (output.uploadId) { completeMultipartUploadRequest.uploadId = output.uploadId; uploadRequest.uploadId = output.uploadId; //pass uploadId to the request for reference. } else { completeMultipartUploadRequest.uploadId = uploadRequest.uploadId; } - + BFTask *uploadPartsTask = [BFTask taskWithResult:nil]; NSInteger c = [[uploadRequest valueForKey:@"pausedPartCount"] integerValue]; if (c == 0) { c = 1; } - + __block int64_t multiplePartsTotalBytesSent = 0; for (NSInteger i = c; i < partCount + 1; i++) { uploadPartsTask = [uploadPartsTask continueWithSuccessBlock:^id(BFTask *task) { - + //Cancel this task if state is canceling if (uploadRequest.state == AWSS3TransferManagerRequestStateCanceling) { //return a error task @@ -235,14 +263,14 @@ - (BFTask *)multipartUpload:(AWSS3TransferManagerUploadRequest *)uploadRequest if (uploadRequest.state == AWSS3TransferManagerRequestStatePaused) { //Save the current partCount number [uploadRequest setValue:[NSNumber numberWithInteger:i] forKey:@"pausedPartCount"]; - + //return an error task NSDictionary *userInfo = @{NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedString(@"S3 MultipartUpload has been paused.", nil)]}; return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorPaused userInfo:userInfo]]; } - + NSUInteger dataLength = i == partCount ? (NSUInteger)fileSize - ((i - 1) * AWSS3TransferManagerMinimumPartSize) : AWSS3TransferManagerMinimumPartSize; - + NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:[uploadRequest.body path]]; [fileHandle seekToFileOffset:(i - 1) * AWSS3TransferManagerMinimumPartSize]; NSData *partData = [fileHandle readDataOfLength:dataLength]; @@ -250,7 +278,7 @@ - (BFTask *)multipartUpload:(AWSS3TransferManagerUploadRequest *)uploadRequest [partData writeToURL:tempURL atomically:YES]; partData = nil; [fileHandle closeFile]; - + AWSS3UploadPartRequest *uploadPartRequest = [AWSS3UploadPartRequest new]; uploadPartRequest.bucket = uploadRequest.bucket; uploadPartRequest.key = uploadRequest.key; @@ -263,8 +291,8 @@ - (BFTask *)multipartUpload:(AWSS3TransferManagerUploadRequest *)uploadRequest //reprocess the progressFeed received from s3 client uploadPartRequest.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { - - AZNetworkingRequest *internalRequest = [uploadRequest valueForKey:@"internalRequest"]; + + AWSNetworkingRequest *internalRequest = [uploadRequest valueForKey:@"internalRequest"]; if (internalRequest.uploadProgress) { int64_t previousSentDataLengh = [[uploadRequest valueForKey:@"totalSuccessfullySentPartsDataLength"] longLongValue]; if (multiplePartsTotalBytesSent == 0) { @@ -277,14 +305,14 @@ - (BFTask *)multipartUpload:(AWSS3TransferManagerUploadRequest *)uploadRequest } } }; - + return [[[self.s3 uploadPart:uploadPartRequest] continueWithSuccessBlock:^id(BFTask *task) { AWSS3UploadPartOutput *partOuput = task.result; - + AWSS3CompletedPart *completedPart = [AWSS3CompletedPart new]; completedPart.partNumber = @(i); completedPart.ETag = partOuput.ETag; - + NSMutableArray *completedParts = [uploadRequest valueForKey:@"completedPartsArray"]; [completedParts addObject:completedPart]; @@ -292,42 +320,42 @@ - (BFTask *)multipartUpload:(AWSS3TransferManagerUploadRequest *)uploadRequest totalSentLenght += dataLength; [uploadRequest setValue:@(totalSentLenght) forKey:@"totalSuccessfullySentPartsDataLength"]; - + return nil; }] continueWithBlock:^id(BFTask *task) { NSError *error = nil; [[NSFileManager defaultManager] removeItemAtURL:tempURL error:&error]; if (error) { - AZLogError(@"Failed to delete a temporary file for part upload: [%@]", error); + AWSLogError(@"Failed to delete a temporary file for part upload: [%@]", error); } return nil; }]; }]; } - + return uploadPartsTask; }] continueWithSuccessBlock:^id(BFTask *task) { //If all parts upload succeed, send completeMultipartUpload request NSMutableArray *completedParts = [uploadRequest valueForKey:@"completedPartsArray"]; if ([completedParts count] != partCount) { - NSDictionary *userInfo = @{NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedString(@"All elements of completedParts must be an instance of AWSS3CompletedPart.", nil)]}; + NSDictionary *userInfo = @{NSLocalizedDescriptionKey:[NSString stringWithFormat:@"completedParts count is not equal to totalPartCount. expect %lu but got %lu",(unsigned long)partCount,(unsigned long)[completedParts count]]}; return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorUnknown userInfo:userInfo]]; } - + AWSS3CompletedMultipartUpload *completedMultipartUpload = [AWSS3CompletedMultipartUpload new]; completedMultipartUpload.parts = completedParts; completeMultipartUploadRequest.multipartUpload = completedMultipartUpload; - + return [self.s3 completeMultipartUpload:completeMultipartUploadRequest]; }] continueWithBlock:^id(BFTask *task) { //delete cached Object if state is not Paused if (uploadRequest.state != AWSS3TransferManagerRequestStatePaused) { - [self.cache removeObjectForKey:cacheKey]; + [self removeObjectForKey:cacheKey removeTempFile:YES]; } if (uploadRequest.state == AWSS3TransferManagerRequestStateCanceling) { @@ -337,16 +365,16 @@ - (BFTask *)multipartUpload:(AWSS3TransferManagerUploadRequest *)uploadRequest if (task.error) { return [BFTask taskWithError:task.error]; } - + AWSS3TransferManagerUploadOutput *uploadOutput = [AWSS3TransferManagerUploadOutput new]; if (task.result) { AWSS3CompleteMultipartUploadOutput *completeMultipartUploadOutput = task.result; - [uploadOutput az_copyPropertiesFromObject:completeMultipartUploadOutput]; + [uploadOutput aws_copyPropertiesFromObject:completeMultipartUploadOutput]; } - + return uploadOutput; }]; - + return uploadTask; } @@ -358,12 +386,24 @@ - (BFTask *)download:(AWSS3TransferManagerDownloadRequest *)downloadRequest { cacheKey = [[NSProcessInfo processInfo] globallyUniqueString]; [downloadRequest setValue:cacheKey forKey:@"cacheIdentifier"]; } - + return [self download:downloadRequest cacheKey:cacheKey]; } - (BFTask *)download:(AWSS3TransferManagerDownloadRequest *)downloadRequest cacheKey:(NSString *)cacheKey { + + //validate input + if ([downloadRequest.bucket length] == 0) { + NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"'bucket' name can not be empty", nil)}; + return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorMissingRequiredParameters userInfo:userInfo]]; + } + if ([downloadRequest.key length] == 0) { + NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"'key' name can not be empty", nil)}; + return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorMissingRequiredParameters userInfo:userInfo]]; + } + + //Check if the task has already completed if (downloadRequest.state == AWSS3TransferManagerRequestStateCompleted) { NSDictionary *userInfo = @{NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedString(@"can not continue to download a completed task", nil)]}; @@ -375,16 +415,46 @@ - (BFTask *)download:(AWSS3TransferManagerDownloadRequest *)downloadRequest //change state to running [downloadRequest setValue:[NSNumber numberWithInteger:AWSS3TransferManagerRequestStateRunning] forKey:@"state"]; } - + //Generate a new tempFileURL if it is a new request.∫ if ([downloadRequest valueForKey:@"temporaryFileURL"] == nil) { + + //If downloadFileURL is nil, create a URL in temporary folder for user. + if (downloadRequest.downloadingFileURL == nil) { + NSString *adjustedKeyName = [[downloadRequest.key componentsSeparatedByString:@"/"] lastObject]; + NSString *generatedfileName = adjustedKeyName; + + + //check if the file already exists, if yes, create another fileName; + NSUInteger suffixCount = 2; + while ([[NSFileManager defaultManager] fileExistsAtPath:[NSTemporaryDirectory() stringByAppendingPathComponent:generatedfileName]]) { + NSMutableArray *components = [[adjustedKeyName componentsSeparatedByString:@"."] mutableCopy]; + if ([components count] == 1) { + generatedfileName = [NSString stringWithFormat:@"%@ (%lu)",adjustedKeyName,(unsigned long)suffixCount]; + } else if ([components count] >= 2) { + NSString *modifiedFileName = [NSString stringWithFormat:@"%@ (%lu)",[components objectAtIndex:[components count]-2],(unsigned long)suffixCount]; + [components replaceObjectAtIndex:[components count]-2 withObject:modifiedFileName]; + generatedfileName = [components componentsJoinedByString:@"."]; + + } else { + AWSLogError(@"[generatedPath componentsSeparatedByString] returns empty array or nil, generatedfileName:%@",generatedfileName); + NSString *errorString = [NSString stringWithFormat:@"[generatedPath componentsSeparatedByString] returns empty array or nil, generatedfileName:%@",generatedfileName]; + NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(errorString, nil)}; + return [BFTask taskWithError:[NSError errorWithDomain:AWSS3TransferManagerErrorDomain code:AWSS3TransferManagerErrorInternalInConsistency userInfo:userInfo]]; + } + suffixCount++; + } + + downloadRequest.downloadingFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:generatedfileName]]; + } + //create a tempFileURL NSString *tempFileName = [[downloadRequest.downloadingFileURL lastPathComponent] stringByAppendingString:cacheKey]; NSURL *tempFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:tempFileName]]; - + //save current downloadFileURL [downloadRequest setValue:downloadRequest.downloadingFileURL forKey:@"originalFileURL"]; - + //save the tempFileURL [downloadRequest setValue:tempFileURL forKey:@"temporaryFileURL"]; //set the downloadURL to use this tempURL instead. @@ -394,25 +464,25 @@ - (BFTask *)download:(AWSS3TransferManagerDownloadRequest *)downloadRequest NSURL *tempFileURL = [downloadRequest valueForKey:@"temporaryFileURL"]; if (tempFileURL) { if ([[NSFileManager defaultManager] fileExistsAtPath:tempFileURL.path] == NO) { - AZLogError(@"tempfile is not exist, unable to resume"); + AWSLogError(@"tempfile is not exist, unable to resume"); } NSError *error = nil; NSString *tempFilePath = tempFileURL.path; NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[tempFilePath stringByResolvingSymlinksInPath] error:&error]; if (error) { - AZLogError(@"Unable to resume download task: Failed to retrival tempFileURL. [%@]",error); + AWSLogError(@"Unable to resume download task: Failed to retrival tempFileURL. [%@]",error); } unsigned long long fileSize = [attributes fileSize]; downloadRequest.range = [NSString stringWithFormat:@"bytes=%llu-",fileSize]; - + } } - + //set shouldWriteDirectly to YES [downloadRequest setValue:@YES forKey:@"shouldWriteDirectly"]; - - //TODO: need to consider the case that user may or may not provided a downloadURL. + + BFTask *task = [BFTask taskWithResult:nil]; task = [[task continueWithSuccessBlock:^id(BFTask *task) { [self.cache setObject:downloadRequest forKey:cacheKey]; @@ -420,34 +490,32 @@ - (BFTask *)download:(AWSS3TransferManagerDownloadRequest *)downloadRequest }] continueWithSuccessBlock:^id(BFTask *task) { return [self getObject:downloadRequest cacheKey:cacheKey]; }]; - + return task; } - (BFTask *)getObject:(AWSS3TransferManagerDownloadRequest *)downloadRequest cacheKey:(NSString *)cacheKey { AWSS3GetObjectRequest *getObjectRequest = [AWSS3GetObjectRequest new]; - [getObjectRequest az_copyPropertiesFromObject:downloadRequest]; - + [getObjectRequest aws_copyPropertiesFromObject:downloadRequest]; + BFTask *downloadTask = [[[self.s3 getObject:getObjectRequest] continueWithBlock:^id(BFTask *task) { - - //delete cached Object if state is not Paused - if (downloadRequest.state != AWSS3TransferManagerRequestStatePaused) { - [self.cache removeObjectForKey:cacheKey]; - } - NSURL *tempFileURL = [downloadRequest valueForKey:@"temporaryFileURL"]; NSURL *originalFileURL = [downloadRequest valueForKey:@"originalFileURL"]; - + if (task.error) { //download got error, check if tempFile has been created. if ([[NSFileManager defaultManager] fileExistsAtPath:tempFileURL.path]) { - AZLogDebug(@"tempFile has not been created yet."); + AWSLogDebug(@"tempFile has not been created yet."); } - + + if (downloadRequest.state != AWSS3TransferManagerRequestStatePaused) { + [self removeObjectForKey:cacheKey removeTempFile:YES]; + } + return [BFTask taskWithError:task.error]; } - + //If task complete without error, move the completed file to originalFileURL if (tempFileURL && originalFileURL) { NSError *error = nil; @@ -459,20 +527,25 @@ - (BFTask *)getObject:(AWSS3TransferManagerDownloadRequest *)downloadRequest return [BFTask taskWithError:error]; } } - + + //delete cached Object if state is not Paused + if (downloadRequest.state != AWSS3TransferManagerRequestStatePaused) { + [self removeObjectForKey:cacheKey removeTempFile:YES]; + } + AWSS3TransferManagerDownloadOutput *downloadOutput = [AWSS3TransferManagerDownloadOutput new]; if (task.result) { AWSS3GetObjectOutput *getObjectOutput = task.result; - + //set the body to originalFileURL getObjectOutput.body = [downloadRequest valueForKey:@"originalFileURL"]; - - [downloadOutput az_copyPropertiesFromObject:getObjectOutput]; + + [downloadOutput aws_copyPropertiesFromObject:getObjectOutput]; } [downloadRequest setValue:[NSNumber numberWithInteger:AWSS3TransferManagerRequestStateCompleted] forKey:@"state"]; return downloadOutput; - + }] continueWithBlock:^id(BFTask *task) { if (task.error) { if ([task.error.domain isEqualToString:NSURLErrorDomain] @@ -494,7 +567,7 @@ - (BFTask *)getObject:(AWSS3TransferManagerDownloadRequest *)downloadRequest return [BFTask taskWithResult:task.result]; } }]; - + return downloadTask; } @@ -503,7 +576,7 @@ - (BFTask *)cancelAll { [self.cache.diskCache enumerateObjectsWithBlock:^(TMDiskCache *cache, NSString *key, id object, NSURL *fileURL) { [keys addObject:key]; }]; - + NSMutableArray *tasks = [NSMutableArray new]; for (NSString *key in keys) { AWSRequest *cachedObject = [self.cache objectForKey:key]; @@ -512,7 +585,7 @@ - (BFTask *)cancelAll { [tasks addObject:[cachedObject cancel]]; } } - + return [BFTask taskForCompletionOfAllTasks:tasks]; } @@ -521,7 +594,7 @@ - (BFTask *)pauseAll { [self.cache.diskCache enumerateObjectsWithBlock:^(TMDiskCache *cache, NSString *key, id object, NSURL *fileURL) { [keys addObject:key]; }]; - + NSMutableArray *tasks = [NSMutableArray new]; for (NSString *key in keys) { AWSRequest *cachedObject = [self.cache objectForKey:key]; @@ -530,7 +603,7 @@ - (BFTask *)pauseAll { [tasks addObject:[cachedObject pause]]; } } - + return [BFTask taskForCompletionOfAllTasks:tasks]; } @@ -539,7 +612,7 @@ - (BFTask *)resumeAll:(AWSS3TransferManagerResumeAllBlock)block { [self.cache.diskCache enumerateObjectsWithBlock:^(TMDiskCache *cache, NSString *key, id object, NSURL *fileURL) { [keys addObject:key]; }]; - + NSMutableArray *tasks = [NSMutableArray new]; NSMutableArray *results = [NSMutableArray new]; for (NSString *key in keys) { @@ -549,7 +622,7 @@ - (BFTask *)resumeAll:(AWSS3TransferManagerResumeAllBlock)block { block(cachedObject); } } - + if ([cachedObject isKindOfClass:[AWSS3TransferManagerUploadRequest class]]) { [tasks addObject:[[self upload:cachedObject cacheKey:key] continueWithSuccessBlock:^id(BFTask *task) { [results addObject:task.result]; @@ -564,9 +637,9 @@ - (BFTask *)resumeAll:(AWSS3TransferManagerResumeAllBlock)block { } //remove Resumed Object - [self.cache removeObjectForKey:key]; + [self removeObjectForKey:key removeTempFile:NO]; } - + return [[BFTask taskForCompletionOfAllTasks:tasks] continueWithBlock:^id(BFTask *task) { if (task.error) { return [BFTask taskWithError:task.error]; @@ -578,24 +651,69 @@ - (BFTask *)resumeAll:(AWSS3TransferManagerResumeAllBlock)block { - (BFTask *)clearCache { BFTaskCompletionSource *taskCompletionSource = [BFTaskCompletionSource new]; - [self.cache removeAllObjects:^(TMCache *cache) { - taskCompletionSource.result = nil; - }]; + __block NSMutableArray* allKeys = [NSMutableArray new]; + TMDiskCacheObjectBlock iterateObjectBlock = ^(TMDiskCache *cache, NSString *key, id object, NSURL *fileURL){ + [allKeys addObject:key]; + }; + [self.cache.diskCache enumerateObjectsWithBlock:iterateObjectBlock]; + + for(id key in allKeys){ + [self removeObjectForKey:key removeTempFile:YES]; + } + return taskCompletionSource.task; } +- (void)setDiskByteLimit:(NSUInteger)limit { + [self.cache.diskCache setByteLimit:limit]; +} + +- (void)setDiskAgeLimit:(NSTimeInterval)limit { + [self.cache.diskCache setAgeLimit:limit]; +} + +-(void) removeObjectForKey:(NSString *)key removeTempFile:(BOOL)flag { + TMDiskCacheObjectBlock willDeleteObjectBlock = ^(TMDiskCache *cache, NSString *key, id object, NSURL *fileURL){ + id theObject = nil; + if ([[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) { + theObject = [NSKeyedUnarchiver unarchiveObjectWithFile:[fileURL path]]; + } + id deleteObject = theObject; + if(deleteObject!=nil && [deleteObject isKindOfClass:[ AWSS3TransferManagerDownloadRequest class]]){ + NSURL *tempFileURL = [deleteObject valueForKey:@"temporaryFileURL"]; + if(tempFileURL){ + NSError *error = nil; + if(tempFileURL != nil && [[NSFileManager defaultManager] fileExistsAtPath:[tempFileURL path]]){ + [[NSFileManager defaultManager] removeItemAtPath: [tempFileURL path] error: &error]; + } + } + } + }; + + if(flag){ + [self.cache.diskCache setWillRemoveObjectBlock: willDeleteObjectBlock]; + } + else{ + [self.cache.diskCache setWillRemoveObjectBlock: nil]; + } + + [self.cache removeObjectForKey:key]; +} + + + - (void)abortMultipartUploadsForRequest:(AWSS3TransferManagerUploadRequest *)uploadRequest{ AWSS3AbortMultipartUploadRequest *abortMultipartUploadRequest = [AWSS3AbortMultipartUploadRequest new]; abortMultipartUploadRequest.bucket = uploadRequest.bucket; abortMultipartUploadRequest.key = uploadRequest.key; abortMultipartUploadRequest.uploadId = uploadRequest.uploadId; - + [[self.s3 abortMultipartUpload:abortMultipartUploadRequest] continueWithBlock:^id(BFTask *task) { if (task.error) { - AZLogDebug(@"Received response for abortMultipartUpload with Error:%@",task.error); + AWSLogDebug(@"Received response for abortMultipartUpload with Error:%@",task.error); } else { - AZLogDebug(@"Received response for abortMultipartUpload."); + AWSLogDebug(@"Received response for abortMultipartUpload."); } return nil; }]; @@ -608,7 +726,7 @@ @implementation AWSS3TransferManagerUploadRequest - (BFTask *)cancel { if (self.state != AWSS3TransferManagerRequestStateCompleted) { self.state = AWSS3TransferManagerRequestStateCanceling; - + NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[[self.body path] stringByResolvingSymlinksInPath] error:nil]; unsigned long long fileSize = [attributes fileSize]; @@ -649,7 +767,7 @@ - (BFTask *)pause { //otherwise, pause the current task. (cancel without set isCancelled flag) [super pause]; } - + return [BFTask taskWithResult:nil]; } break; diff --git a/S3/Resources/s3-2006-03-01.json b/S3/Resources/s3-2006-03-01.json index f79fe23c49c..7ca350e8f81 100644 --- a/S3/Resources/s3-2006-03-01.json +++ b/S3/Resources/s3-2006-03-01.json @@ -15,7 +15,7 @@ "name":"AbortMultipartUpload", "http":{ "method":"DELETE", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"AbortMultipartUploadRequest"}, "errors":[ @@ -25,14 +25,14 @@ "documentation":"The specified multipart upload does not exist." } ], - "documentation":"

Aborts a multipart upload.

\n

To verify that all parts have been removed, so you don't get charged for the part storage, you should call the List Parts operation and ensure the parts list is empty.

", + "documentation":"

Aborts a multipart upload.

To verify that all parts have been removed, so you don't get charged for the part storage, you should call the List Parts operation and ensure the parts list is empty.

", "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadAbort.html" }, "CompleteMultipartUpload":{ "name":"CompleteMultipartUpload", "http":{ "method":"POST", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"CompleteMultipartUploadRequest"}, "output":{"shape":"CompleteMultipartUploadOutput"}, @@ -43,7 +43,7 @@ "name":"CopyObject", "http":{ "method":"PUT", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"CopyObjectRequest"}, "output":{"shape":"CopyObjectOutput"}, @@ -81,11 +81,11 @@ "name":"CreateMultipartUpload", "http":{ "method":"POST", - "requestUri":"/{Bucket}/{Key}?uploads" + "requestUri":"/{Bucket}/{Key+}?uploads" }, "input":{"shape":"CreateMultipartUploadRequest"}, "output":{"shape":"CreateMultipartUploadOutput"}, - "documentation":"

Initiates a multipart upload and returns an upload ID.

\n

Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

", + "documentation":"

Initiates a multipart upload and returns an upload ID.

Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

", "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html", "alias":"InitiateMultipartUpload" }, @@ -153,7 +153,7 @@ "name":"DeleteObject", "http":{ "method":"DELETE", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"DeleteObjectRequest"}, "output":{"shape":"DeleteObjectOutput"}, @@ -297,7 +297,7 @@ "name":"GetObject", "http":{ "method":"GET", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"GetObjectRequest"}, "output":{"shape":"GetObjectOutput"}, @@ -315,7 +315,7 @@ "name":"GetObjectAcl", "http":{ "method":"GET", - "requestUri":"/{Bucket}/{Key}?acl" + "requestUri":"/{Bucket}/{Key+}?acl" }, "input":{"shape":"GetObjectAclRequest"}, "output":{"shape":"GetObjectAclOutput"}, @@ -333,7 +333,7 @@ "name":"GetObjectTorrent", "http":{ "method":"GET", - "requestUri":"/{Bucket}/{Key}?torrent" + "requestUri":"/{Bucket}/{Key+}?torrent" }, "input":{"shape":"GetObjectTorrentRequest"}, "output":{"shape":"GetObjectTorrentOutput"}, @@ -361,7 +361,7 @@ "name":"HeadObject", "http":{ "method":"HEAD", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"HeadObjectRequest"}, "output":{"shape":"HeadObjectOutput"}, @@ -432,7 +432,7 @@ "name":"ListParts", "http":{ "method":"GET", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"ListPartsRequest"}, "output":{"shape":"ListPartsOutput"}, @@ -495,11 +495,7 @@ "method":"PUT", "requestUri":"/{Bucket}?policy" }, - "input":{ - "shape":"PutBucketPolicyRequest", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", - "locationName":"PutBucketPolicyRequest" - }, + "input":{"shape":"PutBucketPolicyRequest"}, "documentation":"Replaces a policy on a bucket. If the bucket already has a policy, the one in this request completely replaces it.", "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html" }, @@ -547,7 +543,7 @@ "name":"PutObject", "http":{ "method":"PUT", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"PutObjectRequest"}, "output":{"shape":"PutObjectOutput"}, @@ -558,7 +554,7 @@ "name":"PutObjectAcl", "http":{ "method":"PUT", - "requestUri":"/{Bucket}/{Key}?acl" + "requestUri":"/{Bucket}/{Key+}?acl" }, "input":{"shape":"PutObjectAclRequest"}, "errors":[ @@ -575,7 +571,7 @@ "name":"RestoreObject", "http":{ "method":"POST", - "requestUri":"/{Bucket}/{Key}?restore" + "requestUri":"/{Bucket}/{Key+}?restore" }, "input":{"shape":"RestoreObjectRequest"}, "errors":[ @@ -593,18 +589,18 @@ "name":"UploadPart", "http":{ "method":"PUT", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"UploadPartRequest"}, "output":{"shape":"UploadPartOutput"}, - "documentation":"

Uploads a part in a multipart upload.

\n

Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

", + "documentation":"

Uploads a part in a multipart upload.

Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

", "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPart.html" }, "UploadPartCopy":{ "name":"UploadPartCopy", "http":{ "method":"PUT", - "requestUri":"/{Bucket}/{Key}" + "requestUri":"/{Bucket}/{Key+}" }, "input":{"shape":"UploadPartCopyRequest"}, "output":{"shape":"UploadPartCopyOutput"}, @@ -848,7 +844,7 @@ "MultipartUpload":{ "shape":"CompletedMultipartUpload", "locationName":"CompleteMultipartUpload", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/" + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"} }, "UploadId":{ "shape":"MultipartUploadId", @@ -924,6 +920,18 @@ "location":"header", "locationName":"x-amz-server-side-encryption", "documentation":"The Server-side encryption algorithm used when storing this object in S3." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." } }, "payload":"CopyObjectResult" @@ -1071,6 +1079,42 @@ "location":"header", "locationName":"x-amz-website-redirect-location", "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256)." + }, + "SSECustomerKey":{ + "shape":"SSECustomerKey", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." + }, + "CopySourceSSECustomerAlgorithm":{ + "shape":"CopySourceSSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-copy-source-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use when decrypting the source object (e.g., AES256)." + }, + "CopySourceSSECustomerKey":{ + "shape":"CopySourceSSECustomerKey", + "location":"header", + "locationName":"x-amz-copy-source-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created." + }, + "CopySourceSSECustomerKeyMD5":{ + "shape":"CopySourceSSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-copy-source-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." } } }, @@ -1103,6 +1147,12 @@ "CopySourceIfNoneMatch":{"type":"string"}, "CopySourceIfUnmodifiedSince":{"type":"timestamp"}, "CopySourceRange":{"type":"string"}, + "CopySourceSSECustomerAlgorithm":{"type":"string"}, + "CopySourceSSECustomerKey":{ + "type":"string", + "sensitive":true + }, + "CopySourceSSECustomerKeyMD5":{"type":"string"}, "CopySourceVersionId":{"type":"string"}, "CreateBucketConfiguration":{ "type":"structure", @@ -1140,7 +1190,7 @@ }, "CreateBucketConfiguration":{ "shape":"CreateBucketConfiguration", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"CreateBucketConfiguration" }, "GrantFullControl":{ @@ -1197,6 +1247,18 @@ "location":"header", "locationName":"x-amz-server-side-encryption", "documentation":"The Server-side encryption algorithm used when storing this object in S3." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." } } }, @@ -1306,6 +1368,24 @@ "location":"header", "locationName":"x-amz-website-redirect-location", "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256)." + }, + "SSECustomerKey":{ + "shape":"SSECustomerKey", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." } } }, @@ -1496,7 +1576,7 @@ }, "Delete":{ "shape":"Delete", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"Delete" }, "MFA":{ @@ -1941,6 +2021,18 @@ "location":"headers", "documentation":"A map of metadata to store with the object in S3.", "locationName":"x-amz-meta-" + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." } }, "payload":"Body" @@ -2033,6 +2125,24 @@ "location":"querystring", "locationName":"versionId", "documentation":"VersionId used to reference a specific version of the object." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256)." + }, + "SSECustomerKey":{ + "shape":"SSECustomerKey", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." } } }, @@ -2237,6 +2347,18 @@ "location":"headers", "documentation":"A map of metadata to store with the object in S3.", "locationName":"x-amz-meta-" + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." } } }, @@ -2292,6 +2414,24 @@ "location":"querystring", "locationName":"versionId", "documentation":"VersionId used to reference a specific version of the object." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256)." + }, + "SSECustomerKey":{ + "shape":"SSECustomerKey", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." } } }, @@ -2794,6 +2934,30 @@ "exception":true, "documentation":"The specified multipart upload does not exist." }, + "NoncurrentVersionExpiration":{ + "type":"structure", + "members":{ + "NoncurrentDays":{ + "shape":"Days", + "documentation":"Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide." + } + }, + "documentation":"Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that Amazon S3 delete noncurrent object versions at a specific period in the object's lifetime." + }, + "NoncurrentVersionTransition":{ + "type":"structure", + "members":{ + "NoncurrentDays":{ + "shape":"Days", + "documentation":"Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide." + }, + "StorageClass":{ + "shape":"TransitionStorageClass", + "documentation":"The class of storage used to store the object." + } + }, + "documentation":"Container for the transition rule that describes when noncurrent objects transition to the GLACIER storage class. If your bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to the GLACIER storage class at a specific period in the object's lifetime." + }, "NotificationConfiguration":{ "type":"structure", "required":["TopicConfiguration"], @@ -2987,7 +3151,7 @@ }, "AccessControlPolicy":{ "shape":"AccessControlPolicy", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"AccessControlPolicy" }, "Bucket":{ @@ -3044,7 +3208,7 @@ }, "CORSConfiguration":{ "shape":"CORSConfiguration", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"CORSConfiguration" }, "ContentMD5":{ @@ -3071,7 +3235,7 @@ }, "LifecycleConfiguration":{ "shape":"LifecycleConfiguration", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"LifecycleConfiguration" } }, @@ -3091,7 +3255,7 @@ }, "BucketLoggingStatus":{ "shape":"BucketLoggingStatus", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"BucketLoggingStatus" }, "ContentMD5":{ @@ -3121,7 +3285,7 @@ }, "NotificationConfiguration":{ "shape":"NotificationConfiguration", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"NotificationConfiguration" } }, @@ -3170,7 +3334,7 @@ }, "RequestPaymentConfiguration":{ "shape":"RequestPaymentConfiguration", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"RequestPaymentConfiguration" } }, @@ -3195,7 +3359,7 @@ }, "Tagging":{ "shape":"Tagging", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"Tagging" } }, @@ -3226,7 +3390,7 @@ }, "VersioningConfiguration":{ "shape":"VersioningConfiguration", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"VersioningConfiguration" } }, @@ -3251,7 +3415,7 @@ }, "WebsiteConfiguration":{ "shape":"WebsiteConfiguration", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"WebsiteConfiguration" } }, @@ -3272,7 +3436,7 @@ }, "AccessControlPolicy":{ "shape":"AccessControlPolicy", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"AccessControlPolicy" }, "Bucket":{ @@ -3349,6 +3513,18 @@ "location":"header", "locationName":"x-amz-version-id", "documentation":"Version of the object." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." } } }, @@ -3473,6 +3649,24 @@ "location":"header", "locationName":"x-amz-website-redirect-location", "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256)." + }, + "SSECustomerKey":{ + "shape":"SSECustomerKey", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." } }, "payload":"Body" @@ -3554,9 +3748,14 @@ "location":"uri", "locationName":"Key" }, + "VersionId":{ + "shape":"ObjectVersionId", + "location":"querystring", + "locationName":"versionId" + }, "RestoreRequest":{ "shape":"RestoreRequest", - "xmlNamespace":"http://s3.amazonaws.com/doc/2006-03-01/", + "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, "locationName":"RestoreRequest" } }, @@ -3613,7 +3812,9 @@ "shape":"ExpirationStatus", "documentation":"If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being applied." }, - "Transition":{"shape":"Transition"} + "Transition":{"shape":"Transition"}, + "NoncurrentVersionTransition":{"shape":"NoncurrentVersionTransition"}, + "NoncurrentVersionExpiration":{"shape":"NoncurrentVersionExpiration"} } }, "Rules":{ @@ -3621,6 +3822,12 @@ "member":{"shape":"Rule"}, "flattened":true }, + "SSECustomerAlgorithm":{"type":"string"}, + "SSECustomerKey":{ + "type":"string", + "sensitive":true + }, + "SSECustomerKeyMD5":{"type":"string"}, "ServerSideEncryption":{ "type":"string", "enum":["AES256"] @@ -3746,6 +3953,18 @@ "location":"header", "locationName":"x-amz-server-side-encryption", "documentation":"The Server-side encryption algorithm used when storing this object in S3." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." } }, "payload":"CopyPartResult" @@ -3817,6 +4036,42 @@ "location":"querystring", "locationName":"uploadId", "documentation":"Upload ID identifying the multipart upload whose part is being copied." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256)." + }, + "SSECustomerKey":{ + "shape":"SSECustomerKey", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." + }, + "CopySourceSSECustomerAlgorithm":{ + "shape":"CopySourceSSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-copy-source-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use when decrypting the source object (e.g., AES256)." + }, + "CopySourceSSECustomerKey":{ + "shape":"CopySourceSSECustomerKey", + "location":"header", + "locationName":"x-amz-copy-source-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created." + }, + "CopySourceSSECustomerKeyMD5":{ + "shape":"CopySourceSSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-copy-source-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." } } }, @@ -3834,6 +4089,18 @@ "location":"header", "locationName":"ETag", "documentation":"Entity tag for the uploaded object." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." } } }, @@ -3882,6 +4149,24 @@ "location":"querystring", "locationName":"uploadId", "documentation":"Upload ID identifying the multipart upload whose part is being uploaded." + }, + "SSECustomerAlgorithm":{ + "shape":"SSECustomerAlgorithm", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-algorithm", + "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256)." + }, + "SSECustomerKey":{ + "shape":"SSECustomerKey", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key", + "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request." + }, + "SSECustomerKeyMD5":{ + "shape":"SSECustomerKeyMD5", + "location":"header", + "locationName":"x-amz-server-side-encryption-customer-key-MD5", + "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." } }, "payload":"Body" diff --git a/SES/AWSSES.h b/SES/AWSSES.h index 4a6c284478a..249c4c69bf6 100644 --- a/SES/AWSSES.h +++ b/SES/AWSSES.h @@ -20,19 +20,18 @@ @class BFTask; /** - * Amazon Simple Email Service

This is the API Reference for Amazon Simple Email Service (Amazon SES). This documentation is intended to be used in conjunction with the Amazon SES Developer Guide.

For a list of Amazon SES endpoints to use in service requests, see Regions and Amazon SESin the Amazon SES Developer Guide. + * Amazon Simple Email Service

This is the API Reference for Amazon Simple Email Service (Amazon SES). This documentation is intended to be used in conjunction with the Amazon SES Developer Guide.

*/ @interface AWSSES : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultSES; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

Deletes the specified identity (email address or domain) from the list of verified identities.

This action is throttled at one request per second.

+ *

Deletes the specified identity (email address or domain) from the list of verified identities.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the DeleteIdentity service method. * @@ -44,7 +43,7 @@ - (BFTask *)deleteIdentity:(AWSSESDeleteIdentityRequest *)request; /** - *

Deletes the specified email address from the list of verified addresses.

The DeleteVerifiedEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The DeleteIdentity action is now preferred.

This action is throttled at one request per second.

+ *

Deletes the specified email address from the list of verified addresses.

The DeleteVerifiedEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The DeleteIdentity action is now preferred.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the DeleteVerifiedEmailAddress service method. * @@ -55,7 +54,7 @@ - (BFTask *)deleteVerifiedEmailAddress:(AWSSESDeleteVerifiedEmailAddressRequest *)request; /** - *

Returns the current status of Easy DKIM signing for an entity. For domain name identities, this action also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES has successfully verified that these tokens have been published.

This action takes a list of identities as input and returns the following information for each:

  • Whether Easy DKIM signing is enabled or disabled.
  • A set of DKIM tokens that represent the identity. If the identity is an email address, the tokens represent the domain of that address.
  • Whether Amazon SES has successfully verified the DKIM tokens published in the domain's DNS.This information is only returned for domain name identities, not for email addresses.

This action is throttled at one request per second.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

+ *

Returns the current status of Easy DKIM signing for an entity. For domain name identities, this action also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES has successfully verified that these tokens have been published.

This action takes a list of identities as input and returns the following information for each:

  • Whether Easy DKIM signing is enabled or disabled.
  • A set of DKIM tokens that represent the identity. If the identity is an email address, the tokens represent the domain of that address.
  • Whether Amazon SES has successfully verified the DKIM tokens published in the domain's DNS. This information is only returned for domain name identities, not for email addresses.

This action is throttled at one request per second.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the GetIdentityDkimAttributes service method. * @@ -67,7 +66,7 @@ - (BFTask *)getIdentityDkimAttributes:(AWSSESGetIdentityDkimAttributesRequest *)request; /** - *

Given a list of verified identities (email addresses and/or domains), returns a structure describing identitynotification attributes.

This action is throttled at one request per second.

For more information about feedback notification, see theAmazon SES Developer Guide.

+ *

Given a list of verified identities (email addresses and/or domains), returns a structure describing identity notification attributes.

This action is throttled at one request per second.

For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the GetIdentityNotificationAttributes service method. * @@ -79,7 +78,7 @@ - (BFTask *)getIdentityNotificationAttributes:(AWSSESGetIdentityNotificationAttributesRequest *)request; /** - *

Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity.

This action is throttled at one request per second.

+ *

Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the GetIdentityVerificationAttributes service method. * @@ -91,7 +90,7 @@ - (BFTask *)getIdentityVerificationAttributes:(AWSSESGetIdentityVerificationAttributesRequest *)request; /** - *

Returns the user's current sending limits.

This action is throttled at one request per second.

+ *

Returns the user's current sending limits.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the GetSendQuota service method. * @@ -103,7 +102,7 @@ - (BFTask *)getSendQuota:(AWSRequest *)request; /** - *

Returns the user's sending statistics. The result is a list of data points, representing the last two weeks of sending activity.

Each data point in the list contains statistics for a 15-minute interval.

This action is throttled at one request per second.

+ *

Returns the user's sending statistics. The result is a list of data points, representing the last two weeks of sending activity.

Each data point in the list contains statistics for a 15-minute interval.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the GetSendStatistics service method. * @@ -115,7 +114,7 @@ - (BFTask *)getSendStatistics:(AWSRequest *)request; /** - *

Returns a list containing all of the identities (email addresses and domains) fora specific AWS Account, regardless of verification status.

This action is throttled at one request per second.

+ *

Returns a list containing all of the identities (email addresses and domains) for a specific AWS Account, regardless of verification status.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the ListIdentities service method. * @@ -127,7 +126,7 @@ - (BFTask *)listIdentities:(AWSSESListIdentitiesRequest *)request; /** - *

Returns a list containing all of the email addresses that have been verified.

The ListVerifiedEmailAddresses action is deprecated as of the May 15, 2012 release ofDomain Verification. The ListIdentities action is now preferred.

This action is throttled at one request per second.

+ *

Returns a list containing all of the email addresses that have been verified.

The ListVerifiedEmailAddresses action is deprecated as of the May 15, 2012 release of Domain Verification. The ListIdentities action is now preferred.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the ListVerifiedEmailAddresses service method. * @@ -139,7 +138,7 @@ - (BFTask *)listVerifiedEmailAddresses:(AWSRequest *)request; /** - *

Composes an email message based on input data, and then immediately queues the message for sending.

You can only send email from verified email addresses and domains.If you have not requested production access to Amazon SES, you must alsoverify every recipient email address except for the recipients providedby the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

+ *

Composes an email message based on input data, and then immediately queues the message for sending.

You can only send email from verified email addresses and domains. If you have not requested production access to Amazon SES, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the SendEmail service method. * @@ -151,7 +150,7 @@ - (BFTask *)sendEmail:(AWSSESSendEmailRequest *)request; /** - *

Sends an email message, with header and content specified by the client. The SendRawEmail action is useful for sending multipart MIME emails. The raw text of the message must comply with Internet email standards; otherwise, the message cannot be sent.

You can only send email from verified email addresses and domains.If you have not requested production access to Amazon SES, you must alsoverify every recipient email address except for the recipients providedby the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

+ *

Sends an email message, with header and content specified by the client. The SendRawEmail action is useful for sending multipart MIME emails. The raw text of the message must comply with Internet email standards; otherwise, the message cannot be sent.

You can only send email from verified email addresses and domains. If you have not requested production access to Amazon SES, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

The To:, CC:, and BCC: headers in the raw message can contain a group list. Note that each recipient in a group list counts towards the 50-recipient limit.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the SendRawEmail service method. * @@ -163,7 +162,7 @@ - (BFTask *)sendRawEmail:(AWSSESSendRawEmailRequest *)request; /** - *

Enables or disables Easy DKIM signing of email sent from an identity:

  • If Easy DKIM signing is enabled for a domain name identity (e.g., example.com), then Amazon SES will DKIM-sign all email sent by addresses under that domain name (e.g., user@example.com).
  • If Easy DKIM signing is enabled for an email address, then Amazon SES will DKIM-sign all email sent by that email address.

For email addresses (e.g., user@example.com), you can only enable Easy DKIM signingif the corresponding domain (e.g., example.com) has been set up for Easy DKIM using the AWS Console orthe VerifyDomainDkim action.

This action is throttled at one request per second.

For more information about Easy DKIM signing, go to theAmazon SES Developer Guide.

+ *

Enables or disables Easy DKIM signing of email sent from an identity:

  • If Easy DKIM signing is enabled for a domain name identity (e.g., example.com), then Amazon SES will DKIM-sign all email sent by addresses under that domain name (e.g., user@example.com).
  • If Easy DKIM signing is enabled for an email address, then Amazon SES will DKIM-sign all email sent by that email address.

For email addresses (e.g., user@example.com), you can only enable Easy DKIM signing if the corresponding domain (e.g., example.com) has been set up for Easy DKIM using the AWS Console or the VerifyDomainDkim action.

This action is throttled at one request per second.

For more information about Easy DKIM signing, go to the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the SetIdentityDkimEnabled service method. * @@ -175,7 +174,7 @@ - (BFTask *)setIdentityDkimEnabled:(AWSSESSetIdentityDkimEnabledRequest *)request; /** - *

Given an identity (email address or domain), enables or disables whether Amazon SES forwardsfeedback notifications as email. Feedback forwarding may only be disabled when both complaintand bounce topics are set.

This action is throttled at one request per second.

For more information about feedback notification,see the Amazon SES Developer Guide.

+ *

Given an identity (email address or domain), enables or disables whether Amazon SES forwards bounce and complaint notifications as email. Feedback forwarding can only be disabled when Amazon Simple Notification Service (Amazon SNS) topics are specified for both bounces and complaints.

This action is throttled at one request per second.

For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the SetIdentityFeedbackForwardingEnabled service method. * @@ -187,7 +186,7 @@ - (BFTask *)setIdentityFeedbackForwardingEnabled:(AWSSESSetIdentityFeedbackForwardingEnabledRequest *)request; /** - *

Given an identity (email address or domain), sets the Amazon SNS topic to which Amazon SES will publishbounce and complaint notifications for emails sent with that identity as the Source.Publishing to topics may only be disabled when feedback forwarding is enabled.

This action is throttled at one request per second.

For more information about feedback notification, see the Amazon SES Developer Guide.

+ *

Given an identity (email address or domain), sets the Amazon Simple Notification Service (Amazon SNS) topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with that identity as the Source.

This action is throttled at one request per second.

For more information about feedback notification, see the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the SetIdentityNotificationTopic service method. * @@ -199,7 +198,7 @@ - (BFTask *)setIdentityNotificationTopic:(AWSSESSetIdentityNotificationTopicRequest *)request; /** - *

Returns a set of DKIM tokens for a domain. DKIM tokens are character strings that represent your domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain.

This action is throttled at one request per second.

To enable or disable Easy DKIM signing for a domain, use the SetIdentityDkimEnabled action.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

+ *

Returns a set of DKIM tokens for a domain. DKIM tokens are character strings that represent your domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain.

This action is throttled at one request per second.

To enable or disable Easy DKIM signing for a domain, use the SetIdentityDkimEnabled action.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

* * @param request A container for the necessary parameters to execute the VerifyDomainDkim service method. * @@ -211,7 +210,7 @@ - (BFTask *)verifyDomainDkim:(AWSSESVerifyDomainDkimRequest *)request; /** - *

Verifies a domain.

This action is throttled at one request per second.

+ *

Verifies a domain.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the VerifyDomainIdentity service method. * @@ -223,7 +222,7 @@ - (BFTask *)verifyDomainIdentity:(AWSSESVerifyDomainIdentityRequest *)request; /** - *

Verifies an email address. This action causes a confirmation email message to besent to the specified address.

The VerifyEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The VerifyEmailIdentity action is now preferred.

This action is throttled at one request per second.

+ *

Verifies an email address. This action causes a confirmation email message to be sent to the specified address.

The VerifyEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The VerifyEmailIdentity action is now preferred.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the VerifyEmailAddress service method. * @@ -234,7 +233,7 @@ - (BFTask *)verifyEmailAddress:(AWSSESVerifyEmailAddressRequest *)request; /** - *

Verifies an email address. This action causes a confirmation email message to be sent to the specified address.

This action is throttled at one request per second.

+ *

Verifies an email address. This action causes a confirmation email message to be sent to the specified address.

This action is throttled at one request per second.

* * @param request A container for the necessary parameters to execute the VerifyEmailIdentity service method. * diff --git a/SES/AWSSES.m b/SES/AWSSES.m index 22efe5e133e..be987da9da5 100644 --- a/SES/AWSSES.m +++ b/SES/AWSSES.m @@ -15,8 +15,8 @@ #import "AWSSES.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -78,7 +78,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSESErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -86,8 +86,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSESErrorDomain code:AWSSESErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } } @@ -110,22 +109,22 @@ @interface AWSSESRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSSESRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSSESErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSSESErrorIncompleteSignature: case AWSSESErrorInvalidClientTokenId: case AWSSESErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -140,15 +139,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSSES() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -172,25 +170,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceSES]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceSES]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSESRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -199,9 +197,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -221,7 +219,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)deleteIdentity:(AWSSESDeleteIdentityRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteIdentity" @@ -230,7 +228,7 @@ - (BFTask *)deleteIdentity:(AWSSESDeleteIdentityRequest *)request { - (BFTask *)deleteVerifiedEmailAddress:(AWSSESDeleteVerifiedEmailAddressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteVerifiedEmailAddress" @@ -239,7 +237,7 @@ - (BFTask *)deleteVerifiedEmailAddress:(AWSSESDeleteVerifiedEmailAddressRequest - (BFTask *)getIdentityDkimAttributes:(AWSSESGetIdentityDkimAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetIdentityDkimAttributes" @@ -248,7 +246,7 @@ - (BFTask *)getIdentityDkimAttributes:(AWSSESGetIdentityDkimAttributesRequest *) - (BFTask *)getIdentityNotificationAttributes:(AWSSESGetIdentityNotificationAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetIdentityNotificationAttributes" @@ -257,7 +255,7 @@ - (BFTask *)getIdentityNotificationAttributes:(AWSSESGetIdentityNotificationAttr - (BFTask *)getIdentityVerificationAttributes:(AWSSESGetIdentityVerificationAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetIdentityVerificationAttributes" @@ -266,7 +264,7 @@ - (BFTask *)getIdentityVerificationAttributes:(AWSSESGetIdentityVerificationAttr - (BFTask *)getSendQuota:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetSendQuota" @@ -275,7 +273,7 @@ - (BFTask *)getSendQuota:(AWSRequest *)request { - (BFTask *)getSendStatistics:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetSendStatistics" @@ -284,7 +282,7 @@ - (BFTask *)getSendStatistics:(AWSRequest *)request { - (BFTask *)listIdentities:(AWSSESListIdentitiesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListIdentities" @@ -293,7 +291,7 @@ - (BFTask *)listIdentities:(AWSSESListIdentitiesRequest *)request { - (BFTask *)listVerifiedEmailAddresses:(AWSRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListVerifiedEmailAddresses" @@ -302,7 +300,7 @@ - (BFTask *)listVerifiedEmailAddresses:(AWSRequest *)request { - (BFTask *)sendEmail:(AWSSESSendEmailRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SendEmail" @@ -311,7 +309,7 @@ - (BFTask *)sendEmail:(AWSSESSendEmailRequest *)request { - (BFTask *)sendRawEmail:(AWSSESSendRawEmailRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SendRawEmail" @@ -320,7 +318,7 @@ - (BFTask *)sendRawEmail:(AWSSESSendRawEmailRequest *)request { - (BFTask *)setIdentityDkimEnabled:(AWSSESSetIdentityDkimEnabledRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetIdentityDkimEnabled" @@ -329,7 +327,7 @@ - (BFTask *)setIdentityDkimEnabled:(AWSSESSetIdentityDkimEnabledRequest *)reques - (BFTask *)setIdentityFeedbackForwardingEnabled:(AWSSESSetIdentityFeedbackForwardingEnabledRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetIdentityFeedbackForwardingEnabled" @@ -338,7 +336,7 @@ - (BFTask *)setIdentityFeedbackForwardingEnabled:(AWSSESSetIdentityFeedbackForwa - (BFTask *)setIdentityNotificationTopic:(AWSSESSetIdentityNotificationTopicRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetIdentityNotificationTopic" @@ -347,7 +345,7 @@ - (BFTask *)setIdentityNotificationTopic:(AWSSESSetIdentityNotificationTopicRequ - (BFTask *)verifyDomainDkim:(AWSSESVerifyDomainDkimRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"VerifyDomainDkim" @@ -356,7 +354,7 @@ - (BFTask *)verifyDomainDkim:(AWSSESVerifyDomainDkimRequest *)request { - (BFTask *)verifyDomainIdentity:(AWSSESVerifyDomainIdentityRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"VerifyDomainIdentity" @@ -365,7 +363,7 @@ - (BFTask *)verifyDomainIdentity:(AWSSESVerifyDomainIdentityRequest *)request { - (BFTask *)verifyEmailAddress:(AWSSESVerifyEmailAddressRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"VerifyEmailAddress" @@ -374,7 +372,7 @@ - (BFTask *)verifyEmailAddress:(AWSSESVerifyEmailAddressRequest *)request { - (BFTask *)verifyEmailIdentity:(AWSSESVerifyEmailIdentityRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"VerifyEmailIdentity" diff --git a/SES/AWSSESModel.h b/SES/AWSSESModel.h index ac3a57c2537..6b9cde99353 100644 --- a/SES/AWSSESModel.h +++ b/SES/AWSSESModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSSESErrorDomain; @@ -37,6 +37,7 @@ typedef NS_ENUM(NSInteger, AWSSESNotificationType) { AWSSESNotificationTypeUnknown, AWSSESNotificationTypeBounce, AWSSESNotificationTypeComplaint, + AWSSESNotificationTypeDelivery, }; typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @@ -92,7 +93,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** *

Represents the body of the message. You can specify text, HTML, or both. If you use both, then the message should display correctly in the widest variety of email clients.

*/ -@interface AWSSESBody : AZModel +@interface AWSSESBody : AWSModel /** @@ -111,7 +112,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents textual data, plus an optional character set specification.

By default, the text must be 7-bit ASCII, due to the constraints of the SMTP protocol. If the text must contain any other characters, then you must also specify a character set. Examples include UTF-8, ISO-8859-1, and Shift_JIS.

* Required parameters: [Data] */ -@interface AWSSESContent : AZModel +@interface AWSSESContent : AWSModel /** @@ -141,9 +142,9 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @end /** - *

An empty element.Receiving this element indicates that the request completed successfully.

+ *

An empty element. Receiving this element indicates that the request completed successfully.

*/ -@interface AWSSESDeleteIdentityResponse : AZModel +@interface AWSSESDeleteIdentityResponse : AWSModel @end @@ -163,9 +164,9 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @end /** - *

Represents the destination of the message, consisting of To:, CC:, and BCC: fields.

By default, the string must be 7-bit ASCII. If the text must contain any other characters,then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string.MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=.For more information, see RFC 2047.

+ *

Represents the destination of the message, consisting of To:, CC:, and BCC: fields.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

*/ -@interface AWSSESDestination : AZModel +@interface AWSSESDestination : AWSModel /** @@ -203,7 +204,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents a list of all the DKIM attributes for the specified identity.

* Required parameters: [DkimAttributes] */ -@interface AWSSESGetIdentityDkimAttributesResponse : AZModel +@interface AWSSESGetIdentityDkimAttributesResponse : AWSModel /** @@ -213,10 +214,6 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @end -/** - * - * Required parameters: [Identities] - */ @interface AWSSESGetIdentityNotificationAttributesRequest : AWSRequest @@ -228,10 +225,10 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @end /** - *

Describes whether an identity has a bounce topic or complaint topic set, or feedbackforwarding enabled.

+ *

Describes whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and specifies whether feedback forwarding is enabled for bounce and complaint notifications.

* Required parameters: [NotificationAttributes] */ -@interface AWSSESGetIdentityNotificationAttributesResponse : AZModel +@interface AWSSESGetIdentityNotificationAttributesResponse : AWSModel /** @@ -259,7 +256,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents the verification attributes for a list of identities.

* Required parameters: [VerificationAttributes] */ -@interface AWSSESGetIdentityVerificationAttributesResponse : AZModel +@interface AWSSESGetIdentityVerificationAttributesResponse : AWSModel /** @@ -272,7 +269,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** *

Represents the user's current activity limits returned from a successful GetSendQuota request.

*/ -@interface AWSSESGetSendQuotaResponse : AZModel +@interface AWSSESGetSendQuotaResponse : AWSModel /** @@ -295,7 +292,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** *

Represents a list of SendDataPoint items returned from a successful GetSendStatistics request. This list contains aggregated data from the previous two weeks of sending activity.

*/ -@interface AWSSESGetSendStatisticsResponse : AZModel +@interface AWSSESGetSendStatisticsResponse : AWSModel /** @@ -309,7 +306,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents the DKIM attributes of a verified email address or a domain.

* Required parameters: [DkimEnabled, DkimVerificationStatus] */ -@interface AWSSESIdentityDkimAttributes : AZModel +@interface AWSSESIdentityDkimAttributes : AWSModel /** @@ -323,31 +320,36 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @property (nonatomic, strong) NSArray *dkimTokens; /** - *

Describes whether Amazon SES has successfully verified the DKIM DNS records (tokens) published in the domain name's DNS.(This only applies to domain identities, not email address identities.)

+ *

Describes whether Amazon SES has successfully verified the DKIM DNS records (tokens) published in the domain name's DNS. (This only applies to domain identities, not email address identities.)

*/ @property (nonatomic, assign) AWSSESVerificationStatus dkimVerificationStatus; @end /** - *

Represents the notification attributes of an identity, including whether a bounceor complaint topic are set, and whether feedback forwarding is enabled.

- * Required parameters: [BounceTopic, ComplaintTopic, ForwardingEnabled] + *

Represents the notification attributes of an identity, including whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and whether feedback forwarding is enabled for bounce and complaint notifications.

+ * Required parameters: [BounceTopic, ComplaintTopic, DeliveryTopic, ForwardingEnabled] */ -@interface AWSSESIdentityNotificationAttributes : AZModel +@interface AWSSESIdentityNotificationAttributes : AWSModel /** - *

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topicwhere Amazon SES will publish bounce notifications.

+ *

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish bounce notifications.

*/ @property (nonatomic, strong) NSString *bounceTopic; /** - *

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topicwhere Amazon SES will publish complaint notifications.

+ *

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish complaint notifications.

*/ @property (nonatomic, strong) NSString *complaintTopic; /** - *

Describes whether Amazon SES will forward feedback as email. true indicatesthat Amazon SES will forward feedback as email, while false indicates thatfeedback will be published only to the specified Bounce and Complaint topics.

+ *

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish delivery notifications.

+ */ +@property (nonatomic, strong) NSString *deliveryTopic; + +/** + *

Describes whether Amazon SES will forward bounce and complaint notifications as email. true indicates that Amazon SES will forward bounce and complaint notifications as email, while false indicates that bounce and complaint notifications will be published only to the specified bounce and complaint Amazon SNS topics.

*/ @property (nonatomic, strong) NSNumber *forwardingEnabled; @@ -357,7 +359,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents the verification attributes of a single identity.

* Required parameters: [VerificationStatus] */ -@interface AWSSESIdentityVerificationAttributes : AZModel +@interface AWSSESIdentityVerificationAttributes : AWSModel /** @@ -399,7 +401,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents a list of all verified identities for the AWS Account.

* Required parameters: [Identities] */ -@interface AWSSESListIdentitiesResponse : AZModel +@interface AWSSESListIdentitiesResponse : AWSModel /** @@ -417,7 +419,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** *

Represents a list of all the email addresses verified for the current user.

*/ -@interface AWSSESListVerifiedEmailAddressesResponse : AZModel +@interface AWSSESListVerifiedEmailAddressesResponse : AWSModel /** @@ -431,7 +433,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents the message to be sent, composed of a subject and a body.

* Required parameters: [Subject, Body] */ -@interface AWSSESMessage : AZModel +@interface AWSSESMessage : AWSModel /** @@ -450,11 +452,11 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents the raw data of the message.

* Required parameters: [Data] */ -@interface AWSSESRawMessage : AZModel +@interface AWSSESRawMessage : AWSModel /** - *

The raw data of the message. The client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, MIME encoding, and base64 encoding (if necessary).

For more information, go to the Amazon SES Developer Guide.

+ *

The raw data of the message. The client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, MIME encoding, and base64 encoding (if necessary).

The To:, CC:, and BCC: headers in the raw message can contain a group list.

For more information, go to the Amazon SES Developer Guide.

*/ @property (nonatomic, strong) NSData *data; @@ -463,7 +465,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** *

Represents sending statistics data. Each SendDataPoint contains statistics for a 15-minute period of sending activity.

*/ -@interface AWSSESSendDataPoint : AZModel +@interface AWSSESSendDataPoint : AWSModel /** @@ -516,12 +518,12 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @property (nonatomic, strong) NSArray *replyToAddresses; /** - *

The email address to which bounce notifications are to be forwarded. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter.

+ *

The email address to which bounces and complaints are to be forwarded when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter.

*/ @property (nonatomic, strong) NSString *returnPath; /** - *

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters,then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string.MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=.For more information, see RFC 2047.

+ *

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

*/ @property (nonatomic, strong) NSString *source; @@ -531,7 +533,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents a unique message ID returned from a successful SendEmail request.

* Required parameters: [MessageId] */ -@interface AWSSESSendEmailResponse : AZModel +@interface AWSSESSendEmailResponse : AWSModel /** @@ -549,7 +551,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** - *

A list of destinations for the message.

+ *

A list of destinations for the message, consisting of To:, CC:, and BCC: addresses.

*/ @property (nonatomic, strong) NSArray *destinations; @@ -559,7 +561,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @property (nonatomic, strong) AWSSESRawMessage *rawMessage; /** - *

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters,then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string.MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=.For more information, see RFC 2047.

If you specify the Source parameter, then bounce notifications and complaints will be sent to this email address. This takes precedence over any Return-Path header that you might include in the raw text of the message. + *

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

*/ @property (nonatomic, strong) NSString *source; @@ -569,7 +571,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents a unique message ID returned from a successful SendRawEmail request.

* Required parameters: [MessageId] */ -@interface AWSSESSendRawEmailResponse : AZModel +@interface AWSSESSendRawEmailResponse : AWSModel /** @@ -587,7 +589,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** - *

Sets whether DKIM signing is enabled for an identity.Set to true to enable DKIM signing for this identity;false to disable it.

+ *

Sets whether DKIM signing is enabled for an identity. Set to true to enable DKIM signing for this identity; false to disable it.

*/ @property (nonatomic, strong) NSNumber *dkimEnabled; @@ -599,9 +601,9 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @end /** - *

An empty element.Receiving this element indicates that the request completed successfully.

+ *

An empty element. Receiving this element indicates that the request completed successfully.

*/ -@interface AWSSESSetIdentityDkimEnabledResponse : AZModel +@interface AWSSESSetIdentityDkimEnabledResponse : AWSModel @end @@ -610,21 +612,21 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** - *

Sets whether Amazon SES will forward feedback notifications as email. true specifies that Amazon SES will forward feedback notifications as email, in addition to any Amazon SNS topic publishing otherwise specified. false specifies that Amazon SESwill publish feedback notifications only through Amazon SNS. This value can only be set to false whentopics are specified for both Bounce and Complaint topic types.

+ *

Sets whether Amazon SES will forward bounce and complaint notifications as email. true specifies that Amazon SES will forward bounce and complaint notifications as email, in addition to any Amazon SNS topic publishing otherwise specified. false specifies that Amazon SES will publish bounce and complaint notifications only through Amazon SNS. This value can only be set to false when Amazon SNS topics are set for both Bounce and Complaint notification types.

*/ @property (nonatomic, strong) NSNumber *forwardingEnabled; /** - *

The identity for which to set feedback notification forwarding. Examples: user@example.com, example.com.

+ *

The identity for which to set bounce and complaint notification forwarding. Examples: user@example.com, example.com.

*/ @property (nonatomic, strong) NSString *identity; @end /** - *

An empty element.Receiving this element indicates that the request completed successfully.

+ *

An empty element. Receiving this element indicates that the request completed successfully.

*/ -@interface AWSSESSetIdentityFeedbackForwardingEnabledResponse : AZModel +@interface AWSSESSetIdentityFeedbackForwardingEnabledResponse : AWSModel @end @@ -637,26 +639,26 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { /** - *

The identity for which the topic will be set.Examples: user@example.com, example.com.

+ *

The identity for which the Amazon SNS topic will be set. Examples: user@example.com, example.com.

*/ @property (nonatomic, strong) NSString *identity; /** - *

The type of feedback notifications that will be published to the specified topic.

+ *

The type of notifications that will be published to the specified Amazon SNS topic.

*/ @property (nonatomic, assign) AWSSESNotificationType notificationType; /** - *

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (Amazon SNS) topic.If the parameter is omitted from the request or a null value is passed, the topic is cleared and publishing is disabled.

+ *

The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter is omitted from the request or a null value is passed, SnsTopic is cleared and publishing is disabled.

*/ @property (nonatomic, strong) NSString *snsTopic; @end /** - *

An empty element.Receiving this element indicates that the request completed successfully.

+ *

An empty element. Receiving this element indicates that the request completed successfully.

*/ -@interface AWSSESSetIdentityNotificationTopicResponse : AZModel +@interface AWSSESSetIdentityNotificationTopicResponse : AWSModel @end @@ -679,7 +681,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents the DNS records that must be published in the domain name's DNS to complete DKIM setup.

* Required parameters: [DkimTokens] */ -@interface AWSSESVerifyDomainDkimResponse : AZModel +@interface AWSSESVerifyDomainDkimResponse : AWSModel /** @@ -707,7 +709,7 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { *

Represents a token used for domain ownership verification.

* Required parameters: [VerificationToken] */ -@interface AWSSESVerifyDomainIdentityResponse : AZModel +@interface AWSSESVerifyDomainIdentityResponse : AWSModel /** @@ -746,9 +748,9 @@ typedef NS_ENUM(NSInteger, AWSSESVerificationStatus) { @end /** - *

An empty element.Receiving this element indicates that the request completed successfully.

+ *

An empty element. Receiving this element indicates that the request completed successfully.

*/ -@interface AWSSESVerifyEmailIdentityResponse : AZModel +@interface AWSSESVerifyEmailIdentityResponse : AWSModel @end diff --git a/SES/AWSSESModel.m b/SES/AWSSESModel.m index fd933e607fb..be220ec620f 100644 --- a/SES/AWSSESModel.m +++ b/SES/AWSSESModel.m @@ -14,7 +14,7 @@ */ #import "AWSSESModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSSESErrorDomain = @"com.amazonaws.AWSSESErrorDomain"; @@ -104,9 +104,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)dkimAttributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSESIdentityDkimAttributes class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSESIdentityDkimAttributes class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -132,9 +132,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)notificationAttributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSESIdentityNotificationAttributes class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSESIdentityNotificationAttributes class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -160,9 +160,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)verificationAttributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSESIdentityVerificationAttributes class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSESIdentityVerificationAttributes class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -249,6 +249,7 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"bounceTopic" : @"BounceTopic", @"complaintTopic" : @"ComplaintTopic", + @"deliveryTopic" : @"DeliveryTopic", @"forwardingEnabled" : @"ForwardingEnabled", }; } @@ -401,9 +402,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)timestampJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(NSString *str) { - return [NSDate az_dateFromString:str]; + return [NSDate aws_dateFromString:str]; } reverseBlock:^id(NSDate *date) { - return [date az_stringValue:AZDateISO8601DateFormat1]; + return [date aws_stringValue:AWSDateISO8601DateFormat1]; }]; } @@ -515,6 +516,9 @@ + (NSValueTransformer *)notificationTypeJSONTransformer { if ([value isEqualToString:@"Complaint"]) { return @(AWSSESNotificationTypeComplaint); } + if ([value isEqualToString:@"Delivery"]) { + return @(AWSSESNotificationTypeDelivery); + } return @(AWSSESNotificationTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -522,6 +526,8 @@ + (NSValueTransformer *)notificationTypeJSONTransformer { return @"Bounce"; case AWSSESNotificationTypeComplaint: return @"Complaint"; + case AWSSESNotificationTypeDelivery: + return @"Delivery"; case AWSSESNotificationTypeUnknown: default: return nil; diff --git a/SES/Resources/email-2010-12-01.json b/SES/Resources/email-2010-12-01.json index dda5151347b..b495cfa82f5 100644 --- a/SES/Resources/email-2010-12-01.json +++ b/SES/Resources/email-2010-12-01.json @@ -9,7 +9,7 @@ "xmlNamespace":"http://ses.amazonaws.com/doc/2010-12-01/", "protocol":"query" }, - "documentation":"Amazon Simple Email Service\n

\n This is the API Reference for Amazon Simple Email Service (Amazon SES). This documentation is intended to be\n used in conjunction with the Amazon SES Developer Guide.\n

\n For a list of Amazon SES endpoints to use in service requests, see Regions and Amazon SES \n in the Amazon SES Developer Guide. \n ", + "documentation":"Amazon Simple Email Service

This is the API Reference for Amazon Simple Email Service (Amazon SES). This documentation is intended to be used in conjunction with the Amazon SES Developer Guide.

", "operations":{ "DeleteIdentity":{ "name":"DeleteIdentity", @@ -23,10 +23,10 @@ }, "output":{ "shape":"DeleteIdentityResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", "resultWrapper":"DeleteIdentityResult" }, - "documentation":"

Deletes the specified identity (email address or domain) from the list of verified identities.

\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Sat, 12 May 2012 05:25:58 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=w943pl3zIvtszwzZxypi+LsgjzquvhYhnG42S6b2WLo=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 135\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=DeleteIdentity\n&Identity=domain.com\n&Timestamp=2012-05-12T05%3A25%3A58.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n \n d96bd874-9bf2-11e1-8ee7-c98a0037a2b6\n \n\n \n \n " + "documentation":"

Deletes the specified identity (email address or domain) from the list of verified identities.

This action is throttled at one request per second.

" }, "DeleteVerifiedEmailAddress":{ "name":"DeleteVerifiedEmailAddress", @@ -38,7 +38,7 @@ "shape":"DeleteVerifiedEmailAddressRequest", "documentation":"

Represents a request instructing the service to delete an address from the list of verified email addresses.

" }, - "documentation":"

Deletes the specified email address from the list of verified addresses.

\n The DeleteVerifiedEmailAddress action is deprecated as of the May 15, 2012 release\n of Domain Verification. The DeleteIdentity action is now preferred.\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Thu, 18 Aug 2011 22:20:50 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=Rxzyd6cQe/YjkV4yoQAZ243OzzNjFgrsclizTKwRIRc=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 142\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=DeleteVerifiedEmailAddress\n&EmailAddress=user%40example.com\n&Timestamp=2011-08-18T22%3A20%3A50.000Z\n \n \n \n \n\n \n 5634af08-c865-11e0-8986-3f99a698f914\n \n\n \n \n " + "documentation":"

Deletes the specified email address from the list of verified addresses.

The DeleteVerifiedEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The DeleteIdentity action is now preferred.

This action is throttled at one request per second.

" }, "GetIdentityDkimAttributes":{ "name":"GetIdentityDkimAttributes", @@ -48,14 +48,14 @@ }, "input":{ "shape":"GetIdentityDkimAttributesRequest", - "documentation":"

Given a list of verified identities, describes their DKIM attributes. The DKIM attributes of an email address\n identity includes whether DKIM signing is individually enabled or disabled for that address. The DKIM attributes\n of a domain name identity includes whether DKIM signing is enabled, as well as the DNS records (tokens)\n that must remain published in the domain name's DNS.

" + "documentation":"

Given a list of verified identities, describes their DKIM attributes. The DKIM attributes of an email address identity includes whether DKIM signing is individually enabled or disabled for that address. The DKIM attributes of a domain name identity includes whether DKIM signing is enabled, as well as the DNS records (tokens) that must remain published in the domain name's DNS.

" }, "output":{ "shape":"GetIdentityDkimAttributesResponse", "documentation":"

Represents a list of all the DKIM attributes for the specified identity.

", "resultWrapper":"GetIdentityDkimAttributesResult" }, - "documentation":"

Returns the current status of Easy DKIM signing for an entity. For domain name\n identities, this action also returns the DKIM tokens that are required for Easy DKIM\n signing, and whether Amazon SES has successfully verified that these tokens have been\n published.

\n

This action takes a list of identities as input and returns the following\n information for each:

\n
    \n
  • Whether Easy DKIM signing is enabled or disabled.
  • \n
  • A set of DKIM tokens that represent the identity. If the identity is an email\n address, the tokens represent the domain of that address.
  • \n
  • Whether Amazon SES has successfully verified the DKIM tokens published in the\n domain's DNS. This information is only returned for domain name identities, not for\n email addresses.
  • \n
\n

This action is throttled at one request per second.

\n

For more information about creating DNS records using DKIM tokens, go to the Amazon SES\n Developer Guide.

\n \n \n \nPOST / HTTP/1.1\nDate: Fri, 29 Jun 2012 22:41:32 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE, \n Signature=MJdhrIAt3c4BRC6jdzueMM+AJLEx17bnIHjZwlSenyk=, \n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 165\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=GetIdentityDkimAttributes\n&Identities.member.1=example.com\n&Timestamp=2012-06-29T22%3A41%3A32.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n \n \n amazon.com\n \n true\n Success\n \n vvjuipp74whm76gqoni7qmwwn4w4qusjiainivf6f\n 3frqe7jn4obpuxjpwpolz6ipb3k5nvt2nhjpik2oy\n wrqplteh7oodxnad7hsl4mixg2uavzneazxv5sxi2\n \n \n \n \n \n \n bb5a105d-c468-11e1-82eb-dff885ccc06a\n \n\n \n \n " + "documentation":"

Returns the current status of Easy DKIM signing for an entity. For domain name identities, this action also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES has successfully verified that these tokens have been published.

This action takes a list of identities as input and returns the following information for each:

  • Whether Easy DKIM signing is enabled or disabled.
  • A set of DKIM tokens that represent the identity. If the identity is an email address, the tokens represent the domain of that address.
  • Whether Amazon SES has successfully verified the DKIM tokens published in the domain's DNS. This information is only returned for domain name identities, not for email addresses.

This action is throttled at one request per second.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" }, "GetIdentityNotificationAttributes":{ "name":"GetIdentityNotificationAttributes", @@ -63,16 +63,13 @@ "method":"POST", "requestUri":"/" }, - "input":{ - "shape":"GetIdentityNotificationAttributesRequest", - "documentation":"" - }, + "input":{"shape":"GetIdentityNotificationAttributesRequest"}, "output":{ "shape":"GetIdentityNotificationAttributesResponse", - "documentation":"

Describes whether an identity has a bounce topic or complaint topic set, or feedback \n forwarding enabled.

", + "documentation":"

Describes whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and specifies whether feedback forwarding is enabled for bounce and complaint notifications.

", "resultWrapper":"GetIdentityNotificationAttributesResult" }, - "documentation":"

Given a list of verified identities (email addresses and/or domains), returns a structure describing identity \n notification attributes.

\n

This action is throttled at one request per second.

\n

For more information about feedback notification, see the \n Amazon SES Developer Guide.

\n \n \n \nPOST / HTTP/1.1\nDate: Fri, 15 Jun 2012 20:51:42 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=ee9aH6tUW5wBPoh01Tz3w4H+z4avrMmvmRYbfORC7OI=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 173\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=GetIdentityNotificationAttributes\n&Identities.member.1=user%40example.com\n&Timestamp=2012-06-15T20%3A51%3A42.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n \n \n user@example.com\n \n true\n arn:aws:sns:us-east-1:123456789012:example\n arn:aws:sns:us-east-1:123456789012:example\n \n \n \n \n \n e038e509-b72a-11e1-901f-1fbd90e8104f\n \n\n \n \n " + "documentation":"

Given a list of verified identities (email addresses and/or domains), returns a structure describing identity notification attributes.

This action is throttled at one request per second.

For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide.

" }, "GetIdentityVerificationAttributes":{ "name":"GetIdentityVerificationAttributes", @@ -89,7 +86,7 @@ "documentation":"

Represents the verification attributes for a list of identities.

", "resultWrapper":"GetIdentityVerificationAttributesResult" }, - "documentation":"

Given a list of identities (email addresses and/or domains), returns the verification\n status and (for domain identities) the verification token for each identity.

\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Sat, 12 May 2012 05:27:54 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=3+KQ4VHx991T7Kb41HmFcZJxuHz4/6mf2H5FxY+tuLc=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 203\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=GetIdentityVerificationAttributes\n&Identities.member.1=user%40domain.com\n&Identities.member.2=domain.com\n&Timestamp=2012-05-12T05%3A27%3A54.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n \n \n domain.com\n \n Pending\n QTKknzFg2J4ygwa+XvHAxUl1hyHoY0gVfZdfjIedHZ0=\n \n \n \n user@domain.com\n \n Pending\n \n \n \n \n \n 1d0c29f1-9bf3-11e1-8ee7-c98a0037a2b6\n \n\n \n \n " + "documentation":"

Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity.

This action is throttled at one request per second.

" }, "GetSendQuota":{ "name":"GetSendQuota", @@ -99,10 +96,10 @@ }, "output":{ "shape":"GetSendQuotaResponse", - "documentation":"

Represents the user's current activity limits returned from a successful\n GetSendQuota\n request.\n

", + "documentation":"

Represents the user's current activity limits returned from a successful GetSendQuota request.

", "resultWrapper":"GetSendQuotaResult" }, - "documentation":"

Returns the user's current sending limits.

\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Thu, 18 Aug 2011 22:22:36 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=W1YdiNOtf0jN3t7Lv63qhz7UZc3RrcmQpkGbopvnj/Y=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 94\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=GetSendQuota\n&Timestamp=2011-08-18T22%3A22%3A36.000Z\n \n \n \n \n\n \n 127.0\n 200.0\n 1.0\n \n \n 273021c6-c866-11e0-b926-699e21c3af9e\n \n\n \n \n " + "documentation":"

Returns the user's current sending limits.

This action is throttled at one request per second.

" }, "GetSendStatistics":{ "name":"GetSendStatistics", @@ -112,10 +109,10 @@ }, "output":{ "shape":"GetSendStatisticsResponse", - "documentation":"

Represents a list of\n SendDataPoint\n items returned from a successful\n GetSendStatistics\n request. This list contains aggregated data from the previous two weeks of sending activity.\n

", + "documentation":"

Represents a list of SendDataPoint items returned from a successful GetSendStatistics request. This list contains aggregated data from the previous two weeks of sending activity.

", "resultWrapper":"GetSendStatisticsResult" }, - "documentation":"

Returns the user's sending statistics. The result is a list of data points, representing the last two weeks of\n sending activity.\n

\n

Each data point in the list contains statistics for a 15-minute interval.

\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Thu, 18 Aug 2011 22:23:01 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=kwuk4eraA9HSfHySflgDKR6xK0JXjATIE7Uu5/FB4x4=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 99\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=GetSendStatistics\n&Timestamp=2011-08-18T22%3A23%3A01.000Z\n \n \n \n \n\n \n \n \n 8\n 2011-08-03T19:23:00Z\n 0\n 0\n 0\n \n \n 7\n 2011-08-03T06:53:00Z\n 0\n 0\n 0\n \n\t .\n\t .\n\t .\n\t .\n \n \n c2b66ee5-c866-11e0-b17f-cddb0ab334db\n \n\n \n \n " + "documentation":"

Returns the user's sending statistics. The result is a list of data points, representing the last two weeks of sending activity.

Each data point in the list contains statistics for a 15-minute interval.

This action is throttled at one request per second.

" }, "ListIdentities":{ "name":"ListIdentities", @@ -132,7 +129,7 @@ "documentation":"

Represents a list of all verified identities for the AWS Account.

", "resultWrapper":"ListIdentitiesResult" }, - "documentation":"

Returns a list containing all of the identities (email addresses and domains) for \n a specific AWS Account, regardless of verification status.

\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Sat, 12 May 2012 05:18:45 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=OruiFNV26DCZicLDaQmULHGbjbU8MbC/c5aIo/MMIuM=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 115\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=ListIdentities\n&Timestamp=2012-05-12T05%3A18%3A45.000Z&\nVersion=2010-12-01\n \n \n \n \n\n \n \n example.com\n user@example.com\n \n \n \n cacecf23-9bf1-11e1-9279-0100e8cf109a\n \n\n \n \n " + "documentation":"

Returns a list containing all of the identities (email addresses and domains) for a specific AWS Account, regardless of verification status.

This action is throttled at one request per second.

" }, "ListVerifiedEmailAddresses":{ "name":"ListVerifiedEmailAddresses", @@ -145,7 +142,7 @@ "documentation":"

Represents a list of all the email addresses verified for the current user.

", "resultWrapper":"ListVerifiedEmailAddressesResult" }, - "documentation":"

Returns a list containing all of the email addresses that have been verified.

\n The ListVerifiedEmailAddresses action is deprecated as of the May 15, 2012 release of \n Domain Verification. The ListIdentities action is now preferred.\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Thu, 18 Aug 2011 22:05:09 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=II0+vvDKGMv71vToBwzR6vZ1hxe/VUE8tWEFUNTUqgE=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 108\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=ListVerifiedEmailAddresses\n&Timestamp=2011-08-18T22%3A05%3A09.000Z%\n \n \n \n \n\n \n \n example@amazon.com\n \n \n \n 3dd50e97-c865-11e0-b235-099eb63d928d\n \n\n \n \n " + "documentation":"

Returns a list containing all of the email addresses that have been verified.

The ListVerifiedEmailAddresses action is deprecated as of the May 15, 2012 release of Domain Verification. The ListIdentities action is now preferred.

This action is throttled at one request per second.

" }, "SendEmail":{ "name":"SendEmail", @@ -155,11 +152,11 @@ }, "input":{ "shape":"SendEmailRequest", - "documentation":"

Represents a request instructing the service to send a single email message.

\n

This datatype can be used in application code to compose a message consisting of source, destination, message, reply-to, and return-path\n parts. This object can then be sent using the\n SendEmail\n action.\n

" + "documentation":"

Represents a request instructing the service to send a single email message.

This datatype can be used in application code to compose a message consisting of source, destination, message, reply-to, and return-path parts. This object can then be sent using the SendEmail action.

" }, "output":{ "shape":"SendEmailResponse", - "documentation":"

Represents a unique message ID returned from a successful\n SendEmail\n request.\n

", + "documentation":"

Represents a unique message ID returned from a successful SendEmail request.

", "resultWrapper":"SendEmailResult" }, "errors":[ @@ -171,10 +168,10 @@ "senderFault":true }, "exception":true, - "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more\n information about what caused the error." + "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more information about what caused the error." } ], - "documentation":"

Composes an email message based on input data, and then immediately queues the message\n for sending.\n

\n \n You can only send email from verified email addresses and domains. \n If you have not requested production access to Amazon SES, you must also \n verify every recipient email address except for the recipients provided \n by the Amazon SES mailbox simulator. For more information, go to the\n Amazon SES\n Developer Guide.\n \n

The total size of the message cannot exceed 10 MB.

\n

Amazon SES has a limit on the total number of recipients per message: The combined number\n of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email\n message to a larger audience, you can divide your recipient list into groups of 50 or\n fewer, and then call Amazon SES repeatedly to send the message to each group.\n

\n

For every message that you send, the total number of recipients (To:, CC: and BCC:) is\n counted against your\n sending quota\n - the maximum number of emails you can send in\n a 24-hour period. For information about your sending quota, go to the Amazon SES\n Developer Guide.\n

\n \n \n \nPOST / HTTP/1.1\nDate: Thu, 18 Aug 2011 22:25:27 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=yXx/wM1bESLuDErJ6HpZg9JK8Gjau7EUe4FWEfmhodo=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 230\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=SendEmail\n&Destination.ToAddresses.member.1=allan%40example.com\n&Message.Body.Text.Data=body\n&Message.Subject.Data=Example&Source=user%40example.com\n&Timestamp=2011-08-18T22%3A25%3A27.000Z\n \n \n \n \n\n \n 00000131d51d2292-159ad6eb-077c-46e6-ad09-ae7c05925ed4-000000\n \n \n d5964849-c866-11e0-9beb-01a62d68c57f\n \n\n \n \n " + "documentation":"

Composes an email message based on input data, and then immediately queues the message for sending.

You can only send email from verified email addresses and domains. If you have not requested production access to Amazon SES, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

" }, "SendRawEmail":{ "name":"SendRawEmail", @@ -184,11 +181,11 @@ }, "input":{ "shape":"SendRawEmailRequest", - "documentation":"

Represents a request instructing the service to send a raw email message.

\n

This datatype can be used in application code to compose a message consisting of source, destination, and raw message text. This object can\n then be sent using the\n SendRawEmail\n action.\n

" + "documentation":"

Represents a request instructing the service to send a raw email message.

This datatype can be used in application code to compose a message consisting of source, destination, and raw message text. This object can then be sent using the SendRawEmail action.

" }, "output":{ "shape":"SendRawEmailResponse", - "documentation":"

Represents a unique message ID returned from a successful\n SendRawEmail\n request.\n

", + "documentation":"

Represents a unique message ID returned from a successful SendRawEmail request.

", "resultWrapper":"SendRawEmailResult" }, "errors":[ @@ -200,10 +197,10 @@ "senderFault":true }, "exception":true, - "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more\n information about what caused the error." + "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more information about what caused the error." } ], - "documentation":"

Sends an email message, with header and content specified by the client. The\n SendRawEmail\n action is useful for sending multipart MIME emails. The raw text of the message must comply with Internet\n email standards; otherwise, the message cannot be sent.\n

\n \n You can only send email from verified email addresses and domains. \n If you have not requested production access to Amazon SES, you must also \n verify every recipient email address except for the recipients provided \n by the Amazon SES mailbox simulator. For more information, go to the\n Amazon SES\n Developer Guide.\n \n

The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.

\n

Amazon SES has a limit on the total number of recipients per message: The combined number\n of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email\n message to a larger audience, you can divide your recipient list into groups of 50 or\n fewer, and then call Amazon SES repeatedly to send the message to each group.\n

\n

For every message that you send, the total number of recipients (To:, CC: and BCC:) is\n counted against your\n sending quota\n - the maximum number of emails you can send in\n a 24-hour period. For information about your sending quota, go to the Amazon SES\n Developer Guide.\n

\n \n \n \nPOST / HTTP/1.1\nDate: Wed, 17 Aug 2011 00:21:38 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=uN0lHIf14tmMBzwnkHzaWBLrBFvJAvyXCsfSYAvwLuc=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 230\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=SendRawEmail\n&RawMessage.Data=U3ViamVjdDogRXhhbXBsZQpGcm9tOiBleGFtcGxlQGFtYXpvbi5jb20KVG8\n6IGV4YW1wbGVAYW1h%0Aem9uLmNvbQpDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2\nZTsgYm91bmRhcnk9MDAx%0ANmU2OGY5ZDkyOWNiMDk2MDRhYWE4MzA0MgoKLS0wMDE2ZTY4ZjlkO\nTI5Y2IwOTYwNGFhYTgzMDQy%0ACkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU0\n8tODg1OS0xCgpCb2R5LgoKLS0w%0AMDE2ZTY4ZjlkOTI5Y2IwOTYwNGFhYTgzMDQyCkNvbnRlbnQ\ntVHlwZTogdGV4dC9odG1sOyBjaGFy%0Ac2V0PUlTTy04ODU5LTEKCkJvZHkuPGJyPgoKLS0wMDE2\nZTY4ZjlkOTI5Y2IwOTYwNGFhYTgzMDQy%0ALS0%3D%0A\n&Timestamp=2011-08-17T00%3A21%3A38.000Z\n \n \n \n \n\n \n 00000131d51d6b36-1d4f9293-0aee-4503-b573-9ae4e70e9e38-000000\n \n \n e0abcdfa-c866-11e0-b6d0-273d09173b49\n \n\n \n \n " + "documentation":"

Sends an email message, with header and content specified by the client. The SendRawEmail action is useful for sending multipart MIME emails. The raw text of the message must comply with Internet email standards; otherwise, the message cannot be sent.

You can only send email from verified email addresses and domains. If you have not requested production access to Amazon SES, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

The To:, CC:, and BCC: headers in the raw message can contain a group list. Note that each recipient in a group list counts towards the 50-recipient limit.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

" }, "SetIdentityDkimEnabled":{ "name":"SetIdentityDkimEnabled", @@ -217,10 +214,10 @@ }, "output":{ "shape":"SetIdentityDkimEnabledResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", "resultWrapper":"SetIdentityDkimEnabledResult" }, - "documentation":"

Enables or disables Easy DKIM signing of email sent from an identity:

\n
    \n
  • If Easy DKIM\n signing is enabled for a domain name identity (e.g., example.com), then Amazon SES will DKIM-sign\n all email sent by addresses under that domain name (e.g.,\n user@example.com).
  • \n
  • If Easy DKIM signing is enabled for an email address, then Amazon SES will DKIM-sign\n all email sent by that email address.
  • \n
\n

For email addresses (e.g., user@example.com), you can only enable Easy DKIM signing if the\n corresponding domain (e.g., example.com) has been set up for Easy DKIM using the AWS Console or \n the VerifyDomainDkim action.

\n

This action is throttled at one request per second.

\n

For more information about Easy DKIM signing, go to the \n Amazon SES Developer Guide.

\n \n \n \n \nPOST / HTTP/1.1\nDate: Fri, 29 Jun 2012 22:42:08 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=u/hDNhYm87AV7LAPzouTBz6HJxUEuE5k96sLzYHjR24=, \n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 168\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=SetIdentityDkimEnabled\n&DkimEnabled=true&Identity=user%40example.com\n&Timestamp=2012-06-29T22%3A42%3A08.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n \n 7aa61362-c469-11e1-aee5-6bbb4608fbcc\n \n\n \n \n " + "documentation":"

Enables or disables Easy DKIM signing of email sent from an identity:

  • If Easy DKIM signing is enabled for a domain name identity (e.g., example.com), then Amazon SES will DKIM-sign all email sent by addresses under that domain name (e.g., user@example.com).
  • If Easy DKIM signing is enabled for an email address, then Amazon SES will DKIM-sign all email sent by that email address.

For email addresses (e.g., user@example.com), you can only enable Easy DKIM signing if the corresponding domain (e.g., example.com) has been set up for Easy DKIM using the AWS Console or the VerifyDomainDkim action.

This action is throttled at one request per second.

For more information about Easy DKIM signing, go to the Amazon SES Developer Guide.

" }, "SetIdentityFeedbackForwardingEnabled":{ "name":"SetIdentityFeedbackForwardingEnabled", @@ -231,10 +228,10 @@ "input":{"shape":"SetIdentityFeedbackForwardingEnabledRequest"}, "output":{ "shape":"SetIdentityFeedbackForwardingEnabledResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", "resultWrapper":"SetIdentityFeedbackForwardingEnabledResult" }, - "documentation":"

Given an identity (email address or domain), enables or disables whether Amazon SES forwards \n feedback notifications as email. Feedback forwarding may only be disabled when both complaint \n and bounce topics are set.

\n

This action is throttled at one request per second.

\n

For more information about feedback notification, \n see the Amazon SES Developer Guide.

\n \n \n \nPOST / HTTP/1.1\nDate: Fri, 15 Jun 2012 20:31:21 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=juNpmD6UJaN+r7gcLa2ZNZpO3AmF1ZfOkD6PgxgNhRA=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 188\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=SetIdentityFeedbackForwardingEnabled\n&ForwardingEnabled=true\n&Identity=user%40example.com\n&Timestamp=2012-06-15T20%3A31%3A21.000Z\n&Version=2010-12-01\n\n \n \n \n \n\n \n \n 299f4af4-b72a-11e1-901f-1fbd90e8104f\n \n\n \n \n " + "documentation":"

Given an identity (email address or domain), enables or disables whether Amazon SES forwards bounce and complaint notifications as email. Feedback forwarding can only be disabled when Amazon Simple Notification Service (Amazon SNS) topics are specified for both bounces and complaints.

This action is throttled at one request per second.

For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide.

" }, "SetIdentityNotificationTopic":{ "name":"SetIdentityNotificationTopic", @@ -248,10 +245,10 @@ }, "output":{ "shape":"SetIdentityNotificationTopicResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", "resultWrapper":"SetIdentityNotificationTopicResult" }, - "documentation":"

Given an identity (email address or domain), sets the Amazon SNS topic to which Amazon SES will publish \n bounce and complaint notifications for emails sent with that identity as the Source. \n Publishing to topics may only be disabled when feedback forwarding is enabled.

\n

This action is throttled at one request per second.

\n

For more information about feedback notification, see the\n Amazon SES Developer Guide.

\n \n \n \nPOST / HTTP/1.1\nDate: Sat, 12 May 2012 05:27:54 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=3+KQ4VHx991T7Kb41HmFcZJxuHz4/6mf2H5FxY+tuLc=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 203\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=SetIdentityNotificationTopic\n&Identity=user@example.com\n&SnsTopic=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3Aexample\n&NotificationType=Bounce\n&Timestamp=2012-05-12T05%3A27%3A54.000Z&Version=2010-12-01\n \n \n \n \n\n \n \n 299f4af4-b72a-11e1-901f-1fbd90e8104f\n \n\n \n \n " + "documentation":"

Given an identity (email address or domain), sets the Amazon Simple Notification Service (Amazon SNS) topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with that identity as the Source.

This action is throttled at one request per second.

For more information about feedback notification, see the Amazon SES Developer Guide.

" }, "VerifyDomainDkim":{ "name":"VerifyDomainDkim", @@ -265,10 +262,10 @@ }, "output":{ "shape":"VerifyDomainDkimResponse", - "documentation":"

Represents the DNS records that must be published in the domain name's DNS to complete\n DKIM setup.

", + "documentation":"

Represents the DNS records that must be published in the domain name's DNS to complete DKIM setup.

", "resultWrapper":"VerifyDomainDkimResult" }, - "documentation":"

Returns a set of DKIM tokens for a domain. DKIM tokens are character strings that\n represent your domain's identity. Using these tokens, you will need to create DNS CNAME\n records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will\n eventually detect that you have updated your DNS records; this detection process may\n take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign\n email originating from that domain.

\n

This action is throttled at one request per second.

\n

To enable or disable Easy DKIM signing for\n a domain, use the SetIdentityDkimEnabled action.

\n

For more information about creating DNS records using DKIM tokens, go to the Amazon SES\n Developer Guide.

\n \n \n \nPOST / HTTP/1.1\nDate: Fri, 29 Jun 2012 22:43:30 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=roXhd+JhEjeBBo5tSERhrptRHSw4XHz6Ra4BXyHIduk=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 136\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=VerifyDomainDkim\n&Domain=example.com\n&Timestamp=2012-06-29T22%3A43%3A30.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n \n vvjuipp74whm76gqoni7qmwwn4w4qusjiainivf6sf\n 3frqe7jn4obpuxjpwpolz6ipb3k5nvt2nhjpik2oy\n wrqplteh7oodxnad7hsl4mixg2uavzneazxv5sxi2\n \n \n \n 9662c15b-c469-11e1-99d1-797d6ecd6414\n \n\n\n \n " + "documentation":"

Returns a set of DKIM tokens for a domain. DKIM tokens are character strings that represent your domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain.

This action is throttled at one request per second.

To enable or disable Easy DKIM signing for a domain, use the SetIdentityDkimEnabled action.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" }, "VerifyDomainIdentity":{ "name":"VerifyDomainIdentity", @@ -285,7 +282,7 @@ "documentation":"

Represents a token used for domain ownership verification.

", "resultWrapper":"VerifyDomainIdentityResult" }, - "documentation":"

Verifies a domain.

\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Sat, 12 May 2012 05:24:02 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=Wr+6RCfV+QgjLki2dtIrlecMK9+RrsDaTG5uWneDAu8=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 139\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=VerifyDomainIdentity\n&Domain=domain.com\n&Timestamp=2012-05-12T05%3A24%3A02.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n QTKknzFg2J4ygwa+XvHAxUl1hyHoY0gVfZdfjIedHZ0=\n \n \n 94f6368e-9bf2-11e1-8ee7-c98a0037a2b6\n \n\n \n \n " + "documentation":"

Verifies a domain.

This action is throttled at one request per second.

" }, "VerifyEmailAddress":{ "name":"VerifyEmailAddress", @@ -297,7 +294,7 @@ "shape":"VerifyEmailAddressRequest", "documentation":"

Represents a request instructing the service to begin email address verification.

" }, - "documentation":"

Verifies an email address. This action causes a confirmation email message to be \n sent to the specified address.

\n The VerifyEmailAddress action is deprecated as of the May 15, 2012 release\n of Domain Verification. The VerifyEmailIdentity action is now preferred.\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Thu, 18 Aug 2011 22:28:27 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=o9NK68jraFg5BnaTQiQhpxj2x1dGONOEFHHgsM6o5as=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 132\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=VerifyEmailAddress\n&EmailAddress=user%40example.com\n&Timestamp=2011-08-18T22%3A28%3A27.000Z\n \n \n \n \n\n \n 8edd7eb2-c864-11e0-9f8f-3da8fc215a7e\n \n\n \n \n " + "documentation":"

Verifies an email address. This action causes a confirmation email message to be sent to the specified address.

The VerifyEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The VerifyEmailIdentity action is now preferred.

This action is throttled at one request per second.

" }, "VerifyEmailIdentity":{ "name":"VerifyEmailIdentity", @@ -311,10 +308,10 @@ }, "output":{ "shape":"VerifyEmailIdentityResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", "resultWrapper":"VerifyEmailIdentityResult" }, - "documentation":"

Verifies an email address. This action causes a confirmation email message\n to be sent to the specified address.

\n

This action is throttled at one request per second.

\n \n \n \nPOST / HTTP/1.1\nDate: Sat, 12 May 2012 05:21:58 GMT\nHost: email.us-east-1.amazonaws.com\nContent-Type: application/x-www-form-urlencoded\nX-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,\n Signature=hQJj2pxypqJHQgU/BW1EZGUiNIYGhkQDf7tI6UgQ2qw=,\n Algorithm=HmacSHA256, SignedHeaders=Date;Host\nContent-Length: 151\n\nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Action=VerifyEmailIdentity\n&EmailAddress=user%40domain.com\n&Timestamp=2012-05-12T05%3A21%3A58.000Z\n&Version=2010-12-01\n \n \n \n \n\n \n \n 47e0ef1a-9bf2-11e1-9279-0100e8cf109a\n \n\n \n \n " + "documentation":"

Verifies an email address. This action causes a confirmation email message to be sent to the specified address.

This action is throttled at one request per second.

" } }, "shapes":{ @@ -328,14 +325,14 @@ "members":{ "Text":{ "shape":"Content", - "documentation":"

The content of the message, in text format. Use this for text-based email clients, or clients on high-latency networks (such as mobile\n devices).\n

" + "documentation":"

The content of the message, in text format. Use this for text-based email clients, or clients on high-latency networks (such as mobile devices).

" }, "Html":{ "shape":"Content", - "documentation":"

The content of the message, in HTML format. Use this for email clients that can process HTML. You can include clickable links, formatted\n text, and much more in an HTML message.\n

" + "documentation":"

The content of the message, in HTML format. Use this for email clients that can process HTML. You can include clickable links, formatted text, and much more in an HTML message.

" } }, - "documentation":"

Represents the body of the message. You can specify text, HTML, or both. If you use both, then\n the message should display correctly in the widest variety of email clients.\n

" + "documentation":"

Represents the body of the message. You can specify text, HTML, or both. If you use both, then the message should display correctly in the widest variety of email clients.

" }, "Charset":{"type":"string"}, "Content":{ @@ -351,7 +348,7 @@ "documentation":"

The character set of the content.

" } }, - "documentation":"

Represents textual data, plus an optional character set specification.

\n

By default, the text must be 7-bit ASCII, due to the constraints of the SMTP protocol. If the text must\n contain any other characters, then you must also specify a character set. Examples include UTF-8, ISO-8859-1,\n and Shift_JIS.\n

" + "documentation":"

Represents textual data, plus an optional character set specification.

By default, the text must be 7-bit ASCII, due to the constraints of the SMTP protocol. If the text must contain any other characters, then you must also specify a character set. Examples include UTF-8, ISO-8859-1, and Shift_JIS.

" }, "Counter":{"type":"long"}, "DeleteIdentityRequest":{ @@ -369,7 +366,7 @@ "type":"structure", "members":{ }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" }, "DeleteVerifiedEmailAddressRequest":{ "type":"structure", @@ -398,7 +395,7 @@ "documentation":"

The BCC: field(s) of the message.

" } }, - "documentation":"

Represents the destination of the message, consisting of To:, CC:, and BCC: fields.

\n

\n By default, the string must be 7-bit ASCII. If the text must contain any other characters, \n then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. \n MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. \n For more information, see RFC 2047.\n

" + "documentation":"

Represents the destination of the message, consisting of To:, CC:, and BCC: fields.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

" }, "DkimAttributes":{ "type":"map", @@ -416,7 +413,7 @@ "documentation":"

A list of one or more verified identities - email addresses, domains, or both.

" } }, - "documentation":"

Given a list of verified identities, describes their DKIM attributes. The DKIM attributes of an email address\n identity includes whether DKIM signing is individually enabled or disabled for that address. The DKIM attributes\n of a domain name identity includes whether DKIM signing is enabled, as well as the DNS records (tokens)\n that must remain published in the domain name's DNS.

" + "documentation":"

Given a list of verified identities, describes their DKIM attributes. The DKIM attributes of an email address identity includes whether DKIM signing is individually enabled or disabled for that address. The DKIM attributes of a domain name identity includes whether DKIM signing is enabled, as well as the DNS records (tokens) that must remain published in the domain name's DNS.

" }, "GetIdentityDkimAttributesResponse":{ "type":"structure", @@ -437,8 +434,7 @@ "shape":"IdentityList", "documentation":"

A list of one or more identities.

" } - }, - "documentation":"" + } }, "GetIdentityNotificationAttributesResponse":{ "type":"structure", @@ -449,7 +445,7 @@ "documentation":"

A map of Identity to IdentityNotificationAttributes.

" } }, - "documentation":"

Describes whether an identity has a bounce topic or complaint topic set, or feedback \n forwarding enabled.

" + "documentation":"

Describes whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and specifies whether feedback forwarding is enabled for bounce and complaint notifications.

" }, "GetIdentityVerificationAttributesRequest":{ "type":"structure", @@ -489,7 +485,7 @@ "documentation":"

The number of emails sent during the previous 24 hours.

" } }, - "documentation":"

Represents the user's current activity limits returned from a successful\n GetSendQuota\n request.\n

" + "documentation":"

Represents the user's current activity limits returned from a successful GetSendQuota request.

" }, "GetSendStatisticsResponse":{ "type":"structure", @@ -499,7 +495,7 @@ "documentation":"

A list of data points, each of which represents 15 minutes of activity.

" } }, - "documentation":"

Represents a list of\n SendDataPoint\n items returned from a successful\n GetSendStatistics\n request. This list contains aggregated data from the previous two weeks of sending activity.\n

" + "documentation":"

Represents a list of SendDataPoint items returned from a successful GetSendStatistics request. This list contains aggregated data from the previous two weeks of sending activity.

" }, "Identity":{"type":"string"}, "IdentityDkimAttributes":{ @@ -515,11 +511,11 @@ }, "DkimVerificationStatus":{ "shape":"VerificationStatus", - "documentation":"

Describes whether Amazon SES has successfully verified the DKIM DNS records\n (tokens) published in the domain name's DNS. (This only applies to domain identities, not email address identities.)

" + "documentation":"

Describes whether Amazon SES has successfully verified the DKIM DNS records (tokens) published in the domain name's DNS. (This only applies to domain identities, not email address identities.)

" }, "DkimTokens":{ "shape":"VerificationTokenList", - "documentation":"

A set of character strings that represent the domain's identity. Using these tokens, you\n will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon\n SES. Amazon Web Services will eventually detect that you have updated your DNS records;\n this detection process may take up to 72 hours. Upon successful detection, Amazon SES\n will be able to DKIM-sign email originating from that domain. (This only applies to\n domain identities, not email address identities.)

\n

For more information about creating DNS records using DKIM tokens, go to the Amazon SES\n Developer Guide.

" + "documentation":"

A set of character strings that represent the domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain. (This only applies to domain identities, not email address identities.)

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" } }, "documentation":"

Represents the DKIM attributes of a verified email address or a domain.

" @@ -533,23 +529,28 @@ "required":[ "BounceTopic", "ComplaintTopic", + "DeliveryTopic", "ForwardingEnabled" ], "members":{ "BounceTopic":{ "shape":"NotificationTopic", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic \n where Amazon SES will publish bounce notifications.

" + "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish bounce notifications.

" }, "ComplaintTopic":{ "shape":"NotificationTopic", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic \n where Amazon SES will publish complaint notifications.

" + "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish complaint notifications.

" + }, + "DeliveryTopic":{ + "shape":"NotificationTopic", + "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish delivery notifications.

" }, "ForwardingEnabled":{ "shape":"Enabled", - "documentation":"

Describes whether Amazon SES will forward feedback as email. true indicates \n that Amazon SES will forward feedback as email, while false indicates that \n feedback will be published only to the specified Bounce and Complaint topics.

" + "documentation":"

Describes whether Amazon SES will forward bounce and complaint notifications as email. true indicates that Amazon SES will forward bounce and complaint notifications as email, while false indicates that bounce and complaint notifications will be published only to the specified bounce and complaint Amazon SNS topics.

" } }, - "documentation":"

Represents the notification attributes of an identity, including whether a bounce \n or complaint topic are set, and whether feedback forwarding is enabled.

" + "documentation":"

Represents the notification attributes of an identity, including whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and whether feedback forwarding is enabled for bounce and complaint notifications.

" }, "IdentityType":{ "type":"string", @@ -649,7 +650,7 @@ "senderFault":true }, "exception":true, - "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more\n information about what caused the error." + "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more information about what caused the error." }, "NextToken":{"type":"string"}, "NotificationAttributes":{ @@ -662,7 +663,8 @@ "type":"string", "enum":[ "Bounce", - "Complaint" + "Complaint", + "Delivery" ] }, "RawMessage":{ @@ -671,7 +673,7 @@ "members":{ "Data":{ "shape":"RawMessageData", - "documentation":"

The raw data of the message. The client must ensure that the message format complies with Internet email\n standards regarding email header fields, MIME types, MIME encoding, and base64 encoding (if necessary).\n

\n

For more information, go to the Amazon SES Developer Guide.\n

" + "documentation":"

The raw data of the message. The client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, MIME encoding, and base64 encoding (if necessary).

The To:, CC:, and BCC: headers in the raw message can contain a group list.

For more information, go to the Amazon SES Developer Guide.

" } }, "documentation":"

Represents the raw data of the message.

" @@ -701,7 +703,7 @@ "documentation":"

Number of emails rejected by Amazon SES.

" } }, - "documentation":"

Represents sending statistics data. Each\n SendDataPoint\n contains statistics for a 15-minute period of sending activity.\n

" + "documentation":"

Represents sending statistics data. Each SendDataPoint contains statistics for a 15-minute period of sending activity.

" }, "SendDataPointList":{ "type":"list", @@ -717,7 +719,7 @@ "members":{ "Source":{ "shape":"Address", - "documentation":"

The identity's email address.

\n

\n By default, the string must be 7-bit ASCII. If the text must contain any other characters, \n then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. \n MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. \n For more information, see RFC 2047.\n

" + "documentation":"

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

" }, "Destination":{ "shape":"Destination", @@ -729,14 +731,14 @@ }, "ReplyToAddresses":{ "shape":"AddressList", - "documentation":"

The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address\n will receive the reply.\n

" + "documentation":"

The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.

" }, "ReturnPath":{ "shape":"Address", - "documentation":"

The email address to which bounce notifications are to be forwarded. If the message cannot be delivered to the\n recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded\n to the email address specified by the\n ReturnPath\n parameter.\n

" + "documentation":"

The email address to which bounces and complaints are to be forwarded when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter.

" } }, - "documentation":"

Represents a request instructing the service to send a single email message.

\n

This datatype can be used in application code to compose a message consisting of source, destination, message, reply-to, and return-path\n parts. This object can then be sent using the\n SendEmail\n action.\n

" + "documentation":"

Represents a request instructing the service to send a single email message.

This datatype can be used in application code to compose a message consisting of source, destination, message, reply-to, and return-path parts. This object can then be sent using the SendEmail action.

" }, "SendEmailResponse":{ "type":"structure", @@ -744,10 +746,10 @@ "members":{ "MessageId":{ "shape":"MessageId", - "documentation":"

The unique message identifier returned from the\n SendEmail\n action.\n

" + "documentation":"

The unique message identifier returned from the SendEmail action.

" } }, - "documentation":"

Represents a unique message ID returned from a successful\n SendEmail\n request.\n

" + "documentation":"

Represents a unique message ID returned from a successful SendEmail request.

" }, "SendRawEmailRequest":{ "type":"structure", @@ -755,18 +757,18 @@ "members":{ "Source":{ "shape":"Address", - "documentation":"

The identity's email address.

\n

\n By default, the string must be 7-bit ASCII. If the text must contain any other characters, \n then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. \n MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. \n For more information, see RFC 2047.\n

\n If you specify the\n Source\n parameter, then bounce notifications and\n complaints will be sent to this email address. This takes precedence over any\n Return-Path\n header that you might include in the raw text of the message.\n " + "documentation":"

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

" }, "Destinations":{ "shape":"AddressList", - "documentation":"

A list of destinations for the message.

" + "documentation":"

A list of destinations for the message, consisting of To:, CC:, and BCC: addresses.

" }, "RawMessage":{ "shape":"RawMessage", - "documentation":"

The raw text of the message. The client is responsible for ensuring the following:

\n

\n

    \n
  • Message must contain a header and a body, separated by a blank line.
  • \n
  • All required header fields must be present.
  • \n
  • Each part of a multipart MIME message must be formatted properly.
  • \n
  • MIME content types must be among those supported by Amazon SES. For more information, go to the\n Amazon SES\n Developer Guide.\n
  • \n
  • Content must be base64-encoded, if MIME requires it.
  • \n
\n

" + "documentation":"

The raw text of the message. The client is responsible for ensuring the following:

  • Message must contain a header and a body, separated by a blank line.
  • All required header fields must be present.
  • Each part of a multipart MIME message must be formatted properly.
  • MIME content types must be among those supported by Amazon SES. For more information, go to the Amazon SES Developer Guide.
  • Content must be base64-encoded, if MIME requires it.

" } }, - "documentation":"

Represents a request instructing the service to send a raw email message.

\n

This datatype can be used in application code to compose a message consisting of source, destination, and raw message text. This object can\n then be sent using the\n SendRawEmail\n action.\n

" + "documentation":"

Represents a request instructing the service to send a raw email message.

This datatype can be used in application code to compose a message consisting of source, destination, and raw message text. This object can then be sent using the SendRawEmail action.

" }, "SendRawEmailResponse":{ "type":"structure", @@ -774,10 +776,10 @@ "members":{ "MessageId":{ "shape":"MessageId", - "documentation":"

The unique message identifier returned from the\n SendRawEmail\n action.\n

" + "documentation":"

The unique message identifier returned from the SendRawEmail action.

" } }, - "documentation":"

Represents a unique message ID returned from a successful\n SendRawEmail\n request.\n

" + "documentation":"

Represents a unique message ID returned from a successful SendRawEmail request.

" }, "SentLast24Hours":{"type":"double"}, "SetIdentityDkimEnabledRequest":{ @@ -793,7 +795,7 @@ }, "DkimEnabled":{ "shape":"Enabled", - "documentation":"

Sets whether DKIM signing is enabled for an identity. Set to true to enable DKIM signing for this identity; \n false to disable it.

" + "documentation":"

Sets whether DKIM signing is enabled for an identity. Set to true to enable DKIM signing for this identity; false to disable it.

" } }, "documentation":"

Represents a request instructing the service to enable or disable DKIM signing for an identity.

" @@ -802,7 +804,7 @@ "type":"structure", "members":{ }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" }, "SetIdentityFeedbackForwardingEnabledRequest":{ "type":"structure", @@ -813,11 +815,11 @@ "members":{ "Identity":{ "shape":"Identity", - "documentation":"

The identity for which to set feedback notification forwarding. \n Examples: user@example.com, example.com.

" + "documentation":"

The identity for which to set bounce and complaint notification forwarding. Examples: user@example.com, example.com.

" }, "ForwardingEnabled":{ "shape":"Enabled", - "documentation":"

Sets whether Amazon SES will forward feedback notifications as email. true specifies \n that Amazon SES will forward feedback notifications as email, in addition to any Amazon SNS topic publishing \n otherwise specified. false specifies that Amazon SES\n will publish feedback notifications only through Amazon SNS. This value can only be \n set to false when topics are specified for both Bounce and \n Complaint topic types.

" + "documentation":"

Sets whether Amazon SES will forward bounce and complaint notifications as email. true specifies that Amazon SES will forward bounce and complaint notifications as email, in addition to any Amazon SNS topic publishing otherwise specified. false specifies that Amazon SES will publish bounce and complaint notifications only through Amazon SNS. This value can only be set to false when Amazon SNS topics are set for both Bounce and Complaint notification types.

" } } }, @@ -825,7 +827,7 @@ "type":"structure", "members":{ }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" }, "SetIdentityNotificationTopicRequest":{ "type":"structure", @@ -836,15 +838,15 @@ "members":{ "Identity":{ "shape":"Identity", - "documentation":"

The identity for which the topic will be set. Examples: user@example.com, example.com.

" + "documentation":"

The identity for which the Amazon SNS topic will be set. Examples: user@example.com, example.com.

" }, "NotificationType":{ "shape":"NotificationType", - "documentation":"

The type of feedback notifications that will be published to the specified topic.

" + "documentation":"

The type of notifications that will be published to the specified Amazon SNS topic.

" }, "SnsTopic":{ "shape":"NotificationTopic", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (Amazon SNS) topic. \n If the parameter is omitted from the request or a null value is passed, the topic is cleared and publishing is disabled.

" + "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter is omitted from the request or a null value is passed, SnsTopic is cleared and publishing is disabled.

" } }, "documentation":"

Represents a request to set or clear an identity's notification topic.

" @@ -853,7 +855,7 @@ "type":"structure", "members":{ }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" }, "Timestamp":{"type":"timestamp"}, "VerificationAttributes":{ @@ -893,10 +895,10 @@ "members":{ "DkimTokens":{ "shape":"VerificationTokenList", - "documentation":"

A set of character strings that represent the domain's identity. If the identity is an\n email address, the tokens represent the domain of that address.

\n

Using these tokens, you will need to create DNS CNAME records that point to DKIM public\n keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have\n updated your DNS records; this detection process may take up to 72 hours. Upon\n successful detection, Amazon SES will be able to DKIM-sign emails originating from that\n domain.

\n

For more information about creating DNS records using DKIM tokens, go to the Amazon SES\n Developer Guide.

" + "documentation":"

A set of character strings that represent the domain's identity. If the identity is an email address, the tokens represent the domain of that address.

Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign emails originating from that domain.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" } }, - "documentation":"

Represents the DNS records that must be published in the domain name's DNS to complete\n DKIM setup.

" + "documentation":"

Represents the DNS records that must be published in the domain name's DNS to complete DKIM setup.

" }, "VerifyDomainIdentityRequest":{ "type":"structure", @@ -946,7 +948,7 @@ "type":"structure", "members":{ }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" + "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" } } } diff --git a/SNS/AWSSNS.h b/SNS/AWSSNS.h index 12a4a375f92..6b1da2c4403 100644 --- a/SNS/AWSSNS.h +++ b/SNS/AWSSNS.h @@ -20,19 +20,18 @@ @class BFTask; /** - * Amazon Simple Notification Service

Amazon Simple Notification Service (Amazon SNS) is a web service that enables you to build distributed web-enabled applications. Applications can use Amazon SNS to easily push real-time notification messages to interested subscribers over multiple delivery protocols. For more information about this product see http://aws.amazon.com/sns. For detailed information about Amazon SNS features and their associated API calls, see the Amazon SNS Developer Guide.

We also provide SDKs that enable you to access Amazon SNS from your preferred programming language.The SDKs contain functionality that automatically takes care of tasks such as: cryptographically signing your service requests,retrying requests, and handling error responses. For a list of available SDKs, go to Tools for Amazon Web Services.

+ * Amazon Simple Notification Service

Amazon Simple Notification Service (Amazon SNS) is a web service that enables you to build distributed web-enabled applications. Applications can use Amazon SNS to easily push real-time notification messages to interested subscribers over multiple delivery protocols. For more information about this product see http://aws.amazon.com/sns. For detailed information about Amazon SNS features and their associated API calls, see the Amazon SNS Developer Guide.

We also provide SDKs that enable you to access Amazon SNS from your preferred programming language. The SDKs contain functionality that automatically takes care of tasks such as: cryptographically signing your service requests, retrying requests, and handling error responses. For a list of available SDKs, go to Tools for Amazon Web Services.

*/ @interface AWSSNS : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultSNS; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

The AddPermission action adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions.

+ *

Adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions.

* * @param request A container for the necessary parameters to execute the AddPermission service method. * @@ -43,7 +42,7 @@ - (BFTask *)addPermission:(AWSSNSAddPermissionInput *)request; /** - *

The ConfirmSubscription action verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe flag is set to "true".

+ *

Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe flag is set to "true".

* * @param request A container for the necessary parameters to execute the ConfirmSubscription service method. * @@ -55,7 +54,7 @@ - (BFTask *)confirmSubscription:(AWSSNSConfirmSubscriptionInput *)request; /** - *

The CreatePlatformApplication action creates a platform application object for one of the supported push notification services,such as APNS and GCM, to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when usingthe CreatePlatformApplication action. The PlatformPrincipal is received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is "SSL certificate".For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is "client id". The PlatformCredential is also received from the notification service.For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, PlatformCredential is "API key". For ADM, PlatformCredential is "client secret". The PlatformApplicationArn that is returned when using CreatePlatformApplication is then used as an attribute for the CreatePlatformEndpoint action. For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Creates a platform application object for one of the supported push notification services, such as APNS and GCM, to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when using the CreatePlatformApplication action. The PlatformPrincipal is received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is "SSL certificate". For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is "client id". The PlatformCredential is also received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, PlatformCredential is "API key". For ADM, PlatformCredential is "client secret". The PlatformApplicationArn that is returned when using CreatePlatformApplication is then used as an attribute for the CreatePlatformEndpoint action. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the CreatePlatformApplication service method. * @@ -67,7 +66,7 @@ - (BFTask *)createPlatformApplication:(AWSSNSCreatePlatformApplicationInput *)request; /** - *

The CreatePlatformEndpoint creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM and APNS.CreatePlatformEndpoint requires the PlatformApplicationArn that is returned from CreatePlatformApplication. The EndpointArn that is returned when using CreatePlatformEndpoint can then be used by the Publish action to send a message to a mobile app or by the Subscribeaction for subscription to a topic. For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM and APNS. CreatePlatformEndpoint requires the PlatformApplicationArn that is returned from CreatePlatformApplication. The EndpointArn that is returned when using CreatePlatformEndpoint can then be used by the Publish action to send a message to a mobile app or by the Subscribe action for subscription to a topic. The CreatePlatformEndpoint action is idempotent, so if the requester already owns an endpoint with the same device token and attributes, that endpoint's ARN is returned without creating a new endpoint. For more information, see Using Amazon SNS Mobile Push Notifications.

When using CreatePlatformEndpoint with Baidu, two attributes must be provided: ChannelId and UserId. The token field must also contain the ChannelId. For more information, see Creating an Amazon SNS Endpoint for Baidu.

* * @param request A container for the necessary parameters to execute the CreatePlatformEndpoint service method. * @@ -79,7 +78,7 @@ - (BFTask *)createPlatformEndpoint:(AWSSNSCreatePlatformEndpointInput *)request; /** - *

The CreateTopic action creates a topic to which notifications can be published. Users can createat most 100 topics. For more information, see http://aws.amazon.com/sns. This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic.

+ *

Creates a topic to which notifications can be published. Users can create at most 3000 topics. For more information, see http://aws.amazon.com/sns. This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic.

* * @param request A container for the necessary parameters to execute the CreateTopic service method. * @@ -91,7 +90,7 @@ - (BFTask *)createTopic:(AWSSNSCreateTopicInput *)request; /** - *

The DeleteEndpoint action, which is idempotent, deletes the endpoint from SNS.For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Deletes the endpoint from Amazon SNS. This action is idempotent. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the DeleteEndpoint service method. * @@ -102,7 +101,7 @@ - (BFTask *)deleteEndpoint:(AWSSNSDeleteEndpointInput *)request; /** - *

The DeletePlatformApplication action deletes a platform application object for one of the supported push notification services,such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Deletes a platform application object for one of the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the DeletePlatformApplication service method. * @@ -113,7 +112,7 @@ - (BFTask *)deletePlatformApplication:(AWSSNSDeletePlatformApplicationInput *)request; /** - *

The DeleteTopic action deletes a topic and all its subscriptions. Deleting a topic might prevent some messages previously sent to the topic from being delivered to subscribers. This action is idempotent, so deleting a topic that does not exist does not result in an error.

+ *

Deletes a topic and all its subscriptions. Deleting a topic might prevent some messages previously sent to the topic from being delivered to subscribers. This action is idempotent, so deleting a topic that does not exist does not result in an error.

* * @param request A container for the necessary parameters to execute the DeleteTopic service method. * @@ -124,7 +123,7 @@ - (BFTask *)deleteTopic:(AWSSNSDeleteTopicInput *)request; /** - *

The GetEndpointAttributes retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM and APNS.For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the GetEndpointAttributes service method. * @@ -136,7 +135,7 @@ - (BFTask *)getEndpointAttributes:(AWSSNSGetEndpointAttributesInput *)request; /** - *

The GetPlatformApplicationAttributes action retrieves the attributes of the platform application object for the supported push notification services,such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Retrieves the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the GetPlatformApplicationAttributes service method. * @@ -148,7 +147,7 @@ - (BFTask *)getPlatformApplicationAttributes:(AWSSNSGetPlatformApplicationAttributesInput *)request; /** - *

The GetSubscriptionAttribtues action returns all of the properties of a subscription.

+ *

Returns all of the properties of a subscription.

* * @param request A container for the necessary parameters to execute the GetSubscriptionAttributes service method. * @@ -160,7 +159,7 @@ - (BFTask *)getSubscriptionAttributes:(AWSSNSGetSubscriptionAttributesInput *)request; /** - *

The GetTopicAttributes action returns all of the properties of a topic.Topic properties returned might differ based on the authorization of the user.

+ *

Returns all of the properties of a topic. Topic properties returned might differ based on the authorization of the user.

* * @param request A container for the necessary parameters to execute the GetTopicAttributes service method. * @@ -172,7 +171,7 @@ - (BFTask *)getTopicAttributes:(AWSSNSGetTopicAttributesInput *)request; /** - *

The ListEndpointsByPlatformApplication action lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM and APNS.The results for ListEndpointsByPlatformApplication are paginated and return a limited list of endpoints, up to 100. If additional records are available after the first page results, then a NextToken string will be returned.To receive the next page, you call ListEndpointsByPlatformApplication again using the NextToken string received from the previous call.When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM and APNS. The results for ListEndpointsByPlatformApplication are paginated and return a limited list of endpoints, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListEndpointsByPlatformApplication again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the ListEndpointsByPlatformApplication service method. * @@ -184,7 +183,7 @@ - (BFTask *)listEndpointsByPlatformApplication:(AWSSNSListEndpointsByPlatformApplicationInput *)request; /** - *

The ListPlatformApplications action lists the platform application objects for the supported push notification services,such as APNS and GCM. The results for ListPlatformApplications are paginated and return a limited list of applications, up to 100. If additional records are available after the first page results, then a NextToken string will be returned.To receive the next page, you call ListPlatformApplications using the NextToken string received from the previous call.When there are no more records to return, NextToken will be null.For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Lists the platform application objects for the supported push notification services, such as APNS and GCM. The results for ListPlatformApplications are paginated and return a limited list of applications, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListPlatformApplications using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the ListPlatformApplications service method. * @@ -196,7 +195,7 @@ - (BFTask *)listPlatformApplications:(AWSSNSListPlatformApplicationsInput *)request; /** - *

The ListSubscriptions action returns a list of the requester's subscriptions. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in anew ListSubscriptions call to get further results.

+ *

Returns a list of the requester's subscriptions. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptions call to get further results.

* * @param request A container for the necessary parameters to execute the ListSubscriptions service method. * @@ -208,7 +207,7 @@ - (BFTask *)listSubscriptions:(AWSSNSListSubscriptionsInput *)request; /** - *

The ListSubscriptionsByTopic action returns a list of the subscriptions to a specific topic. Each call returnsa limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextTokenparameter in a new ListSubscriptionsByTopic call to get further results.

+ *

Returns a list of the subscriptions to a specific topic. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptionsByTopic call to get further results.

* * @param request A container for the necessary parameters to execute the ListSubscriptionsByTopic service method. * @@ -220,7 +219,7 @@ - (BFTask *)listSubscriptionsByTopic:(AWSSNSListSubscriptionsByTopicInput *)request; /** - *

The ListTopics action returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If there are more topics, a NextToken is also returned. Use the NextToken parameter in a new ListTopics call to get further results.

+ *

Returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If there are more topics, a NextToken is also returned. Use the NextToken parameter in a new ListTopics call to get further results.

* * @param request A container for the necessary parameters to execute the ListTopics service method. * @@ -232,11 +231,11 @@ - (BFTask *)listTopics:(AWSSNSListTopicsInput *)request; /** - *

The Publish action sends a message to all of a topic's subscribed endpoints. When a messageId is returned, the message has been saved and Amazon SNS will attempt to deliver itto the topic's subscribers shortly. The format of the outgoing message to each subscribed endpoint depends on the notification protocol selected.

To use the Publish action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone,you must specify the EndpointArn. The EndpointArn is returned when making a call with the CreatePlatformEndpoint action.The second example below shows a request and response for publishing to a mobile endpoint.

+ *

Sends a message to all of a topic's subscribed endpoints. When a messageId is returned, the message has been saved and Amazon SNS will attempt to deliver it to the topic's subscribers shortly. The format of the outgoing message to each subscribed endpoint depends on the notification protocol selected.

To use the Publish action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone, you must specify the EndpointArn. The EndpointArn is returned when making a call with the CreatePlatformEndpoint action. The second example below shows a request and response for publishing to a mobile endpoint.

* * @param request A container for the necessary parameters to execute the Publish service method. * - * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSSNSPublishResponse. On failed execution, task.error may contain an NSError with AWSSNSErrorDomain domian and the following error code: AWSSNSErrorInvalidParameter, AWSSNSErrorInternalError, AWSSNSErrorNotFound, AWSSNSErrorEndpointDisabled, AWSSNSErrorPlatformApplicationDisabled, AWSSNSErrorAuthorizationError. + * @return An instance of BFTask. On successful execution, task.result will contain an instance of AWSSNSPublishResponse. On failed execution, task.error may contain an NSError with AWSSNSErrorDomain domian and the following error code: AWSSNSErrorInvalidParameter, AWSSNSErrorInvalidParameterValue, AWSSNSErrorInternalError, AWSSNSErrorNotFound, AWSSNSErrorEndpointDisabled, AWSSNSErrorPlatformApplicationDisabled, AWSSNSErrorAuthorizationError. * * @see AWSSNSPublishInput * @see AWSSNSPublishResponse @@ -244,7 +243,7 @@ - (BFTask *)publish:(AWSSNSPublishInput *)request; /** - *

The RemovePermission action removes a statement from a topic's access control policy.

+ *

Removes a statement from a topic's access control policy.

* * @param request A container for the necessary parameters to execute the RemovePermission service method. * @@ -255,7 +254,7 @@ - (BFTask *)removePermission:(AWSSNSRemovePermissionInput *)request; /** - *

The SetEndpointAttributes action sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the SetEndpointAttributes service method. * @@ -266,7 +265,7 @@ - (BFTask *)setEndpointAttributes:(AWSSNSSetEndpointAttributesInput *)request; /** - *

The SetPlatformApplicationAttributes action sets the attributes of the platform application object for the supported push notification services,such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

+ *

Sets the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

* * @param request A container for the necessary parameters to execute the SetPlatformApplicationAttributes service method. * @@ -277,7 +276,7 @@ - (BFTask *)setPlatformApplicationAttributes:(AWSSNSSetPlatformApplicationAttributesInput *)request; /** - *

The SetSubscriptionAttributes action allows a subscription owner to set an attribute of the topic to a new value.

+ *

Allows a subscription owner to set an attribute of the topic to a new value.

* * @param request A container for the necessary parameters to execute the SetSubscriptionAttributes service method. * @@ -288,7 +287,7 @@ - (BFTask *)setSubscriptionAttributes:(AWSSNSSetSubscriptionAttributesInput *)request; /** - *

The SetTopicAttributes action allows a topic owner to set an attribute of the topic to a new value.

+ *

Allows a topic owner to set an attribute of the topic to a new value.

* * @param request A container for the necessary parameters to execute the SetTopicAttributes service method. * @@ -299,7 +298,7 @@ - (BFTask *)setTopicAttributes:(AWSSNSSetTopicAttributesInput *)request; /** - *

The Subscribe action prepares to subscribe an endpoint by sending the endpoint a confirmation message. To actually create a subscription, the endpoint owner must call the ConfirmSubscription action with the token from the confirmation message. Confirmation tokens are valid for three days.

+ *

Prepares to subscribe an endpoint by sending the endpoint a confirmation message. To actually create a subscription, the endpoint owner must call the ConfirmSubscription action with the token from the confirmation message. Confirmation tokens are valid for three days.

* * @param request A container for the necessary parameters to execute the Subscribe service method. * @@ -311,7 +310,7 @@ - (BFTask *)subscribe:(AWSSNSSubscribeInput *)request; /** - *

The Unsubscribe action deletes a subscription. If the subscription requires authentication fordeletion, only the owner of the subscription or the topic's ownercan unsubscribe, and an AWS signature is required. If theUnsubscribe call does not require authentication and the requester is notthe subscription owner, a final cancellation message is delivered to theendpoint, so that the endpoint owner can easily resubscribe to the topic ifthe Unsubscribe request was unintended.

+ *

Deletes a subscription. If the subscription requires authentication for deletion, only the owner of the subscription or the topic's owner can unsubscribe, and an AWS signature is required. If the Unsubscribe call does not require authentication and the requester is not the subscription owner, a final cancellation message is delivered to the endpoint, so that the endpoint owner can easily resubscribe to the topic if the Unsubscribe request was unintended.

* * @param request A container for the necessary parameters to execute the Unsubscribe service method. * diff --git a/SNS/AWSSNS.m b/SNS/AWSSNS.m index fbf66b07e38..76dad8a82e9 100644 --- a/SNS/AWSSNS.m +++ b/SNS/AWSSNS.m @@ -15,8 +15,8 @@ #import "AWSSNS.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -47,14 +47,15 @@ + (void)initialize { @"IncompleteSignature" : @(AWSSNSErrorIncompleteSignature), @"InvalidClientTokenId" : @(AWSSNSErrorInvalidClientTokenId), @"MissingAuthenticationToken" : @(AWSSNSErrorMissingAuthenticationToken), - @"AuthorizationErrorException" : @(AWSSNSErrorAuthorizationError), - @"EndpointDisabledException" : @(AWSSNSErrorEndpointDisabled), - @"InternalErrorException" : @(AWSSNSErrorInternalError), - @"InvalidParameterException" : @(AWSSNSErrorInvalidParameter), - @"NotFoundException" : @(AWSSNSErrorNotFound), - @"PlatformApplicationDisabledException" : @(AWSSNSErrorPlatformApplicationDisabled), - @"SubscriptionLimitExceededException" : @(AWSSNSErrorSubscriptionLimitExceeded), - @"TopicLimitExceededException" : @(AWSSNSErrorTopicLimitExceeded), + @"AuthorizationError" : @(AWSSNSErrorAuthorizationError), + @"EndpointDisabled" : @(AWSSNSErrorEndpointDisabled), + @"InternalError" : @(AWSSNSErrorInternalError), + @"InvalidParameter" : @(AWSSNSErrorInvalidParameter), + @"ParameterValueInvalid" : @(AWSSNSErrorInvalidParameterValue), + @"NotFound" : @(AWSSNSErrorNotFound), + @"PlatformApplicationDisabled" : @(AWSSNSErrorPlatformApplicationDisabled), + @"SubscriptionLimitExceeded" : @(AWSSNSErrorSubscriptionLimitExceeded), + @"TopicLimitExceeded" : @(AWSSNSErrorTopicLimitExceeded), }; } @@ -87,7 +88,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSNSErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -95,8 +96,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSNSErrorDomain code:AWSSNSErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } } @@ -119,22 +119,22 @@ @interface AWSSNSRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSSNSRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSSNSErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSSNSErrorIncompleteSignature: case AWSSNSErrorInvalidClientTokenId: case AWSSNSErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -149,15 +149,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSSNS() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -181,25 +180,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceSNS]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceSNS]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSNSRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -208,9 +207,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -230,7 +229,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)addPermission:(AWSSNSAddPermissionInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AddPermission" @@ -239,7 +238,7 @@ - (BFTask *)addPermission:(AWSSNSAddPermissionInput *)request { - (BFTask *)confirmSubscription:(AWSSNSConfirmSubscriptionInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ConfirmSubscription" @@ -248,7 +247,7 @@ - (BFTask *)confirmSubscription:(AWSSNSConfirmSubscriptionInput *)request { - (BFTask *)createPlatformApplication:(AWSSNSCreatePlatformApplicationInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreatePlatformApplication" @@ -257,7 +256,7 @@ - (BFTask *)createPlatformApplication:(AWSSNSCreatePlatformApplicationInput *)re - (BFTask *)createPlatformEndpoint:(AWSSNSCreatePlatformEndpointInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreatePlatformEndpoint" @@ -266,7 +265,7 @@ - (BFTask *)createPlatformEndpoint:(AWSSNSCreatePlatformEndpointInput *)request - (BFTask *)createTopic:(AWSSNSCreateTopicInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateTopic" @@ -275,7 +274,7 @@ - (BFTask *)createTopic:(AWSSNSCreateTopicInput *)request { - (BFTask *)deleteEndpoint:(AWSSNSDeleteEndpointInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteEndpoint" @@ -284,7 +283,7 @@ - (BFTask *)deleteEndpoint:(AWSSNSDeleteEndpointInput *)request { - (BFTask *)deletePlatformApplication:(AWSSNSDeletePlatformApplicationInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeletePlatformApplication" @@ -293,7 +292,7 @@ - (BFTask *)deletePlatformApplication:(AWSSNSDeletePlatformApplicationInput *)re - (BFTask *)deleteTopic:(AWSSNSDeleteTopicInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteTopic" @@ -302,7 +301,7 @@ - (BFTask *)deleteTopic:(AWSSNSDeleteTopicInput *)request { - (BFTask *)getEndpointAttributes:(AWSSNSGetEndpointAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetEndpointAttributes" @@ -311,7 +310,7 @@ - (BFTask *)getEndpointAttributes:(AWSSNSGetEndpointAttributesInput *)request { - (BFTask *)getPlatformApplicationAttributes:(AWSSNSGetPlatformApplicationAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetPlatformApplicationAttributes" @@ -320,7 +319,7 @@ - (BFTask *)getPlatformApplicationAttributes:(AWSSNSGetPlatformApplicationAttrib - (BFTask *)getSubscriptionAttributes:(AWSSNSGetSubscriptionAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetSubscriptionAttributes" @@ -329,7 +328,7 @@ - (BFTask *)getSubscriptionAttributes:(AWSSNSGetSubscriptionAttributesInput *)re - (BFTask *)getTopicAttributes:(AWSSNSGetTopicAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetTopicAttributes" @@ -338,7 +337,7 @@ - (BFTask *)getTopicAttributes:(AWSSNSGetTopicAttributesInput *)request { - (BFTask *)listEndpointsByPlatformApplication:(AWSSNSListEndpointsByPlatformApplicationInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListEndpointsByPlatformApplication" @@ -347,7 +346,7 @@ - (BFTask *)listEndpointsByPlatformApplication:(AWSSNSListEndpointsByPlatformApp - (BFTask *)listPlatformApplications:(AWSSNSListPlatformApplicationsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListPlatformApplications" @@ -356,7 +355,7 @@ - (BFTask *)listPlatformApplications:(AWSSNSListPlatformApplicationsInput *)requ - (BFTask *)listSubscriptions:(AWSSNSListSubscriptionsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListSubscriptions" @@ -365,7 +364,7 @@ - (BFTask *)listSubscriptions:(AWSSNSListSubscriptionsInput *)request { - (BFTask *)listSubscriptionsByTopic:(AWSSNSListSubscriptionsByTopicInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListSubscriptionsByTopic" @@ -374,7 +373,7 @@ - (BFTask *)listSubscriptionsByTopic:(AWSSNSListSubscriptionsByTopicInput *)requ - (BFTask *)listTopics:(AWSSNSListTopicsInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListTopics" @@ -383,7 +382,7 @@ - (BFTask *)listTopics:(AWSSNSListTopicsInput *)request { - (BFTask *)publish:(AWSSNSPublishInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"Publish" @@ -392,7 +391,7 @@ - (BFTask *)publish:(AWSSNSPublishInput *)request { - (BFTask *)removePermission:(AWSSNSRemovePermissionInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RemovePermission" @@ -401,7 +400,7 @@ - (BFTask *)removePermission:(AWSSNSRemovePermissionInput *)request { - (BFTask *)setEndpointAttributes:(AWSSNSSetEndpointAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetEndpointAttributes" @@ -410,7 +409,7 @@ - (BFTask *)setEndpointAttributes:(AWSSNSSetEndpointAttributesInput *)request { - (BFTask *)setPlatformApplicationAttributes:(AWSSNSSetPlatformApplicationAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetPlatformApplicationAttributes" @@ -419,7 +418,7 @@ - (BFTask *)setPlatformApplicationAttributes:(AWSSNSSetPlatformApplicationAttrib - (BFTask *)setSubscriptionAttributes:(AWSSNSSetSubscriptionAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetSubscriptionAttributes" @@ -428,7 +427,7 @@ - (BFTask *)setSubscriptionAttributes:(AWSSNSSetSubscriptionAttributesInput *)re - (BFTask *)setTopicAttributes:(AWSSNSSetTopicAttributesInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetTopicAttributes" @@ -437,7 +436,7 @@ - (BFTask *)setTopicAttributes:(AWSSNSSetTopicAttributesInput *)request { - (BFTask *)subscribe:(AWSSNSSubscribeInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"Subscribe" @@ -446,7 +445,7 @@ - (BFTask *)subscribe:(AWSSNSSubscribeInput *)request { - (BFTask *)unsubscribe:(AWSSNSUnsubscribeInput *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"Unsubscribe" diff --git a/SNS/AWSSNSModel.h b/SNS/AWSSNSModel.h index b9118dce501..4a27dc4c83d 100644 --- a/SNS/AWSSNSModel.h +++ b/SNS/AWSSNSModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSSNSErrorDomain; @@ -28,6 +28,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { AWSSNSErrorEndpointDisabled, AWSSNSErrorInternalError, AWSSNSErrorInvalidParameter, + AWSSNSErrorInvalidParameterValue, AWSSNSErrorNotFound, AWSSNSErrorPlatformApplicationDisabled, AWSSNSErrorSubscriptionLimitExceeded, @@ -65,6 +66,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { @class AWSSNSListSubscriptionsResponse; @class AWSSNSListTopicsInput; @class AWSSNSListTopicsResponse; +@class AWSSNSMessageAttributeValue; @class AWSSNSPlatformApplication; @class AWSSNSPublishInput; @class AWSSNSPublishResponse; @@ -83,7 +85,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

The AWS account IDs of the users (principals) who will be given access to the specified actions. The users must have AWS accounts, but do not need to be signed upfor this service.

+ *

The AWS account IDs of the users (principals) who will be given access to the specified actions. The users must have AWS accounts, but do not need to be signed up for this service.

*/ @property (nonatomic, strong) NSArray *AWSAccountId; @@ -112,7 +114,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

Disallows unauthenticated unsubscribes of the subscription.If the value of this parameter is true and the request has an AWS signature, then only the topic owner and the subscription owner can unsubscribe the endpoint.The unsubscribe action requires AWS authentication.

+ *

Disallows unauthenticated unsubscribes of the subscription. If the value of this parameter is true and the request has an AWS signature, then only the topic owner and the subscription owner can unsubscribe the endpoint. The unsubscribe action requires AWS authentication.

*/ @property (nonatomic, strong) NSString *authenticateOnUnsubscribe; @@ -131,7 +133,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** * Response for ConfirmSubscriptions action. */ -@interface AWSSNSConfirmSubscriptionResponse : AZModel +@interface AWSSNSConfirmSubscriptionResponse : AWSModel /** @@ -144,7 +146,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response from CreateEndpoint action.

*/ -@interface AWSSNSCreateEndpointResponse : AZModel +@interface AWSSNSCreateEndpointResponse : AWSModel /** @@ -181,7 +183,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response from CreatePlatformApplication action.

*/ -@interface AWSSNSCreatePlatformApplicationResponse : AZModel +@interface AWSSNSCreatePlatformApplicationResponse : AWSModel /** @@ -204,7 +206,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { @property (nonatomic, strong) NSDictionary *attributes; /** - *

Arbitrary user data to associate with the endpoint. SNS does not use this data. The data must be in UTF-8 format and less than 2KB.

+ *

Arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB.

*/ @property (nonatomic, strong) NSString *customUserData; @@ -214,7 +216,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { @property (nonatomic, strong) NSString *platformApplicationArn; /** - *

Unique identifier created by the notification service for an app on a device.The specific name for Token will vary, depending on which notification service is being used.For example, when using APNS as the notification service, you need the device token.Alternatively, when using GCM or ADM, the device token equivalent is called the registration ID.

+ *

Unique identifier created by the notification service for an app on a device. The specific name for Token will vary, depending on which notification service is being used. For example, when using APNS as the notification service, you need the device token. Alternatively, when using GCM or ADM, the device token equivalent is called the registration ID.

*/ @property (nonatomic, strong) NSString *token; @@ -228,7 +230,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

The name of the topic you want to create.

Constraints: Topic names must be made up ofonly uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must bebetween 1 and 256 characters long.

+ *

The name of the topic you want to create.

Constraints: Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long.

*/ @property (nonatomic, strong) NSString *name; @@ -237,7 +239,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response from CreateTopic action.

*/ -@interface AWSSNSCreateTopicResponse : AZModel +@interface AWSSNSCreateTopicResponse : AWSModel /** @@ -279,7 +281,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

The ARN of the topic you want to delete.

+ *

The ARN of the topic you want to delete.

*/ @property (nonatomic, strong) NSString *topicArn; @@ -288,7 +290,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Endpoint for mobile app and device.

*/ -@interface AWSSNSEndpoint : AZModel +@interface AWSSNSEndpoint : AWSModel /** @@ -320,11 +322,11 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response from GetEndpointAttributes of the EndpointArn.

*/ -@interface AWSSNSGetEndpointAttributesResponse : AZModel +@interface AWSSNSGetEndpointAttributesResponse : AWSModel /** - *

Attributes include the following:

  • CustomUserData -- arbitrary user data to associate with the endpoint. SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • Enabled -- flag that enables/disables delivery to the endpoint.Message Processor will set this to false when a notification service indicates to SNS that the endpoint is invalid.Users can set it back to true, typically after updating Token.
  • Token -- device token, also referred to as a registration id, for an app and mobile device.This is returned from the notification service when an app and mobile device are registered with the notification service.
+ *

Attributes include the following:

  • CustomUserData -- arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • Enabled -- flag that enables/disables delivery to the endpoint. Amazon SNS will set this to false when a notification service indicates to Amazon SNS that the endpoint is invalid. Users can set it back to true, typically after updating Token.
  • Token -- device token, also referred to as a registration id, for an app and mobile device. This is returned from the notification service when an app and mobile device are registered with the notification service.
*/ @property (nonatomic, strong) NSDictionary *attributes; @@ -347,11 +349,11 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for GetPlatformApplicationAttributes action.

*/ -@interface AWSSNSGetPlatformApplicationAttributesResponse : AZModel +@interface AWSSNSGetPlatformApplicationAttributesResponse : AWSModel /** - *

Attributes include the following:

  • EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
+ *

Attributes include the following:

  • EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
*/ @property (nonatomic, strong) NSDictionary *attributes; @@ -374,11 +376,11 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for GetSubscriptionAttributes action.

*/ -@interface AWSSNSGetSubscriptionAttributesResponse : AZModel +@interface AWSSNSGetSubscriptionAttributesResponse : AWSModel /** - *

A map of the subscription's attributes. Attributes in this map include the following:

  • SubscriptionArn -- the subscription's ARN
  • TopicArn -- the topic ARN that the subscription is associated with
  • Owner -- the AWS account ID of the subscription's owner
  • ConfirmationWasAuthenticated -- true if the subscription confirmation request was authenticated
  • DeliveryPolicy -- the JSON serialization of the subscription's delivery policy
  • EffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takesinto account the topic delivery policy and account system defaults
+ *

A map of the subscription's attributes. Attributes in this map include the following:

  • SubscriptionArn -- the subscription's ARN
  • TopicArn -- the topic ARN that the subscription is associated with
  • Owner -- the AWS account ID of the subscription's owner
  • ConfirmationWasAuthenticated -- true if the subscription confirmation request was authenticated
  • DeliveryPolicy -- the JSON serialization of the subscription's delivery policy
  • EffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takes into account the topic delivery policy and account system defaults
*/ @property (nonatomic, strong) NSDictionary *attributes; @@ -401,7 +403,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for GetTopicAttributes action.

*/ -@interface AWSSNSGetTopicAttributesResponse : AZModel +@interface AWSSNSGetTopicAttributesResponse : AWSModel /** @@ -433,7 +435,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for ListEndpointsByPlatformApplication action.

*/ -@interface AWSSNSListEndpointsByPlatformApplicationResponse : AZModel +@interface AWSSNSListEndpointsByPlatformApplicationResponse : AWSModel /** @@ -464,7 +466,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for ListPlatformApplications action.

*/ -@interface AWSSNSListPlatformApplicationsResponse : AZModel +@interface AWSSNSListPlatformApplicationsResponse : AWSModel /** @@ -501,7 +503,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for ListSubscriptionsByTopic action.

*/ -@interface AWSSNSListSubscriptionsByTopicResponse : AZModel +@interface AWSSNSListSubscriptionsByTopicResponse : AWSModel /** @@ -529,7 +531,10 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { @end -@interface AWSSNSListSubscriptionsResponse : AZModel +/** + *

Response for ListSubscriptions action

+ */ +@interface AWSSNSListSubscriptionsResponse : AWSModel /** @@ -557,7 +562,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for ListTopics action.

*/ -@interface AWSSNSListTopicsResponse : AZModel +@interface AWSSNSListTopicsResponse : AWSModel /** @@ -572,10 +577,34 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { @end +/** + *

The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see Publish.

Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes). For more information, see Using Amazon SNS Message Attributes.

+ * Required parameters: [DataType] + */ +@interface AWSSNSMessageAttributeValue : AWSModel + + +/** + *

Binary type attributes can store any binary data, for example, compressed data, encrypted data, or images.

+ */ +@property (nonatomic, strong) NSData *binaryValue; + +/** + *

Amazon SNS supports the following logical data types: String, Number, and Binary. For more information, see Message Attribute Data Types.

+ */ +@property (nonatomic, strong) NSString *dataType; + +/** + *

Strings are Unicode with UTF8 binary encoding. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

+ */ +@property (nonatomic, strong) NSString *stringValue; + +@end + /** *

Platform application object.

*/ -@interface AWSSNSPlatformApplication : AZModel +@interface AWSSNSPlatformApplication : AWSModel /** @@ -598,17 +627,22 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

The message you want to send to the topic.

If you want to send the same message to all transport protocols,include the text of the message as a String value.

If you want to send different messages for each transport protocol,set the value of the MessageStructure parameter to jsonand use a JSON object for the Message parameter.See the Examples section for the format of the JSON object.

Constraints: Messages must be UTF-8 encoded strings at most 256 KB in size (262144 bytes, not 262144 characters).

JSON-specific constraints:

  • Keys in the JSON object that correspond to supported transport protocols must have simple JSON string values.
  • The values will be parsed (unescaped) before they are used in outgoing messages.
  • Outbound notifications are JSON encoded (meaning that the characters will be reescaped for sending).
  • Values have a minimum length of 0 (the empty string, "", is allowed).
  • Values have a maximum length bounded by the overall message size (so, including multiple protocols may limit message sizes).
  • Non-string values will cause the key to be ignored.
  • Keys that do not correspond to supported transport protocols are ignored.
  • Duplicate keys are not allowed.
  • Failure to parse or validate any key or value in the message will cause the Publish call to return an error (no partial delivery).

+ *

The message you want to send to the topic.

If you want to send the same message to all transport protocols, include the text of the message as a String value.

If you want to send different messages for each transport protocol, set the value of the MessageStructure parameter to json and use a JSON object for the Message parameter. See the Examples section for the format of the JSON object.

Constraints: Messages must be UTF-8 encoded strings at most 256 KB in size (262144 bytes, not 262144 characters).

JSON-specific constraints:

  • Keys in the JSON object that correspond to supported transport protocols must have simple JSON string values.
  • The values will be parsed (unescaped) before they are used in outgoing messages.
  • Outbound notifications are JSON encoded (meaning that the characters will be reescaped for sending).
  • Values have a minimum length of 0 (the empty string, "", is allowed).
  • Values have a maximum length bounded by the overall message size (so, including multiple protocols may limit message sizes).
  • Non-string values will cause the key to be ignored.
  • Keys that do not correspond to supported transport protocols are ignored.
  • Duplicate keys are not allowed.
  • Failure to parse or validate any key or value in the message will cause the Publish call to return an error (no partial delivery).

*/ @property (nonatomic, strong) NSString *message; /** - *

Set MessageStructure to json if you want to send a different message for each protocol. For example, using one publish action, you can send a short message to your SMS subscribers and a longer message to your email subscribers. If you set MessageStructure to json, the value ofthe Message parameter must:

  • be a syntactically valid JSON object; and
  • contain at least a top-level JSON key of "default" with a value that is a string.

You can define other top-level keys that define the message you want to send to a specific transport protocol (e.g., "http").

For information about sending different messages for each protocol using the AWS Management Console, go to CreateDifferent Messages for Each Protocol in the Amazon Simple Notification Service Getting Started Guide.

Valid value: json

+ *

Message attributes for Publish action.

+ */ +@property (nonatomic, strong) NSDictionary *messageAttributes; + +/** + *

Set MessageStructure to json if you want to send a different message for each protocol. For example, using one publish action, you can send a short message to your SMS subscribers and a longer message to your email subscribers. If you set MessageStructure to json, the value of the Message parameter must:

  • be a syntactically valid JSON object; and
  • contain at least a top-level JSON key of "default" with a value that is a string.

You can define other top-level keys that define the message you want to send to a specific transport protocol (e.g., "http").

For information about sending different messages for each protocol using the AWS Management Console, go to Create Different Messages for Each Protocol in the Amazon Simple Notification Service Getting Started Guide.

Valid value: json

*/ @property (nonatomic, strong) NSString *messageStructure; /** - *

Optional parameter to be used as the "Subject" line when the message is delivered to email endpoints. This field will also be included, if present,in the standard JSON messages delivered to other endpoints.

Constraints: Subjects must be ASCII text that begins with a letter, number,or punctuation mark; must not include line breaks or control characters; andmust be less than 100 characters long.

+ *

Optional parameter to be used as the "Subject" line when the message is delivered to email endpoints. This field will also be included, if present, in the standard JSON messages delivered to other endpoints.

Constraints: Subjects must be ASCII text that begins with a letter, number, or punctuation mark; must not include line breaks or control characters; and must be less than 100 characters long.

*/ @property (nonatomic, strong) NSString *subject; @@ -627,7 +661,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

Response for Publish action.

*/ -@interface AWSSNSPublishResponse : AZModel +@interface AWSSNSPublishResponse : AWSModel /** @@ -664,7 +698,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

A map of the endpoint attributes. Attributes in this map include the following:

  • CustomUserData -- arbitrary user data to associate with the endpoint. SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • Enabled -- flag that enables/disables delivery to the endpoint.Message Processor will set this to false when a notification service indicates to SNS that the endpoint is invalid.Users can set it back to true, typically after updating Token.
  • Token -- device token, also referred to as a registration id, for an app and mobile device.This is returned from the notification service when an app and mobile device are registered with the notification service.
+ *

A map of the endpoint attributes. Attributes in this map include the following:

  • CustomUserData -- arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • Enabled -- flag that enables/disables delivery to the endpoint. Amazon SNS will set this to false when a notification service indicates to Amazon SNS that the endpoint is invalid. Users can set it back to true, typically after updating Token.
  • Token -- device token, also referred to as a registration id, for an app and mobile device. This is returned from the notification service when an app and mobile device are registered with the notification service.
*/ @property (nonatomic, strong) NSDictionary *attributes; @@ -683,7 +717,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

A map of the platform application attributes. Attributes in this map include the following:

  • PlatformCredential -- The credential received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is "private key".For GCM, PlatformCredential is "API key". For ADM, PlatformCredential is "client secret".
  • PlatformPrincipal -- The principal received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is "SSL certificate".For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is "client id".
  • EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
+ *

A map of the platform application attributes. Attributes in this map include the following:

  • PlatformCredential -- The credential received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is "private key". For GCM, PlatformCredential is "API key". For ADM, PlatformCredential is "client secret".
  • PlatformPrincipal -- The principal received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is "SSL certificate". For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is "client id".
  • EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
*/ @property (nonatomic, strong) NSDictionary *attributes; @@ -702,7 +736,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** - *

The name of the attribute you want to set. Only a subset of the subscriptions attributes are mutable.

Valid values: DeliveryPolicy

+ *

The name of the attribute you want to set. Only a subset of the subscriptions attributes are mutable.

Valid values: DeliveryPolicy | RawMessageDelivery

*/ @property (nonatomic, strong) NSString *attributeName; @@ -769,20 +803,20 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** * Response for Subscribe action. */ -@interface AWSSNSSubscribeResponse : AZModel +@interface AWSSNSSubscribeResponse : AWSModel /** - *

The ARN of the subscription, if the service was able to create asubscription immediately (without requiring endpoint owner confirmation).

+ *

The ARN of the subscription, if the service was able to create a subscription immediately (without requiring endpoint owner confirmation).

*/ @property (nonatomic, strong) NSString *subscriptionArn; @end /** - *

A wrapper type for the attributes of an SNS subscription.

+ *

A wrapper type for the attributes of an Amazon SNS subscription.

*/ -@interface AWSSNSSubscription : AZModel +@interface AWSSNSSubscription : AWSModel /** @@ -815,7 +849,7 @@ typedef NS_ENUM(NSInteger, AWSSNSErrorType) { /** *

A wrapper type for the topic's Amazon Resource Name (ARN). To retrieve a topic's attributes, use GetTopicAttributes.

*/ -@interface AWSSNSTopic : AZModel +@interface AWSSNSTopic : AWSModel /** diff --git a/SNS/AWSSNSModel.m b/SNS/AWSSNSModel.m index 144da69372f..66c4fdfd740 100644 --- a/SNS/AWSSNSModel.m +++ b/SNS/AWSSNSModel.m @@ -14,7 +14,7 @@ */ #import "AWSSNSModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSSNSErrorDomain = @"com.amazonaws.AWSSNSErrorDomain"; @@ -366,6 +366,18 @@ + (NSValueTransformer *)topicsJSONTransformer { @end +@implementation AWSSNSMessageAttributeValue + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"binaryValue" : @"BinaryValue", + @"dataType" : @"DataType", + @"stringValue" : @"StringValue", + }; +} + +@end + @implementation AWSSNSPlatformApplication + (NSDictionary *)JSONKeyPathsByPropertyKey { @@ -382,6 +394,7 @@ @implementation AWSSNSPublishInput + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"message" : @"Message", + @"messageAttributes" : @"MessageAttributes", @"messageStructure" : @"MessageStructure", @"subject" : @"Subject", @"targetArn" : @"TargetArn", @@ -389,6 +402,14 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { }; } ++ (NSValueTransformer *)messageAttributesJSONTransformer { + return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSNSMessageAttributeValue class]]; + } reverseBlock:^id(id mapMTLDictionary) { + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + }]; +} + @end @implementation AWSSNSPublishResponse diff --git a/SNS/Resources/sns-2010-03-31.json b/SNS/Resources/sns-2010-03-31.json index 8e930b61323..cefb50bbeed 100644 --- a/SNS/Resources/sns-2010-03-31.json +++ b/SNS/Resources/sns-2010-03-31.json @@ -8,7 +8,7 @@ "xmlNamespace":"http://sns.amazonaws.com/doc/2010-03-31/", "protocol":"query" }, - "documentation":"Amazon Simple Notification Service\n \n\t

Amazon Simple Notification Service (Amazon SNS) is a web service that enables you to build distributed web-enabled applications. \n \tApplications can use Amazon SNS to easily push real-time notification messages \n \tto interested subscribers over multiple delivery protocols. For more information about this product\n\t\tsee http://aws.amazon.com/sns. For detailed information about Amazon SNS features and their associated API calls,\n\t\tsee the Amazon SNS Developer Guide.\n\t

\n

We also provide SDKs that enable you to access Amazon SNS from your preferred programming language. \n The SDKs contain functionality that automatically takes care of tasks such as: cryptographically signing your service requests, \n retrying requests, and handling error responses. For a list of available SDKs, go to Tools for Amazon Web Services. \n

", + "documentation":"Amazon Simple Notification Service

Amazon Simple Notification Service (Amazon SNS) is a web service that enables you to build distributed web-enabled applications. Applications can use Amazon SNS to easily push real-time notification messages to interested subscribers over multiple delivery protocols. For more information about this product see http://aws.amazon.com/sns. For detailed information about Amazon SNS features and their associated API calls, see the Amazon SNS Developer Guide.

We also provide SDKs that enable you to access Amazon SNS from your preferred programming language. The SDKs contain functionality that automatically takes care of tasks such as: cryptographically signing your service requests, retrying requests, and handling error responses. For a list of available SDKs, go to Tools for Amazon Web Services.

", "operations":{ "AddPermission":{ "name":"AddPermission", @@ -59,7 +59,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The AddPermission action adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Test\n &ActionName.member.1=Publish\n &ActionName.member.2=GetTopicAttributes\n &Label=NewPermission\n &AWSAccountId.member.1=987654321000\n &AWSAccountId.member.2=876543210000\n &Action=AddPermission\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=k%2FAU%2FKp13pjndwJ7rr1sZszy6MZMlOhRBCHx1ZaZFiw%3D\n\n \n \n \n\n \n 6a213e4e-33a8-11df-9540-99d0768312d3\n \n\n \n \n" + "documentation":"

Adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions.

" }, "ConfirmSubscription":{ "name":"ConfirmSubscription", @@ -128,7 +128,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The ConfirmSubscription action verifies an endpoint owner's intent to receive messages by validating\n the token sent to the endpoint by an earlier Subscribe action. If the\n token is valid, the action creates a new subscription and returns its\n Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe flag is set to \"true\".

\n\n \n\n https://sns.us-east-1.amazonaws.com/\n ?Action=ConfirmSubscription\n &TopicArn=arn:aws:sns:us-east-1:123456789012:My-Topic\n &Token=51b2ff3edb475b7d91550e0ab6edf0c1de2a34e6ebaf6\n c2262a001bcb7e051c43aa00022ceecce70bd2a67b2042da8d8\n eb47fef7a4e4e942d23e7fa56146b9ee35da040b4b8af564cc4\n 184a7391c834cb75d75c22981f776ad1ce8805e9bab29da2329\n 985337bb8095627907b46c8577c8440556b6f86582a95475802\n 6f41fc62041c4b3f67b0f5921232b5dae5aaca1\n\n \n \n \n\n \n arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca\n \n \n 7a50221f-3774-11df-a9b7-05d48da6f042\n \n\n \n \n" + "documentation":"

Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe flag is set to \"true\".

" }, "CreatePlatformApplication":{ "name":"CreatePlatformApplication", @@ -177,7 +177,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The CreatePlatformApplication action creates a platform application object for one of the supported push notification services, \n such as APNS and GCM, to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when using \n the CreatePlatformApplication action. The PlatformPrincipal is received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is \"SSL certificate\". \n For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is \"client id\". The PlatformCredential is also received from the notification service. \n For APNS/APNS_SANDBOX, PlatformCredential is \"private key\". For GCM, PlatformCredential is \"API key\". For ADM, PlatformCredential is \"client secret\". \n The PlatformApplicationArn that is returned when using CreatePlatformApplication is then used as an attribute for the CreatePlatformEndpoint action.\n For more information, see Using Amazon SNS Mobile Push Notifications. \n

\n \n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nAttributes.entry.2.key=PlatformPrincipal\n&SignatureMethod=HmacSHA256\n&Attributes.entry.1.value=AIzaSyClE2lcV2zEKTLYYo645zfk2jhQPFeyxDo\n&Attributes.entry.2.value=There+is+no+principal+for+GCM\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Signature=82sHzg1Wfbgisw3i%2BHA2OgBmRktsqUKFinknkq3u%2FQ4%3D\n&Timestamp=2013-07-01T15%3A49%3A50.354Z\n&Name=gcmpushapp\n&Attributes.entry.1.key=PlatformCredential\n&Action=CreatePlatformApplication\n&Version=2010-03-31\n&SignatureVersion=2\n&Platform=GCM\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n arn:aws:sns:us-west-2:123456789012:app/GCM/gcmpushapp\n \n \n b6f0e78b-e9d4-5a0e-b973-adc04e8a4ff9\n \n\n\n \n " + "documentation":"

Creates a platform application object for one of the supported push notification services, such as APNS and GCM, to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when using the CreatePlatformApplication action. The PlatformPrincipal is received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is \"SSL certificate\". For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is \"client id\". The PlatformCredential is also received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is \"private key\". For GCM, PlatformCredential is \"API key\". For ADM, PlatformCredential is \"client secret\". The PlatformApplicationArn that is returned when using CreatePlatformApplication is then used as an attribute for the CreatePlatformEndpoint action. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "CreatePlatformEndpoint":{ "name":"CreatePlatformEndpoint", @@ -236,7 +236,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The CreatePlatformEndpoint creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM and APNS. \n CreatePlatformEndpoint requires the PlatformApplicationArn that is returned from CreatePlatformApplication. The EndpointArn that is\n returned when using CreatePlatformEndpoint can then be used by the Publish action to send a message to a mobile app or by the Subscribe \n action for subscription to a topic. \n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nPlatformApplicationArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aapp%2FGCM%2Fgcmpushapp\n&Action=CreatePlatformEndpoint\n&SignatureMethod=HmacSHA256\n&CustomUserData=UserId%3D27576823\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Token=APA91bGi7fFachkC1xjlqT66VYEucGHochmf1VQAr9k...jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HZrBEXAMPLE\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=Rg5vXBS6OfgPtWkt1u32p1w14uiGh%2BKOicvXNWTEz2w%3D\n&Timestamp=2013-07-01T15%3A49%3A50.598Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n arn:aws:sns:us-west-2:123456789012:endpoint/GCM/gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3\n \n \n 6613341d-3e15-53f7-bf3c-7e56994ba278\n \n\n\n \n " + "documentation":"

Creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM and APNS. CreatePlatformEndpoint requires the PlatformApplicationArn that is returned from CreatePlatformApplication. The EndpointArn that is returned when using CreatePlatformEndpoint can then be used by the Publish action to send a message to a mobile app or by the Subscribe action for subscription to a topic. The CreatePlatformEndpoint action is idempotent, so if the requester already owns an endpoint with the same device token and attributes, that endpoint's ARN is returned without creating a new endpoint. For more information, see Using Amazon SNS Mobile Push Notifications.

When using CreatePlatformEndpoint with Baidu, two attributes must be provided: ChannelId and UserId. The token field must also contain the ChannelId. For more information, see Creating an Amazon SNS Endpoint for Baidu.

" }, "CreateTopic":{ "name":"CreateTopic", @@ -295,7 +295,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The CreateTopic action creates a topic to which notifications can be published. Users can create\n at most 100 topics. For more information, see http://aws.amazon.com/sns. \n This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is \n returned without creating a new topic.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?Name=My-Topic\n &Action=CreateTopic\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=gfzIF53exFVdpSNb8AiwN3Lv%2FNYXh6S%2Br3yySK70oX4%3D\n\n \n \n \n \n \n arn:aws:sns:us-east-1:123456789012:My-Topic\n \n \n a8dec8b3-33a4-11df-8963-01868b7c937a\n \n \n \n \n" + "documentation":"

Creates a topic to which notifications can be published. Users can create at most 3000 topics. For more information, see http://aws.amazon.com/sns. This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic.

" }, "DeleteEndpoint":{ "name":"DeleteEndpoint", @@ -339,7 +339,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The DeleteEndpoint action, which is idempotent, deletes the endpoint from SNS. \n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nAction=DeleteEndpoint\n&SignatureMethod=HmacSHA256\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&EndpointArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aendpoint%2FGCM%2Fgcmpushapp%2F5e3e9847-3183-3f18-a7e8-671c3a57d4b3\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=LIc6GI3JbNhmHBEDmSxzZp648XPe5CMeFny%2BTQFtomQ%3D\n&Timestamp=2013-07-01T23%3A00%3A12.456Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n c1d2b191-353c-5a5f-8969-fbdd3900afa8\n \n\n\n \n " + "documentation":"

Deletes the endpoint from Amazon SNS. This action is idempotent. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "DeletePlatformApplication":{ "name":"DeletePlatformApplication", @@ -383,7 +383,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The DeletePlatformApplication action deletes a platform application object for one of the supported push notification services, \n such as APNS and GCM.\n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nPlatformApplicationArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aapp%2FGCM%2Fgcmpushapp\n&Action=DeletePlatformApplication\n&SignatureMethod=HmacSHA256\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=Mh7X%2BQo%2BGpcm5B1IpkovBaRiJCJOqvFlIOYzL62SGrg%3D\n&Timestamp=2013-07-01T23%3A02%3A03.872Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n 097dac18-7a77-5823-a8dd-e65476dcb037\n \n\n\n \n " + "documentation":"

Deletes a platform application object for one of the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "DeleteTopic":{ "name":"DeleteTopic", @@ -434,7 +434,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The DeleteTopic action deletes a topic and all its subscriptions. Deleting a topic might\n prevent some messages previously sent to the topic from being delivered to\n subscribers. This action is idempotent, so deleting a topic that does not\n exist does not result in an error.

\n\n\n\n http://sns.us-east-1.amazonaws.com/\n &TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic\n &Action=DeleteTopic\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key Id)\n &Signature=mQA3nJI%2BcmAIY7r8HCArGElSqPX5JG4UGzF4yo0RygE%3D\n\n\n\n\n\n \n f3aa9ac9-3c3d-11df-8235-9dab105e9c32\n \n\n\n\n" + "documentation":"

Deletes a topic and all its subscriptions. Deleting a topic might prevent some messages previously sent to the topic from being delivered to subscribers. This action is idempotent, so deleting a topic that does not exist does not result in an error.

" }, "GetEndpointAttributes":{ "name":"GetEndpointAttributes", @@ -493,7 +493,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The GetEndpointAttributes retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM and APNS. \n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nAction=GetEndpointAttributes\n&SignatureMethod=HmacSHA256\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&EndpointArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aendpoint%2FGCM%2Fgcmpushapp%2F5e3e9847-3183-3f18-a7e8-671c3a57d4b3\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=%2B2egbEoT4npw3p5H3wiIdzZBoTn4KI3UWmMFyBsHH9c%3D\n&Timestamp=2013-07-01T22%3A44%3A56.515Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n \n \n Enabled\n true\n \n \n CustomUserData\n UserId=01234567\n \n \n Token\n APA91bGi7fFachkC1xjlqT66VYEucGHochmf1VQAr9k...jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HZrBEXAMPLE\n \n \n \n \n 6c725a19-a142-5b77-94f9-1055a9ea04e7\n \n\n\n \n " + "documentation":"

Retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "GetPlatformApplicationAttributes":{ "name":"GetPlatformApplicationAttributes", @@ -552,7 +552,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The GetPlatformApplicationAttributes action retrieves the attributes of the platform application object for the supported push notification services, \n such as APNS and GCM.\n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nPlatformApplicationArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aapp%2FGCM%2Fgcmpushapp\n&Action=GetPlatformApplicationAttributes\n&SignatureMethod=HmacSHA256\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=UGMaCq8CCJGSYXO9Ehr2VuHIBYSe6WbxkqgMKRslTK4%3D\n&Timestamp=2013-07-01T22%3A40%3A50.643Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n \n \n AllowEndpointPolicies\n false\n \n \n \n \n 74848df2-87f6-55ed-890c-c7be80442462\n \n\n\n \n " + "documentation":"

Retrieves the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "GetSubscriptionAttributes":{ "name":"GetSubscriptionAttributes", @@ -611,7 +611,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The GetSubscriptionAttribtues action returns all of the properties of a subscription.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca\n &Action=GetSubscriptionAttributes\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key Id)\n &Signature=92lBGRVq0%2BxhaACaBGqtdemy%2Bi9isfgyTljCbJM80Yk%3D\n\n \n \n \n\n \n \n \n Owner\n 123456789012\n \n \n DeliveryPolicy\n {"healthyRetryPolicy":{"numRetries":10}}\n \n \n SubscriptionArn\n arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca\n \n \n \n \n 057f074c-33a7-11df-9540-99d0768312d3\n \n\n \n \n" + "documentation":"

Returns all of the properties of a subscription.

" }, "GetTopicAttributes":{ "name":"GetTopicAttributes", @@ -670,7 +670,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The GetTopicAttributes action returns all of the properties of a topic. \n Topic properties returned might differ based on the authorization of the user.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic\n &Action=GetTopicAttributes\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key Id)\n &Signature=92lBGRVq0%2BxhaACaBGqtdemy%2Bi9isfgyTljCbJM80Yk%3D\n\n \n \n \n\n \n \n \n Owner\n 123456789012\n \n \n Policy\n {\n"Version":"2008-10-17","Id":"us-east-1/698519295917/test__default_policy_ID","Statement" : [{"Effect":"Allow","Sid":"us-east-1/698519295917/test__default_statement_ID","Principal" : {"AWS": "*"},"Action":["SNS:GetTopicAttributes","SNS:SetTopicAttributes","SNS:AddPermission","SNS:RemovePermission","SNS:DeleteTopic","SNS:Subscribe","SNS:ListSubscriptionsByTopic","SNS:Publish","SNS:Receive"],"Resource":"arn:aws:sns:us-east-1:698519295917:test","Condition" : {"StringLike" : {"AWS:SourceArn": "arn:aws:*:*:698519295917:*"}}}]}\n \n \n TopicArn\n arn:aws:sns:us-east-1:123456789012:My-Topic\n \n \n \n \n 057f074c-33a7-11df-9540-99d0768312d3\n \n\n \n \n" + "documentation":"

Returns all of the properties of a topic. Topic properties returned might differ based on the authorization of the user.

" }, "ListEndpointsByPlatformApplication":{ "name":"ListEndpointsByPlatformApplication", @@ -729,7 +729,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The ListEndpointsByPlatformApplication action lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM and APNS. \n The results for ListEndpointsByPlatformApplication are paginated and return a limited list of endpoints, up to 100.\n If additional records are available after the first page results, then a NextToken string will be returned. \n To receive the next page, you call ListEndpointsByPlatformApplication again using the NextToken string received from the previous call. \n When there are no more records to return, NextToken will be null.\n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nPlatformApplicationArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aapp%2FGCM%2Fgcmpushapp\n&Action=ListEndpointsByPlatformApplication\n&SignatureMethod=HmacSHA256\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=e6H4sJSCRBBlh%2BaigB%2FtYgp4%2Bjl7dikAQ6WKf%2BMTwNM%3D\n&Timestamp=2013-07-01T23%3A00%3A52.515Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n \n \n arn:aws:sns:us-west-2:123456789012:endpoint/GCM/gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3\n \n \n Enabled\n true\n \n \n CustomUserData\n UserId=27576823\n \n \n Token\n APA91bGi7fFachkC1xjlqT66VYEucGHochmf1VQAr9k...jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HZrBEXAMPLE\n \n \n \n \n \n \n 9a48768c-dac8-5a60-aec0-3cc27ea08d96\n \n\n\n \n " + "documentation":"

Lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM and APNS. The results for ListEndpointsByPlatformApplication are paginated and return a limited list of endpoints, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListEndpointsByPlatformApplication again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "ListPlatformApplications":{ "name":"ListPlatformApplications", @@ -778,7 +778,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The ListPlatformApplications action lists the platform application objects for the supported push notification services, \n such as APNS and GCM. The results for ListPlatformApplications are paginated and return a limited list of applications, up to 100.\n If additional records are available after the first page results, then a NextToken string will be returned. \n To receive the next page, you call ListPlatformApplications using the NextToken string received from the previous call. \n When there are no more records to return, NextToken will be null.\n \n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nAction=ListPlatformApplications\n&SignatureMethod=HmacSHA256\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=drVbTuyR5N9e88WJMNPzBOjNFNvawkCaMfZI0xa9kIQ%3D\n&Timestamp=2013-07-01T22%3A33%3A55.618Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n \n \n arn:aws:sns:us-west-2:123456789012:app/APNS_SANDBOX/apnspushapp\n \n \n AllowEndpointPolicies\n false\n \n \n \n \n arn:aws:sns:us-west-2:123456789012:app/GCM/gcmpushapp\n \n \n AllowEndpointPolicies\n false\n \n \n \n \n \n \n 315a335e-85d8-52df-9349-791283cbb529\n \n\n\n \n " + "documentation":"

Lists the platform application objects for the supported push notification services, such as APNS and GCM. The results for ListPlatformApplications are paginated and return a limited list of applications, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListPlatformApplications using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "ListSubscriptions":{ "name":"ListSubscriptions", @@ -792,6 +792,7 @@ }, "output":{ "shape":"ListSubscriptionsResponse", + "documentation":"

Response for ListSubscriptions action

", "resultWrapper":"ListSubscriptionsResult" }, "errors":[ @@ -826,7 +827,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The ListSubscriptions action returns a list of the requester's subscriptions. Each call returns a limited list\n of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a \n new ListSubscriptions call to get further results.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n &Action=ListSubscriptions\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=SZmBxEPqfs9R7xxhSt6C1b7PnOEvg%2BSVyyMYJfLRFCA%3D\n\n \n \n \n\n \n \n \n arn:aws:sns:us-east-1:698519295917:My-Topic\n email\n arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca\n 123456789012\n example@amazon.com\n \n \n \n \n 384ac68d-3775-11df-8963-01868b7c937a\n \n\n \n \n" + "documentation":"

Returns a list of the requester's subscriptions. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptions call to get further results.

" }, "ListSubscriptionsByTopic":{ "name":"ListSubscriptionsByTopic", @@ -885,7 +886,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The ListSubscriptionsByTopic action returns a list of the subscriptions to a specific topic. Each call returns \n a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken \n parameter in a new ListSubscriptionsByTopic call to get further results.

\n \n \n \n http://sns.us-east-1.amazonaws.com/\n ?TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic\n &Action=ListSubscriptionsByTopic\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=SZmBxEPqfs9R7xxhSt6C1b7PnOEvg%2BSVyyMYJfLRFCA%3D\n\n \n \n \n\n \n \n \n arn:aws:sns:us-east-1:123456789012:My-Topic\n email\n arn:aws:sns:us-east-1:123456789012:My-Topic:80289ba6-0fd4-4079-afb4-ce8c8260f0ca\n 123456789012\n example@amazon.com\n \n \n \n \n b9275252-3774-11df-9540-99d0768312d3\n \n\n \n \n " + "documentation":"

Returns a list of the subscriptions to a specific topic. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptionsByTopic call to get further results.

" }, "ListTopics":{ "name":"ListTopics", @@ -931,7 +932,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The ListTopics action returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If\n there are more topics, a NextToken is also returned. Use the NextToken parameter in a new ListTopics call to get \n further results.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?Action=ListTopics\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=tPg1qKNTNVPydnL3Yx5Fqm2O9GxCr9vh3EF5r9%2F5%2BJs%3D\n\n \n \n \n\n \n \n \n arn:aws:sns:us-east-1:123456789012:My-Topic\n \n \n \n \n 3f1478c7-33a9-11df-9540-99d0768312d3\n \n\n \n \n" + "documentation":"

Returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If there are more topics, a NextToken is also returned. Use the NextToken parameter in a new ListTopics call to get further results.

" }, "Publish":{ "name":"Publish", @@ -959,6 +960,16 @@ "exception":true, "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" }, + { + "shape":"InvalidParameterValueException", + "error":{ + "code":"ParameterValueInvalid", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true, + "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" + }, { "shape":"InternalErrorException", "error":{ @@ -1010,7 +1021,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The Publish action sends a message to all of a topic's subscribed endpoints. When a\n messageId is returned, the message has been saved and Amazon SNS will attempt to deliver it \n to the topic's subscribers shortly. The format of the outgoing message to each\n subscribed endpoint depends on the notification protocol selected.

\n

To use the Publish action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone, \n you must specify the EndpointArn. The EndpointArn is returned when making a call with the CreatePlatformEndpoint action. \n The second example below shows a request and response for publishing to a mobile endpoint.\n

\n \n \n \n The following example publishes the same message to all protocols:\n \n http://sns.us-east-1.amazonaws.com/\n ?Subject=My%20first%20message\n &TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A698519295917%3AMy-Topic\n &Message=Hello%20world%21\n &Action=Publish\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n &Signature=9GZysQ4Jpnz%2BHklqM7VFTvEcjR2LIUtn6jW47054xxE%3D\n \n Use the following JSON object format for the Message parameter to send different messages to each protocol (linebreaks added for readability):\n {\n \"default\" : \"some message\",\n \"email\" : \"some email message\",\n \"email-json\" : \"some email-json message\",\n \"http\" : \"some http message\",\n \"https\" : \"some https message\",\n \"sqs\" : \"some sqs message\"\n }\n \n\n \n \n \n\n \n 94f20ce6-13c5-43a0-9a9e-ca52d816e90b\n \n \n f187a3c1-376f-11df-8963-01868b7c937a\n \n\n \n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nAction=Publish\n&Message=%7B%22default%22%3A%22This+is+the+default+Message%22%2C%22APNS_SANDBOX%22%3A%22%7B+%5C%22aps%5C%22+%3A+%7B+%5C%22alert%5C%22+%3A+%5C%22You+have+got+email.%5C%22%2C+%5C%22badge%5C%22+%3A+9%2C%5C%22sound%5C%22+%3A%5C%22default%5C%22%7D%7D%22%7D\n&TargetArn=arn%3Aaws%3Asns%3Aus-west-2%3A803981987763%3Aendpoint%2FAPNS_SANDBOX%2Fpushapp%2F98e9ced9-f136-3893-9d60-776547eafebb\n&SignatureMethod=HmacSHA256\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=vmqc4XRupKAxsDAdN4j4Ayw5LQljXMps3kss4bkDfCk%3D\n&Timestamp=2013-07-18T22%3A44%3A09.452Z\n&MessageStructure=json\n \n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n 567910cd-659e-55d4-8ccb-5aaf14679dc0\n \n \n d74b8436-ae13-5ab4-a9ff-ce54dfea72a0\n \n\n \n \n " + "documentation":"

Sends a message to all of a topic's subscribed endpoints. When a messageId is returned, the message has been saved and Amazon SNS will attempt to deliver it to the topic's subscribers shortly. The format of the outgoing message to each subscribed endpoint depends on the notification protocol selected.

To use the Publish action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone, you must specify the EndpointArn. The EndpointArn is returned when making a call with the CreatePlatformEndpoint action. The second example below shows a request and response for publishing to a mobile endpoint.

" }, "RemovePermission":{ "name":"RemovePermission", @@ -1064,7 +1075,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The RemovePermission action removes a statement from a topic's access control policy.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Test\n &Label=NewPermission\n &Action=RemovePermission\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=N1abwRY9i7zaSQmbAlm71pPf9EEFOqNbQL1alzw2yCg%3D\n\n \n \n \n\n \n d170b150-33a8-11df-995a-2d6fbe836cc1\n \n\n \n \n" + "documentation":"

Removes a statement from a topic's access control policy.

" }, "SetEndpointAttributes":{ "name":"SetEndpointAttributes", @@ -1118,7 +1129,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The SetEndpointAttributes action sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM and APNS.\n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nAttributes.entry.1.key=CustomUserData\n&Action=SetEndpointAttributes\n&SignatureMethod=HmacSHA256\n&Attributes.entry.1.value=My+custom+userdata\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&EndpointArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aendpoint%2FGCM%2Fgcmpushapp%2F5e3e9847-3183-3f18-a7e8-671c3a57d4b3\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=CFTGfGOS5vgSU3%2FZgv2h%2FJdWgr2JQdDJSrUU9k38wSM%3D\n&Timestamp=2013-07-01T22%3A56%3A45.582Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n 2fe0bfc7-3e85-5ee5-a9e2-f58b35e85f6a\n \n\n\n \n " + "documentation":"

Sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "SetPlatformApplicationAttributes":{ "name":"SetPlatformApplicationAttributes", @@ -1172,7 +1183,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The SetPlatformApplicationAttributes action sets the attributes of the platform application object for the supported push notification services, \n such as APNS and GCM.\n For more information, see Using Amazon SNS Mobile Push Notifications.\n

\n \n \n \nPOST http://sns.us-west-2.amazonaws.com/ HTTP/1.1\n...\nAttributes.entry.1.key=EventEndpointCreated&PlatformApplicationArn=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Aapp%2FGCM%2Fgcmpushapp\n&Action=SetPlatformApplicationAttributes\n&SignatureMethod=HmacSHA256\n&Attributes.entry.1.value=arn%3Aaws%3Asns%3Aus-west-2%3A123456789012%3Atopicarn\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Version=2010-03-31\n&Signature=06L2TsW3jiH%2FGKDYuT8w4NojSrTf4Ig2GKqGeJPhPT4%3D\n&Timestamp=2013-07-01T22%3A53%3A17.800Z\n\n \n \n \nHTTP/1.1 200 OK\n...\n\n \n cf577bcc-b3dc-5463-88f1-3180b9412395\n \n\n\n \n " + "documentation":"

Sets the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

" }, "SetSubscriptionAttributes":{ "name":"SetSubscriptionAttributes", @@ -1226,7 +1237,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The SetSubscriptionAttributes action allows a subscription owner to set an attribute of the topic to a new value.

\n\n \n \nThe following example sets the delivery policy to 5 total retries\n \n http://sns.us-east-1.amazonaws.com/\n ?AttributeValue={\"healthyRetryPolicy\":{\"numRetries\":5}}\n &SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca\n &AttributeName=DeliveryPolicy\n &Action=SetSubscriptionAttributes\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key Id)\n &Signature=mQA3nJI%2BcmAIY7r8HCArGElSqPX5JG4UGzF4yo0RygE%3D\n \nThe JSON format for the DeliveryPolicy AttributeValue (linebreaks added for readability):\n{\n \"healthyRetryPolicy\": \n {\n \"minDelayTarget\": ,\n \"maxDelayTarget\": ,\n \"numRetries\": ,\n \"numMaxDelayRetries\": ,\n \"backoffFunction\": \"\"\n },\n \"throttlePolicy\":\n {\n \"maxReceivesPerSecond\": \n }\n}\n \n \n \n\n \n a8763b99-33a7-11df-a9b7-05d48da6f042\n \n\n \n \n" + "documentation":"

Allows a subscription owner to set an attribute of the topic to a new value.

" }, "SetTopicAttributes":{ "name":"SetTopicAttributes", @@ -1280,7 +1291,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The SetTopicAttributes action allows a topic owner to set an attribute of the topic to a new value.

\n\n \nThe following example sets the DisplayName attribute to MyTopicName\n\n http://sns.us-east-1.amazonaws.com/\n ?AttributeValue=MyTopicName\n &TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic\n &AttributeName=DisplayName\n &Action=SetTopicAttributes\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key Id)\n &Signature=mQA3nJI%2BcmAIY7r8HCArGElSqPX5JG4UGzF4yo0RygE%3D\n \nThe following example sets the delivery policy to 5 total retries\n \n http://sns.us-east-1.amazonaws.com/\n ?AttributeValue={\"http\":{\"defaultHealthyRetryPolicy\":{\"numRetries\":5}}}\n &TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic\n &AttributeName=DeliveryPolicy\n &Action=SetTopicAttributes\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key Id)\n &Signature=mQA3nJI%2BcmAIY7r8HCArGElSqPX5JG4UGzF4yo0RygE%3D \n \nThe JSON format for the DeliveryPolicy AttributeValue (linebreaks added for readability):\n{\n \"http\": {\n \"defaultHealthyRetryPolicy\": \n {\n \"minDelayTarget\": <int>,\n \"maxDelayTarget\": <int>,\n \"numRetries\": <int>,\n \"numMaxDelayRetries\": <int>,\n \"backoffFunction\": \"<linear|arithmetic|geometric|exponential>\"\n },\n \"disableSubscriptionOverrides\": <boolean>,\n \"defaultThrottlePolicy\": \n {\n \"maxReceivesPerSecond\": <int>\n }\n }\n \n \n \n\n \n a8763b99-33a7-11df-a9b7-05d48da6f042\n \n\n \n \n" + "documentation":"

Allows a topic owner to set an attribute of the topic to a new value.

" }, "Subscribe":{ "name":"Subscribe", @@ -1349,7 +1360,7 @@ "documentation":"

Indicates that the user has been denied access to the requested resource.

" } ], - "documentation":"

The Subscribe action prepares to subscribe an endpoint by sending the endpoint a confirmation message. To actually create a\n subscription, the endpoint owner must call the ConfirmSubscription\n action with the token from the confirmation message. Confirmation tokens are\n valid for three days.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic\n &Endpoint=example%40amazon.com\n &Protocol=email\n &Action=Subscribe\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=1%2FeGaDphxXq%2Fa89x6HvKh%2Fc1yLGXzuhS7vS2MslToDM%3D\n\n \n \n \n\n \n pending confirmation\n \n \n a169c740-3766-11df-8963-01868b7c937a\n \n\n \n \n" + "documentation":"

Prepares to subscribe an endpoint by sending the endpoint a confirmation message. To actually create a subscription, the endpoint owner must call the ConfirmSubscription action with the token from the confirmation message. Confirmation tokens are valid for three days.

" }, "Unsubscribe":{ "name":"Unsubscribe", @@ -1403,7 +1414,7 @@ "documentation":"

Indicates that the requested resource does not exist.

" } ], - "documentation":"

The Unsubscribe action deletes a subscription. If the subscription requires authentication for \n deletion, only the owner of the subscription or the topic's owner \n can unsubscribe, and an AWS signature is required. If the \n Unsubscribe call does not require authentication and the requester is not \n the subscription owner, a final cancellation message is delivered to the \n endpoint, so that the endpoint owner can easily resubscribe to the topic if \n the Unsubscribe request was unintended.

\n \n \n \n http://sns.us-east-1.amazonaws.com/\n ?SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca\n &Action=Unsubscribe\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=e8IwhPzuWeMvPDVrN7jUVxasd3Wv2LuO8x6rE23VCv8%3D\n\n \n \n \n\n \n 18e0ac39-3776-11df-84c0-b93cc1666b84\n \n\n \n \n " + "documentation":"

Deletes a subscription. If the subscription requires authentication for deletion, only the owner of the subscription or the topic's owner can unsubscribe, and an AWS signature is required. If the Unsubscribe call does not require authentication and the requester is not the subscription owner, a final cancellation message is delivered to the endpoint, so that the endpoint owner can easily resubscribe to the topic if the Unsubscribe request was unintended.

" } }, "shapes":{ @@ -1430,11 +1441,11 @@ }, "AWSAccountId":{ "shape":"DelegatesList", - "documentation":"

The AWS account IDs of the users (principals) who will be given access to the specified\n actions. The users must have AWS accounts, but do not need to be signed up \n for this service.

" + "documentation":"

The AWS account IDs of the users (principals) who will be given access to the specified actions. The users must have AWS accounts, but do not need to be signed up for this service.

" }, "ActionName":{ "shape":"ActionsList", - "documentation":"

The action you want to allow for the specified principal(s).

\n

Valid values: any Amazon SNS action name.

" + "documentation":"

The action you want to allow for the specified principal(s).

Valid values: any Amazon SNS action name.

" } } }, @@ -1451,6 +1462,7 @@ "exception":true, "documentation":"

Indicates that the user has been denied access to the requested resource.

" }, + "Binary":{"type":"blob"}, "ConfirmSubscriptionInput":{ "type":"structure", "required":[ @@ -1468,7 +1480,7 @@ }, "AuthenticateOnUnsubscribe":{ "shape":"authenticateOnUnsubscribe", - "documentation":"

Disallows unauthenticated unsubscribes of the subscription. \n If the value of this parameter is true and the request has an AWS signature, then only the topic owner\n and the subscription owner can unsubscribe the endpoint. The unsubscribe\n action requires AWS authentication.

" + "documentation":"

Disallows unauthenticated unsubscribes of the subscription. If the value of this parameter is true and the request has an AWS signature, then only the topic owner and the subscription owner can unsubscribe the endpoint. The unsubscribe action requires AWS authentication.

" } }, "documentation":"Input for ConfirmSubscription action." @@ -1539,11 +1551,11 @@ }, "Token":{ "shape":"String", - "documentation":"

Unique identifier created by the notification service for an app on a device. \n The specific name for Token will vary, depending on which notification service is being used. \n For example, when using APNS as the notification service, you need the device token. \n Alternatively, when using GCM or ADM, the device token equivalent is called the registration ID.

" + "documentation":"

Unique identifier created by the notification service for an app on a device. The specific name for Token will vary, depending on which notification service is being used. For example, when using APNS as the notification service, you need the device token. Alternatively, when using GCM or ADM, the device token equivalent is called the registration ID.

" }, "CustomUserData":{ "shape":"String", - "documentation":"

Arbitrary user data to associate with the endpoint. SNS does not use this data. The data must be in UTF-8 format and less than 2KB.

" + "documentation":"

Arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB.

" }, "Attributes":{ "shape":"MapStringToString", @@ -1558,7 +1570,7 @@ "members":{ "Name":{ "shape":"topicName", - "documentation":"

The name of the topic you want to create.

\n

Constraints: Topic names must be made up of \n only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be \n between 1 and 256 characters long.

" + "documentation":"

The name of the topic you want to create.

Constraints: Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long.

" } }, "documentation":"

Input for CreateTopic action.

" @@ -1605,7 +1617,7 @@ "members":{ "TopicArn":{ "shape":"topicARN", - "documentation":"

The ARN of the topic you want to delete.

\n\n \n\n http://sns.us-east-1.amazonaws.com/\n ?TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic\n &Action=DeleteTopic\n &SignatureVersion=2\n &SignatureMethod=HmacSHA256\n &Timestamp=2010-03-31T12%3A00%3A00.000Z\n &AWSAccessKeyId=(AWS Access Key ID)\n &Signature=DjHBa%2BbYCKQAzctOPnLP7MbHnrHT3%2FK3kFEZjwcf9%2FU%3D\n\n \n \n \n\n \n fba800b9-3765-11df-8cf3-c58c53254dfb\n \n\n \n \n" + "documentation":"

The ARN of the topic you want to delete.

" } } }, @@ -1655,7 +1667,7 @@ "members":{ "Attributes":{ "shape":"MapStringToString", - "documentation":"

Attributes include the following:

\n
    \n \n
  • \nCustomUserData -- arbitrary user data to associate with the endpoint. SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • \n
  • \nEnabled -- flag that enables/disables delivery to the endpoint. \n Message Processor will set this to false when a notification service indicates to SNS that the endpoint is invalid. \n Users can set it back to true, typically after updating Token.
  • \n \n
  • \nToken -- device token, also referred to as a registration id, for an app and mobile device. \n This is returned from the notification service when an app and mobile device are registered with the notification service.
  • \n
" + "documentation":"

Attributes include the following:

  • CustomUserData -- arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • Enabled -- flag that enables/disables delivery to the endpoint. Amazon SNS will set this to false when a notification service indicates to Amazon SNS that the endpoint is invalid. Users can set it back to true, typically after updating Token.
  • Token -- device token, also referred to as a registration id, for an app and mobile device. This is returned from the notification service when an app and mobile device are registered with the notification service.
" } }, "documentation":"

Response from GetEndpointAttributes of the EndpointArn.

" @@ -1676,7 +1688,7 @@ "members":{ "Attributes":{ "shape":"MapStringToString", - "documentation":"

Attributes include the following:

\n
    \n \n \n
  • \nEventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • \n
  • \nEventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • \n
  • \nEventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • \n \n
  • \nEventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
  • \n \n
" + "documentation":"

Attributes include the following:

  • EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
" } }, "documentation":"

Response for GetPlatformApplicationAttributes action.

" @@ -1697,7 +1709,7 @@ "members":{ "Attributes":{ "shape":"SubscriptionAttributesMap", - "documentation":"

A map of the subscription's attributes. Attributes in this map include the following:

\n
    \n
  • \nSubscriptionArn -- the subscription's ARN
  • \n
  • \nTopicArn -- the topic ARN that the subscription is associated with
  • \n
  • \nOwner -- the AWS account ID of the subscription's owner
  • \n
  • \nConfirmationWasAuthenticated -- true if the subscription confirmation request was authenticated
  • \n
  • \nDeliveryPolicy -- the JSON serialization of the subscription's delivery policy
  • \n
  • \nEffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takes \n into account the topic delivery policy and account system defaults
  • \n
" + "documentation":"

A map of the subscription's attributes. Attributes in this map include the following:

  • SubscriptionArn -- the subscription's ARN
  • TopicArn -- the topic ARN that the subscription is associated with
  • Owner -- the AWS account ID of the subscription's owner
  • ConfirmationWasAuthenticated -- true if the subscription confirmation request was authenticated
  • DeliveryPolicy -- the JSON serialization of the subscription's delivery policy
  • EffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takes into account the topic delivery policy and account system defaults
" } }, "documentation":"

Response for GetSubscriptionAttributes action.

" @@ -1718,7 +1730,7 @@ "members":{ "Attributes":{ "shape":"TopicAttributesMap", - "documentation":"

A map of the topic's attributes. Attributes in this map include the following:

\n
    \n
  • \nTopicArn -- the topic's ARN
  • \n
  • \nOwner -- the AWS account ID of the topic's owner
  • \n
  • \nPolicy -- the JSON serialization of the topic's access control policy
  • \n
  • \nDisplayName -- the human-readable name used in the \"From\" field for notifications to email and email-json endpoints
  • \n
  • \nSubscriptionsPending -- the number of subscriptions pending confirmation on this topic
  • \n
  • \nSubscriptionsConfirmed -- the number of confirmed subscriptions on this topic
  • \n
  • \nSubscriptionsDeleted -- the number of deleted subscriptions on this topic
  • \n
  • \nDeliveryPolicy -- the JSON serialization of the topic's delivery policy
  • \n
  • \nEffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takes into account system defaults
  • \n
" + "documentation":"

A map of the topic's attributes. Attributes in this map include the following:

  • TopicArn -- the topic's ARN
  • Owner -- the AWS account ID of the topic's owner
  • Policy -- the JSON serialization of the topic's access control policy
  • DisplayName -- the human-readable name used in the \"From\" field for notifications to email and email-json endpoints
  • SubscriptionsPending -- the number of subscriptions pending confirmation on this topic
  • SubscriptionsConfirmed -- the number of confirmed subscriptions on this topic
  • SubscriptionsDeleted -- the number of deleted subscriptions on this topic
  • DeliveryPolicy -- the JSON serialization of the topic's delivery policy
  • EffectiveDeliveryPolicy -- the JSON serialization of the effective delivery policy that takes into account system defaults
" } }, "documentation":"

Response for GetTopicAttributes action.

" @@ -1749,6 +1761,19 @@ "exception":true, "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" }, + "InvalidParameterValueException":{ + "type":"structure", + "members":{ + "message":{"shape":"string"} + }, + "error":{ + "code":"ParameterValueInvalid", + "httpStatusCode":400, + "senderFault":true + }, + "exception":true, + "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" + }, "ListEndpointsByPlatformApplicationInput":{ "type":"structure", "required":["PlatformApplicationArn"], @@ -1860,7 +1885,8 @@ "shape":"nextToken", "documentation":"

Token to pass along to the next ListSubscriptions request. This element is returned if there are more subscriptions to retrieve.

" } - } + }, + "documentation":"

Response for ListSubscriptions action

" }, "ListTopicsInput":{ "type":"structure", @@ -1890,6 +1916,36 @@ "key":{"shape":"String"}, "value":{"shape":"String"} }, + "MessageAttributeMap":{ + "type":"map", + "key":{ + "shape":"String", + "locationName":"Name" + }, + "value":{ + "shape":"MessageAttributeValue", + "locationName":"Value" + } + }, + "MessageAttributeValue":{ + "type":"structure", + "required":["DataType"], + "members":{ + "DataType":{ + "shape":"String", + "documentation":"

Amazon SNS supports the following logical data types: String, Number, and Binary. For more information, see Message Attribute Data Types.

" + }, + "StringValue":{ + "shape":"String", + "documentation":"

Strings are Unicode with UTF8 binary encoding. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

" + }, + "BinaryValue":{ + "shape":"Binary", + "documentation":"

Binary type attributes can store any binary data, for example, compressed data, encrypted data, or images.

" + } + }, + "documentation":"

The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see Publish.

Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes). For more information, see Using Amazon SNS Message Attributes.

" + }, "NotFoundException":{ "type":"structure", "members":{ @@ -1947,15 +2003,19 @@ }, "Message":{ "shape":"message", - "documentation":"

The message you want to send to the topic.

\n

If you want to send the same message to all transport protocols,\n include the text of the message as a String value.

\n

If you want to send different messages for each transport protocol,\n set the value of the MessageStructure parameter to json\n and use a JSON object for the Message parameter.\n See the Examples section for the format of the JSON object.

\n

Constraints: Messages must be UTF-8 encoded\n strings at most 256 KB in size (262144 bytes, not 262144 characters).

\n

JSON-specific constraints:\n

    \n
  • Keys in the JSON object that correspond to supported transport\n protocols must have simple JSON string values.
  • \n
  • The values will be parsed (unescaped)\n before they are used in outgoing messages.
  • \n
  • Outbound notifications are JSON\n encoded (meaning that the characters will be reescaped for sending).
  • \n
  • Values have a minimum length of 0 (the empty string, \"\", is allowed).
  • \n
  • Values have a maximum length bounded by the overall message size (so, including\n multiple protocols may limit message sizes).
  • \n
  • Non-string values will cause the key\n to be ignored.
  • \n
  • Keys that do not correspond to supported transport protocols are ignored.
  • \n
  • Duplicate keys are not allowed.
  • \n
  • Failure to parse or validate any key or\n value in the message will cause the Publish call to return an error (no partial\n delivery).
  • \n
\n

" + "documentation":"

The message you want to send to the topic.

If you want to send the same message to all transport protocols, include the text of the message as a String value.

If you want to send different messages for each transport protocol, set the value of the MessageStructure parameter to json and use a JSON object for the Message parameter. See the Examples section for the format of the JSON object.

Constraints: Messages must be UTF-8 encoded strings at most 256 KB in size (262144 bytes, not 262144 characters).

JSON-specific constraints:

  • Keys in the JSON object that correspond to supported transport protocols must have simple JSON string values.
  • The values will be parsed (unescaped) before they are used in outgoing messages.
  • Outbound notifications are JSON encoded (meaning that the characters will be reescaped for sending).
  • Values have a minimum length of 0 (the empty string, \"\", is allowed).
  • Values have a maximum length bounded by the overall message size (so, including multiple protocols may limit message sizes).
  • Non-string values will cause the key to be ignored.
  • Keys that do not correspond to supported transport protocols are ignored.
  • Duplicate keys are not allowed.
  • Failure to parse or validate any key or value in the message will cause the Publish call to return an error (no partial delivery).

" }, "Subject":{ "shape":"subject", - "documentation":"

Optional parameter to be used as the \"Subject\" line when the message is\n delivered to email endpoints. This field will also be included, if present, \n in the standard JSON messages delivered to other endpoints.

\n

Constraints: Subjects must be ASCII text that begins with a letter, number, \n or punctuation mark; must not include line breaks or control characters; and \n must be less than 100 characters long.

" + "documentation":"

Optional parameter to be used as the \"Subject\" line when the message is delivered to email endpoints. This field will also be included, if present, in the standard JSON messages delivered to other endpoints.

Constraints: Subjects must be ASCII text that begins with a letter, number, or punctuation mark; must not include line breaks or control characters; and must be less than 100 characters long.

" }, "MessageStructure":{ "shape":"messageStructure", - "documentation":"

Set MessageStructure to json if you want to send\n a different message for each protocol. For example, using one publish action,\n you can send a short message to your SMS subscribers and a longer message to\n your email subscribers.\n If you set MessageStructure to json, the value of \n the Message parameter must:\n

\n
    \n
  • be a syntactically valid JSON object; and
  • \n
  • contain at least a top-level JSON key of \"default\" with a value that is a string.
  • \n
\n

You can define other top-level keys that define the message you want to send\n to a specific transport protocol (e.g., \"http\").

\n

For information about sending different messages for each protocol using\n the AWS Management Console, go to Create \n Different Messages for Each Protocol in the Amazon Simple Notification Service\n Getting Started Guide.\n

\n\n

Valid value: json

" + "documentation":"

Set MessageStructure to json if you want to send a different message for each protocol. For example, using one publish action, you can send a short message to your SMS subscribers and a longer message to your email subscribers. If you set MessageStructure to json, the value of the Message parameter must:

  • be a syntactically valid JSON object; and
  • contain at least a top-level JSON key of \"default\" with a value that is a string.

You can define other top-level keys that define the message you want to send to a specific transport protocol (e.g., \"http\").

For information about sending different messages for each protocol using the AWS Management Console, go to Create Different Messages for Each Protocol in the Amazon Simple Notification Service Getting Started Guide.

Valid value: json

" + }, + "MessageAttributes":{ + "shape":"MessageAttributeMap", + "documentation":"

Message attributes for Publish action.

" } }, "documentation":"

Input for Publish action.

" @@ -1965,7 +2025,7 @@ "members":{ "MessageId":{ "shape":"messageId", - "documentation":"

Unique identifier assigned to the published message.

\n

Length Constraint: Maximum 100 characters

" + "documentation":"

Unique identifier assigned to the published message.

Length Constraint: Maximum 100 characters

" } }, "documentation":"

Response for Publish action.

" @@ -2001,7 +2061,7 @@ }, "Attributes":{ "shape":"MapStringToString", - "documentation":"

A map of the endpoint attributes. Attributes in this map include the following:

\n
    \n \n
  • \nCustomUserData -- arbitrary user data to associate with the endpoint. SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • \n
  • \nEnabled -- flag that enables/disables delivery to the endpoint. \n Message Processor will set this to false when a notification service indicates to SNS that the endpoint is invalid. \n Users can set it back to true, typically after updating Token.
  • \n \n
  • \nToken -- device token, also referred to as a registration id, for an app and mobile device. \n This is returned from the notification service when an app and mobile device are registered with the notification service.
  • \n
" + "documentation":"

A map of the endpoint attributes. Attributes in this map include the following:

  • CustomUserData -- arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB.
  • Enabled -- flag that enables/disables delivery to the endpoint. Amazon SNS will set this to false when a notification service indicates to Amazon SNS that the endpoint is invalid. Users can set it back to true, typically after updating Token.
  • Token -- device token, also referred to as a registration id, for an app and mobile device. This is returned from the notification service when an app and mobile device are registered with the notification service.
" } }, "documentation":"

Input for SetEndpointAttributes action.

" @@ -2019,7 +2079,7 @@ }, "Attributes":{ "shape":"MapStringToString", - "documentation":"

A map of the platform application attributes. Attributes in this map include the following:

\n
    \n \n
  • \nPlatformCredential -- The credential received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is \"private key\". \n For GCM, PlatformCredential is \"API key\". For ADM, PlatformCredential is \"client secret\".
  • \n
  • \nPlatformPrincipal -- The principal received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is \"SSL certificate\". \n For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is \"client id\".
  • \n \n
  • \nEventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • \n
  • \nEventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • \n
  • \nEventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • \n \n
  • \nEventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
  • \n \n
" + "documentation":"

A map of the platform application attributes. Attributes in this map include the following:

  • PlatformCredential -- The credential received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is \"private key\". For GCM, PlatformCredential is \"API key\". For ADM, PlatformCredential is \"client secret\".
  • PlatformPrincipal -- The principal received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is \"SSL certificate\". For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is \"client id\".
  • EventEndpointCreated -- Topic ARN to which EndpointCreated event notifications should be sent.
  • EventEndpointDeleted -- Topic ARN to which EndpointDeleted event notifications should be sent.
  • EventEndpointUpdated -- Topic ARN to which EndpointUpdate event notifications should be sent.
  • EventDeliveryFailure -- Topic ARN to which DeliveryFailure event notifications should be sent upon Direct Publish delivery failure (permanent) to one of the application's endpoints.
" } }, "documentation":"

Input for SetPlatformApplicationAttributes action.

" @@ -2037,7 +2097,7 @@ }, "AttributeName":{ "shape":"attributeName", - "documentation":"

The name of the attribute you want to set. Only a subset of the subscriptions attributes are mutable.

\n

Valid values: DeliveryPolicy

" + "documentation":"

The name of the attribute you want to set. Only a subset of the subscriptions attributes are mutable.

Valid values: DeliveryPolicy | RawMessageDelivery

" }, "AttributeValue":{ "shape":"attributeValue", @@ -2059,7 +2119,7 @@ }, "AttributeName":{ "shape":"attributeName", - "documentation":"

The name of the attribute you want to set. Only a subset of the topic's attributes are mutable.

\n

Valid values: Policy | DisplayName | DeliveryPolicy

" + "documentation":"

The name of the attribute you want to set. Only a subset of the topic's attributes are mutable.

Valid values: Policy | DisplayName | DeliveryPolicy

" }, "AttributeValue":{ "shape":"attributeValue", @@ -2082,11 +2142,11 @@ }, "Protocol":{ "shape":"protocol", - "documentation":"

The protocol you want to use. Supported protocols include:

\n
    \n
  • \nhttp -- delivery of JSON-encoded message via HTTP POST
  • \n
  • \nhttps -- delivery of JSON-encoded message via HTTPS POST
  • \n
  • \nemail -- delivery of message via SMTP
  • \n
  • \nemail-json -- delivery of JSON-encoded message via SMTP
  • \n
  • \nsms -- delivery of message via SMS
  • \n
  • \nsqs -- delivery of JSON-encoded message to an Amazon SQS queue
  • \n
  • \napplication -- delivery of JSON-encoded message to an EndpointArn for a mobile app and device.
  • \n
" + "documentation":"

The protocol you want to use. Supported protocols include:

  • http -- delivery of JSON-encoded message via HTTP POST
  • https -- delivery of JSON-encoded message via HTTPS POST
  • email -- delivery of message via SMTP
  • email-json -- delivery of JSON-encoded message via SMTP
  • sms -- delivery of message via SMS
  • sqs -- delivery of JSON-encoded message to an Amazon SQS queue
  • application -- delivery of JSON-encoded message to an EndpointArn for a mobile app and device.
" }, "Endpoint":{ "shape":"endpoint", - "documentation":"

The endpoint that you want to receive notifications. Endpoints vary by protocol:

\n
    \n
  • For the http protocol, the endpoint is an URL beginning with \"http://\"
  • \n
  • For the https protocol, the endpoint is a URL beginning with \"https://\"
  • \n
  • For the email protocol, the endpoint is an email address
  • \n
  • For the email-json protocol, the endpoint is an email address
  • \n
  • For the sms protocol, the endpoint is a phone number of an SMS-enabled device
  • \n
  • For the sqs protocol, the endpoint is the ARN of an Amazon SQS queue
  • \n
  • For the application protocol, the endpoint is the EndpointArn of a mobile app and device.
  • \n
" + "documentation":"

The endpoint that you want to receive notifications. Endpoints vary by protocol:

  • For the http protocol, the endpoint is an URL beginning with \"http://\"
  • For the https protocol, the endpoint is a URL beginning with \"https://\"
  • For the email protocol, the endpoint is an email address
  • For the email-json protocol, the endpoint is an email address
  • For the sms protocol, the endpoint is a phone number of an SMS-enabled device
  • For the sqs protocol, the endpoint is the ARN of an Amazon SQS queue
  • For the application protocol, the endpoint is the EndpointArn of a mobile app and device.
" } }, "documentation":"Input for Subscribe action." @@ -2096,7 +2156,7 @@ "members":{ "SubscriptionArn":{ "shape":"subscriptionARN", - "documentation":"

The ARN of the subscription, if the service was able to create a \n subscription immediately (without requiring endpoint owner confirmation).

" + "documentation":"

The ARN of the subscription, if the service was able to create a subscription immediately (without requiring endpoint owner confirmation).

" } }, "documentation":"Response for Subscribe action." @@ -2125,7 +2185,7 @@ "documentation":"

The ARN of the subscription's topic.

" } }, - "documentation":"

A wrapper type for the attributes of an SNS subscription.

" + "documentation":"

A wrapper type for the attributes of an Amazon SNS subscription.

" }, "SubscriptionAttributesMap":{ "type":"map", diff --git a/SQS/AWSSQS.h b/SQS/AWSSQS.h index 1e72bea732d..133fabcd0e1 100644 --- a/SQS/AWSSQS.h +++ b/SQS/AWSSQS.h @@ -20,19 +20,18 @@ @class BFTask; /** - *

Welcome to the Amazon Simple Queue Service API Reference. This section describes who should read this guide, how the guide is organized, and other resources related to the Amazon Simple Queue Service (Amazon SQS).

Amazon SQS offers reliable and scalable hosted queues for storing messages as they travel between computers. By using Amazon SQS, you can move data between distributed components of your applications that perform different tasks without losing messages or requiring each component to be always available.

Helpful Links:

We also provide SDKs that enable you to access Amazon SQS from your preferred programming language.The SDKs contain functionality that automatically takes care of tasks such as:

  • Cryptographically signing your service requests
  • Retrying requests
  • Handling error responses

For a list of available SDKs, go to Tools for Amazon Web Services.

+ *

Welcome to the Amazon Simple Queue Service API Reference. This section describes who should read this guide, how the guide is organized, and other resources related to the Amazon Simple Queue Service (Amazon SQS).

Amazon SQS offers reliable and scalable hosted queues for storing messages as they travel between computers. By using Amazon SQS, you can move data between distributed components of your applications that perform different tasks without losing messages or requiring each component to be always available.

Helpful Links:

We also provide SDKs that enable you to access Amazon SQS from your preferred programming language. The SDKs contain functionality that automatically takes care of tasks such as:

  • Cryptographically signing your service requests
  • Retrying requests
  • Handling error responses

For a list of available SDKs, go to Tools for Amazon Web Services.

*/ @interface AWSSQS : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultSQS; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

Adds a permission to a queue for a specificprincipal. This allows for sharing access to the queue.

When you create a queue, you have full control access rights for the queue. Only you (as owner of the queue) can grant or deny permissions to the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide.

AddPermission writes an Amazon SQS-generated policy. If you want to write your own policy, use SetQueueAttributes to upload your policy. For more information about writing your own policy, see Using The Access Policy Language in the Amazon SQS Developer Guide.

Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

+ *

Adds a permission to a queue for a specific principal. This allows for sharing access to the queue.

When you create a queue, you have full control access rights for the queue. Only you (as owner of the queue) can grant or deny permissions to the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide.

&Attribute.1=this

&Attribute.2=that

* * @param request A container for the necessary parameters to execute the AddPermission service method. * @@ -43,7 +42,7 @@ - (BFTask *)addPermission:(AWSSQSAddPermissionRequest *)request; /** - *

Changes the visibility timeout of a specified message in a queue to a new value. The maximum allowed timeout value you can set the value to is 12 hours. This means you can't extend the timeout of a message in an existing queue to more than a total visibility timeout of 12 hours. (For more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.)

For example, let's say you have a message and its default message visibility timeout is 30 minutes. You could call ChangeMessageVisiblity with a value of two hours and the effective timeout would be two hours and 30 minutes. When that time comes near you could again extend the time out by calling ChangeMessageVisiblity, but this time the maximum allowed timeout would be 9 hours and 30 minutes.

There is a 120,000 limit for the number of inflight messages per queue. Messages are inflight after they have been received from the queue by a consuming component, but have not yet been deleted from the queue. If you reach the 120,000 limit, you will receive an OverLimit error message from Amazon SQS. To help avoid reaching the limit, you shoulddelete the messages from the queue after they have been processed. You can also increase the number of queues you use to process the messages.

If you attempt to set the VisibilityTimeout to an amount more than the maximum time left, Amazon SQS returns an error. It will not automatically recalculate and increase the timeout to the maximum time remaining.Unlike with a queue, when you change the visibility timeout for a specific message, that timeout value is applied immediately but is not saved in memory for that message. If you don't delete a message after it is received, the visibility timeout for the message the next time it is received reverts to the original timeout value, not the value you set with the ChangeMessageVisibility action. + *

Changes the visibility timeout of a specified message in a queue to a new value. The maximum allowed timeout value you can set the value to is 12 hours. This means you can't extend the timeout of a message in an existing queue to more than a total visibility timeout of 12 hours. (For more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.)

For example, let's say you have a message and its default message visibility timeout is 30 minutes. You could call ChangeMessageVisiblity with a value of two hours and the effective timeout would be two hours and 30 minutes. When that time comes near you could again extend the time out by calling ChangeMessageVisiblity, but this time the maximum allowed timeout would be 9 hours and 30 minutes.

If you attempt to set the VisibilityTimeout to an amount more than the maximum time left, Amazon SQS returns an error. It will not automatically recalculate and increase the timeout to the maximum time remaining.Unlike with a queue, when you change the visibility timeout for a specific message, that timeout value is applied immediately but is not saved in memory for that message. If you don't delete a message after it is received, the visibility timeout for the message the next time it is received reverts to the original timeout value, not the value you set with the ChangeMessageVisibility action. * * @param request A container for the necessary parameters to execute the ChangeMessageVisibility service method. * @@ -54,7 +53,7 @@ - (BFTask *)changeMessageVisibility:(AWSSQSChangeMessageVisibilityRequest *)request; /** - *

Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action.

Because the batch request can result in a combination of successful and unsuccessful actions,you should check for batch errors even when the call returns an HTTP status code of 200.Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

+ *

Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

&Attribute.1=this

&Attribute.2=that

* * @param request A container for the necessary parameters to execute the ChangeMessageVisibilityBatch service method. * @@ -66,7 +65,7 @@ - (BFTask *)changeMessageVisibilityBatch:(AWSSQSChangeMessageVisibilityBatchRequest *)request; /** - *

Creates a new queue, or returns the URL of an existing one. When you request CreateQueue, you provide a name for the queue. To successfully create a new queue, you must provide a name that is unique within the scope of your own queues.

If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

You may pass one or more attributes in the request. If you do not provide a value for any attribute, the queue will have the default value for that attribute. Permitted attributes are the same that can be set using SetQueueAttributes.

Use GetQueueUrl to get a queue's URL. GetQueueUrl requires only the QueueName parameter.

If you provide the name of an existing queue, along with the exact names and values of all the queue's attributes, CreateQueue returns the queue URL for the existing queue. If the queue name, attribute names,or attribute values do not match an existing queue, CreateQueue returns an error.

Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

+ *

Creates a new queue, or returns the URL of an existing one. When you request CreateQueue, you provide a name for the queue. To successfully create a new queue, you must provide a name that is unique within the scope of your own queues.

You may pass one or more attributes in the request. If you do not provide a value for any attribute, the queue will have the default value for that attribute. Permitted attributes are the same that can be set using SetQueueAttributes.

If you provide the name of an existing queue, along with the exact names and values of all the queue's attributes, CreateQueue returns the queue URL for the existing queue. If the queue name, attribute names, or attribute values do not match an existing queue, CreateQueue returns an error.

&Attribute.1=this

&Attribute.2=that

* * @param request A container for the necessary parameters to execute the CreateQueue service method. * @@ -78,7 +77,7 @@ - (BFTask *)createQueue:(AWSSQSCreateQueueRequest *)request; /** - *

Deletes the specified message from the specified queue. You specify the message by using the message's receipt handle and not the message ID you received when you sent the message. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue. If you leave a message in the queue for longer than the queue's configured retention period, Amazon SQS automatically deletes it.

The receipt handle is associated with a specific instance of receiving the message. If you receive a message more than once, the receipt handle you get each time you receive the message is different. When you request DeleteMessage, if you don't provide the most recently received receipt handle for the message, the request will still succeed, but the message might not be deleted.

It is possible you will receive a message even after you have deleted it. This might happen on rare occasions if one of the servers storing a copy of the message is unavailable when you request to delete the message. The copy remains on the server and might be returned to you again on a subsequent receive request. You should create your system to be idempotent so that receiving a particular message more than once is not a problem.

+ *

Deletes the specified message from the specified queue. You specify the message by using the message's receipt handle and not the message ID you received when you sent the message. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue. If you leave a message in the queue for longer than the queue's configured retention period, Amazon SQS automatically deletes it.

It is possible you will receive a message even after you have deleted it. This might happen on rare occasions if one of the servers storing a copy of the message is unavailable when you request to delete the message. The copy remains on the server and might be returned to you again on a subsequent receive request. You should create your system to be idempotent so that receiving a particular message more than once is not a problem.

* * @param request A container for the necessary parameters to execute the DeleteMessage service method. * @@ -89,7 +88,7 @@ - (BFTask *)deleteMessage:(AWSSQSDeleteMessageRequest *)request; /** - *

Deletes multiple messages. This is a batch version of DeleteMessage. The result of the delete action on each message is reported individually in the response.

Because the batch request can result in a combination of successful and unsuccessful actions,you should check for batch errors even when the call returns an HTTP status code of 200.

Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

+ *

Deletes multiple messages. This is a batch version of DeleteMessage. The result of the delete action on each message is reported individually in the response.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

&Attribute.1=this

&Attribute.2=that

* * @param request A container for the necessary parameters to execute the DeleteMessageBatch service method. * @@ -101,7 +100,7 @@ - (BFTask *)deleteMessageBatch:(AWSSQSDeleteMessageBatchRequest *)request; /** - *

Deletes the queue specified by the queue URL, regardless of whether the queue is empty. If the specified queue does not exist, Amazon SQS returns a successful response.

Use DeleteQueue with care; once you delete your queue, any messages in the queue are no longer available.

When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after the 60 seconds, the queue and that message you sent no longer exist. Also, when you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

We reserve the right to delete queues that have had no activity for more than 30 days. For more information, seeHow Amazon SQS Queues Work in the Amazon SQS Developer Guide.

+ *

Deletes the queue specified by the queue URL, regardless of whether the queue is empty. If the specified queue does not exist, Amazon SQS returns a successful response.

Use DeleteQueue with care; once you delete your queue, any messages in the queue are no longer available.

When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after the 60 seconds, the queue and that message you sent no longer exist. Also, when you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

We reserve the right to delete queues that have had no activity for more than 30 days. For more information, see How Amazon SQS Queues Work in the Amazon SQS Developer Guide.

* * @param request A container for the necessary parameters to execute the DeleteQueue service method. * @@ -112,7 +111,7 @@ - (BFTask *)deleteQueue:(AWSSQSDeleteQueueRequest *)request; /** - *

Gets attributes for the specified queue. The following attributes are supported:

  • All - returns all values.
  • ApproximateNumberOfMessages - returns the approximate number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide.
  • ApproximateNumberOfMessagesNotVisible - returns the approximate number of messages that are not timed-out and not deleted.For more information, seeResources Required to Process Messages in the Amazon SQS Developer Guide.
  • VisibilityTimeout - returns the visibility timeout for the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
  • CreatedTimestamp - returns the time when the queue was created (epoch time in seconds).
  • LastModifiedTimestamp - returns the time when the queue was last changed (epoch time in seconds).
  • Policy - returns the queue's policy.
  • MaximumMessageSize - returns the limit of how many bytes a message can contain before Amazon SQS rejects it.
  • MessageRetentionPeriod - returns the number of seconds Amazon SQS retains a message.
  • QueueArn - returns the queue's Amazon resource name (ARN).
  • ApproximateNumberOfMessagesDelayed - returns the approximate number of messages that are pending to be added to the queue.
  • DelaySeconds - returns the default delay on the queue in seconds.
  • ReceiveMessageWaitTimeSeconds - returns the time for which a ReceiveMessage call will wait for a message to arrive.
  • RedrivePolicy - returns the parameters for dead letter queue functionality of the source queue.For more information about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.

Going forward, new attributes might be added.If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

+ *

Gets attributes for the specified queue. The following attributes are supported:

  • All - returns all values.
  • ApproximateNumberOfMessages - returns the approximate number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide.
  • ApproximateNumberOfMessagesNotVisible - returns the approximate number of messages that are not timed-out and not deleted. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide.
  • VisibilityTimeout - returns the visibility timeout for the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
  • CreatedTimestamp - returns the time when the queue was created (epoch time in seconds).
  • LastModifiedTimestamp - returns the time when the queue was last changed (epoch time in seconds).
  • Policy - returns the queue's policy.
  • MaximumMessageSize - returns the limit of how many bytes a message can contain before Amazon SQS rejects it.
  • MessageRetentionPeriod - returns the number of seconds Amazon SQS retains a message.
  • QueueArn - returns the queue's Amazon resource name (ARN).
  • ApproximateNumberOfMessagesDelayed - returns the approximate number of messages that are pending to be added to the queue.
  • DelaySeconds - returns the default delay on the queue in seconds.
  • ReceiveMessageWaitTimeSeconds - returns the time for which a ReceiveMessage call will wait for a message to arrive.
  • RedrivePolicy - returns the parameters for dead letter queue functionality of the source queue. For more information about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.

&Attribute.1=this

&Attribute.2=that

* * @param request A container for the necessary parameters to execute the GetQueueAttributes service method. * @@ -124,7 +123,7 @@ - (BFTask *)getQueueAttributes:(AWSSQSGetQueueAttributesRequest *)request; /** - *

Returns the URL of an existing queue.This action provides a simple way to retrieve the URL of an Amazon SQS queue.

To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission toaccess the queue. For more information about shared queue access, see AddPermission or go to Shared Queues in the Amazon SQS Developer Guide.

+ *

Returns the URL of an existing queue. This action provides a simple way to retrieve the URL of an Amazon SQS queue.

To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission to access the queue. For more information about shared queue access, see AddPermission or go to Shared Queues in the Amazon SQS Developer Guide.

* * @param request A container for the necessary parameters to execute the GetQueueUrl service method. * @@ -160,7 +159,7 @@ - (BFTask *)listQueues:(AWSSQSListQueuesRequest *)request; /** - *

Retrieves one or more messages, with a maximum limit of 10 messages, from the specified queue. Long poll support is enabled by using the WaitTimeSeconds parameter.For more information, seeAmazon SQS Long Poll in the Amazon SQS Developer Guide.

Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call.This means only the messages on the sampled machines are returned. If the number of messages in the queue is small (less than 1000),it is likely you will get fewer messages than you requested per ReceiveMessage call.If the number of messages in the queue is extremely small, you might not receive any messages in a particular ReceiveMessage response; in which case you should repeat the request.

For each message returned, the response includes the following:

  • Message body

  • MD5 digest of the message body. For information about MD5, go tohttp://www.faqs.org/rfcs/rfc1321.html.

  • Message ID you received when you sent the message to the queue.

  • Receipt handle.

  • Message attributes.

  • MD5 digest of the message attributes.

The receipt handle is the identifier you must provide when deleting the message. For more information, seeQueue and Message Identifiers in the Amazon SQS Developer Guide.

You can provide the VisibilityTimeout parameter in your request, which will be applied to the messages that Amazon SQS returns in the response. If you do not include the parameter, the overall visibility timeout for the queue is used for the returned messages. For more information, seeVisibility Timeout in the Amazon SQS Developer Guide.

Going forward, new attributes might be added. If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.

+ *

Retrieves one or more messages, with a maximum limit of 10 messages, from the specified queue. Long poll support is enabled by using the WaitTimeSeconds parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide.

Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call. This means only the messages on the sampled machines are returned. If the number of messages in the queue is small (less than 1000), it is likely you will get fewer messages than you requested per ReceiveMessage call. If the number of messages in the queue is extremely small, you might not receive any messages in a particular ReceiveMessage response; in which case you should repeat the request.

For each message returned, the response includes the following:

  • Message body

  • MD5 digest of the message body. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

  • Message ID you received when you sent the message to the queue.

  • Receipt handle.

  • Message attributes.

  • MD5 digest of the message attributes.

The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide.

You can provide the VisibilityTimeout parameter in your request, which will be applied to the messages that Amazon SQS returns in the response. If you do not include the parameter, the overall visibility timeout for the queue is used for the returned messages. For more information, see Visibility Timeout in the Amazon SQS Developer Guide.

* * @param request A container for the necessary parameters to execute the ReceiveMessage service method. * @@ -195,7 +194,7 @@ - (BFTask *)sendMessage:(AWSSQSSendMessageRequest *)request; /** - *

Delivers up to ten messages to the specified queue. This is a batch version of SendMessage. The result of the send action on each message is reported individually in the response. The maximum allowed individual message size is 256 KB (262,144 bytes).

The maximum total payload size (i.e., the sum of all a batch's individual message lengths) is also 256 KB (262,144 bytes).

If the DelaySeconds parameter is not specified for an entry,the default for the queue is used.

The following list shows the characters (in Unicode) that are allowed in your message, according to the W3C XML specification. For more information, go to http://www.faqs.org/rfcs/rfc1321.html.If you send any characters that are not included in the list, your request will be rejected.

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

Because the batch request can result in a combination of successful and unsuccessful actions,you should check for batch errors even when the call returns an HTTP status code of 200.Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

+ *

Delivers up to ten messages to the specified queue. This is a batch version of SendMessage. The result of the send action on each message is reported individually in the response. The maximum allowed individual message size is 256 KB (262,144 bytes).

The maximum total payload size (i.e., the sum of all a batch's individual message lengths) is also 256 KB (262,144 bytes).

If the DelaySeconds parameter is not specified for an entry, the default for the queue is used.

The following list shows the characters (in Unicode) that are allowed in your message, according to the W3C XML specification. For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you send any characters that are not included in the list, your request will be rejected.

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

&Attribute.1=this

&Attribute.2=that

* * @param request A container for the necessary parameters to execute the SendMessageBatch service method. * @@ -207,7 +206,7 @@ - (BFTask *)sendMessageBatch:(AWSSQSSendMessageBatchRequest *)request; /** - *

Sets the value of one or more queue attributes. When you change a queue's attributes,the change can take up to 60 seconds for most of the attributes to propagate throughout the SQS system.Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes.

Going forward, new attributes might be added.If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully. + *

Sets the value of one or more queue attributes. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the SQS system. Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes.

* * @param request A container for the necessary parameters to execute the SetQueueAttributes service method. * diff --git a/SQS/AWSSQS.m b/SQS/AWSSQS.m index ed5bc9af14c..d11eeec38cf 100644 --- a/SQS/AWSSQS.m +++ b/SQS/AWSSQS.m @@ -15,8 +15,8 @@ #import "AWSSQS.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -46,21 +46,21 @@ + (void)initialize { @"IncompleteSignature" : @(AWSSQSErrorIncompleteSignature), @"InvalidClientTokenId" : @(AWSSQSErrorInvalidClientTokenId), @"MissingAuthenticationToken" : @(AWSSQSErrorMissingAuthenticationToken), - @"BatchEntryIdsNotDistinct" : @(AWSSQSErrorBatchEntryIdsNotDistinct), - @"BatchRequestTooLong" : @(AWSSQSErrorBatchRequestTooLong), - @"EmptyBatchRequest" : @(AWSSQSErrorEmptyBatchRequest), + @"AWS.SimpleQueueService.BatchEntryIdsNotDistinct" : @(AWSSQSErrorBatchEntryIdsNotDistinct), + @"AWS.SimpleQueueService.BatchRequestTooLong" : @(AWSSQSErrorBatchRequestTooLong), + @"AWS.SimpleQueueService.EmptyBatchRequest" : @(AWSSQSErrorEmptyBatchRequest), @"InvalidAttributeName" : @(AWSSQSErrorInvalidAttributeName), - @"InvalidBatchEntryId" : @(AWSSQSErrorInvalidBatchEntryId), + @"AWS.SimpleQueueService.InvalidBatchEntryId" : @(AWSSQSErrorInvalidBatchEntryId), @"InvalidIdFormat" : @(AWSSQSErrorInvalidIdFormat), @"InvalidMessageContents" : @(AWSSQSErrorInvalidMessageContents), - @"MessageNotInflight" : @(AWSSQSErrorMessageNotInflight), + @"AWS.SimpleQueueService.MessageNotInflight" : @(AWSSQSErrorMessageNotInflight), @"OverLimit" : @(AWSSQSErrorOverLimit), - @"QueueDeletedRecently" : @(AWSSQSErrorQueueDeletedRecently), - @"QueueDoesNotExist" : @(AWSSQSErrorQueueDoesNotExist), - @"QueueNameExists" : @(AWSSQSErrorQueueNameExists), + @"AWS.SimpleQueueService.QueueDeletedRecently" : @(AWSSQSErrorQueueDeletedRecently), + @"AWS.SimpleQueueService.NonExistentQueue" : @(AWSSQSErrorQueueDoesNotExist), + @"QueueAlreadyExists" : @(AWSSQSErrorQueueNameExists), @"ReceiptHandleIsInvalid" : @(AWSSQSErrorReceiptHandleIsInvalid), - @"TooManyEntriesInBatchRequest" : @(AWSSQSErrorTooManyEntriesInBatchRequest), - @"UnsupportedOperation" : @(AWSSQSErrorUnsupportedOperation), + @"AWS.SimpleQueueService.TooManyEntriesInBatchRequest" : @(AWSSQSErrorTooManyEntriesInBatchRequest), + @"AWS.SimpleQueueService.UnsupportedOperation" : @(AWSSQSErrorUnsupportedOperation), }; } @@ -93,7 +93,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSQSErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -101,8 +101,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSQSErrorDomain code:AWSSQSErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } } @@ -125,22 +124,22 @@ @interface AWSSQSRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSSQSRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSSQSErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSSQSErrorIncompleteSignature: case AWSSQSErrorInvalidClientTokenId: case AWSSQSErrorMissingAuthenticationToken: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -155,15 +154,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSSQS() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -187,25 +185,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceSQS]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceSQS]; AWSSignatureV4Signer *signer = [AWSSignatureV4Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSQSRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -214,9 +212,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -236,7 +234,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)addPermission:(AWSSQSAddPermissionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"AddPermission" @@ -245,7 +243,7 @@ - (BFTask *)addPermission:(AWSSQSAddPermissionRequest *)request { - (BFTask *)changeMessageVisibility:(AWSSQSChangeMessageVisibilityRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ChangeMessageVisibility" @@ -254,7 +252,7 @@ - (BFTask *)changeMessageVisibility:(AWSSQSChangeMessageVisibilityRequest *)requ - (BFTask *)changeMessageVisibilityBatch:(AWSSQSChangeMessageVisibilityBatchRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ChangeMessageVisibilityBatch" @@ -263,7 +261,7 @@ - (BFTask *)changeMessageVisibilityBatch:(AWSSQSChangeMessageVisibilityBatchRequ - (BFTask *)createQueue:(AWSSQSCreateQueueRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateQueue" @@ -272,7 +270,7 @@ - (BFTask *)createQueue:(AWSSQSCreateQueueRequest *)request { - (BFTask *)deleteMessage:(AWSSQSDeleteMessageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteMessage" @@ -281,7 +279,7 @@ - (BFTask *)deleteMessage:(AWSSQSDeleteMessageRequest *)request { - (BFTask *)deleteMessageBatch:(AWSSQSDeleteMessageBatchRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteMessageBatch" @@ -290,7 +288,7 @@ - (BFTask *)deleteMessageBatch:(AWSSQSDeleteMessageBatchRequest *)request { - (BFTask *)deleteQueue:(AWSSQSDeleteQueueRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteQueue" @@ -299,7 +297,7 @@ - (BFTask *)deleteQueue:(AWSSQSDeleteQueueRequest *)request { - (BFTask *)getQueueAttributes:(AWSSQSGetQueueAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetQueueAttributes" @@ -308,7 +306,7 @@ - (BFTask *)getQueueAttributes:(AWSSQSGetQueueAttributesRequest *)request { - (BFTask *)getQueueUrl:(AWSSQSGetQueueUrlRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetQueueUrl" @@ -317,7 +315,7 @@ - (BFTask *)getQueueUrl:(AWSSQSGetQueueUrlRequest *)request { - (BFTask *)listDeadLetterSourceQueues:(AWSSQSListDeadLetterSourceQueuesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListDeadLetterSourceQueues" @@ -326,7 +324,7 @@ - (BFTask *)listDeadLetterSourceQueues:(AWSSQSListDeadLetterSourceQueuesRequest - (BFTask *)listQueues:(AWSSQSListQueuesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListQueues" @@ -335,7 +333,7 @@ - (BFTask *)listQueues:(AWSSQSListQueuesRequest *)request { - (BFTask *)receiveMessage:(AWSSQSReceiveMessageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ReceiveMessage" @@ -344,7 +342,7 @@ - (BFTask *)receiveMessage:(AWSSQSReceiveMessageRequest *)request { - (BFTask *)removePermission:(AWSSQSRemovePermissionRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"RemovePermission" @@ -353,7 +351,7 @@ - (BFTask *)removePermission:(AWSSQSRemovePermissionRequest *)request { - (BFTask *)sendMessage:(AWSSQSSendMessageRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SendMessage" @@ -362,7 +360,7 @@ - (BFTask *)sendMessage:(AWSSQSSendMessageRequest *)request { - (BFTask *)sendMessageBatch:(AWSSQSSendMessageBatchRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SendMessageBatch" @@ -371,7 +369,7 @@ - (BFTask *)sendMessageBatch:(AWSSQSSendMessageBatchRequest *)request { - (BFTask *)setQueueAttributes:(AWSSQSSetQueueAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"SetQueueAttributes" diff --git a/SQS/AWSSQSModel.h b/SQS/AWSSQSModel.h index 526cd3f082f..dbe339251ef 100644 --- a/SQS/AWSSQSModel.h +++ b/SQS/AWSSQSModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSSQSErrorDomain; @@ -103,7 +103,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @property (nonatomic, strong) NSArray *AWSAccountIds; /** - *

The action the client wants to allow for the specified principal.The following are valid values: * | SendMessage | ReceiveMessage | DeleteMessage | ChangeMessageVisibility | GetQueueAttributes | GetQueueUrl.For more information about these actions, see Understanding Permissions in the Amazon SQS Developer Guide.

Specifying SendMessage, DeleteMessage, or ChangeMessageVisibility for theActionName.n also grants permissions for the corresponding batch versions of those actions: SendMessageBatch, DeleteMessageBatch, and ChangeMessageVisibilityBatch.

+ *

The action the client wants to allow for the specified principal. The following are valid values: * | SendMessage | ReceiveMessage | DeleteMessage | ChangeMessageVisibility | GetQueueAttributes | GetQueueUrl. For more information about these actions, see Understanding Permissions in the Amazon SQS Developer Guide.

Specifying SendMessage, DeleteMessage, or ChangeMessageVisibility for the ActionName.n also grants permissions for the corresponding batch versions of those actions: SendMessageBatch, DeleteMessageBatch, and ChangeMessageVisibilityBatch.

*/ @property (nonatomic, strong) NSArray *actions; @@ -123,7 +123,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

This is used in the responses of batch API to give a detailed description of the result of an action on each entry in the request.

* Required parameters: [Id, SenderFault, Code] */ -@interface AWSSQSBatchResultErrorEntry : AZModel +@interface AWSSQSBatchResultErrorEntry : AWSModel /** @@ -164,10 +164,10 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @end /** - *

Encloses a receipt handle and an entry id for each message in ChangeMessageVisibilityBatch.

All of the following parameters are list parameters that must be prefixed with ChangeMessageVisibilityBatchRequestEntry.n,where n is an integer value starting with 1. For example, a parameter list for this action might look like this:

&ChangeMessageVisibilityBatchRequestEntry.1.Id=change_visibility_msg_2

&ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle=Your_Receipt_Handle

&ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout=45

+ *

Encloses a receipt handle and an entry id for each message in ChangeMessageVisibilityBatch.

All of the following parameters are list parameters that must be prefixed with ChangeMessageVisibilityBatchRequestEntry.n, where n is an integer value starting with 1. For example, a parameter list for this action might look like this:

&ChangeMessageVisibilityBatchRequestEntry.1.Id=change_visibility_msg_2

&ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle=Your_Receipt_Handle

&ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout=45

* Required parameters: [Id, ReceiptHandle] */ -@interface AWSSQSChangeMessageVisibilityBatchRequestEntry : AZModel +@interface AWSSQSChangeMessageVisibilityBatchRequestEntry : AWSModel /** @@ -188,10 +188,10 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @end /** - *

For each message in the batch, the response contains aChangeMessageVisibilityBatchResultEntry tag if the message succeeds ora BatchResultErrorEntry tag if the message fails.

+ *

For each message in the batch, the response contains a ChangeMessageVisibilityBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

* Required parameters: [Successful, Failed] */ -@interface AWSSQSChangeMessageVisibilityBatchResult : AZModel +@interface AWSSQSChangeMessageVisibilityBatchResult : AWSModel /** @@ -210,7 +210,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

Encloses the id of an entry in ChangeMessageVisibilityBatch.

* Required parameters: [Id] */ -@interface AWSSQSChangeMessageVisibilityBatchResultEntry : AZModel +@interface AWSSQSChangeMessageVisibilityBatchResultEntry : AWSModel /** @@ -244,7 +244,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** - *

A map of attributes with their corresponding values.

The following lists the names, descriptions, and values of the special request parameters the CreateQueue action uses:

  • DelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • MessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • Policy - The queue's policy. A valid form-url-encoded policy. For more information about policy structure, see Basic Policy Structure in the Amazon SQS Developer Guide.For more information about form-url-encoding, seehttp://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • ReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • VisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.

+ *

A map of attributes with their corresponding values.

The following lists the names, descriptions, and values of the special request parameters the CreateQueue action uses:

  • DelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • MessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • Policy - The queue's policy. A valid form-url-encoded policy. For more information about policy structure, see Basic Policy Structure in the Amazon SQS Developer Guide. For more information about form-url-encoding, see http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • ReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • VisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.

*/ @property (nonatomic, strong) NSDictionary *attributes; @@ -258,7 +258,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** *

Returns the QueueUrl element of the created queue.

*/ -@interface AWSSQSCreateQueueResult : AZModel +@interface AWSSQSCreateQueueResult : AWSModel /** @@ -287,7 +287,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

Encloses a receipt handle and an identifier for it.

* Required parameters: [Id, ReceiptHandle] */ -@interface AWSSQSDeleteMessageBatchRequestEntry : AZModel +@interface AWSSQSDeleteMessageBatchRequestEntry : AWSModel /** @@ -303,10 +303,10 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @end /** - *

For each message in the batch, the response contains aDeleteMessageBatchResultEntry tag if the message is deleted ora BatchResultErrorEntry tag if the message cannot be deleted.

+ *

For each message in the batch, the response contains a DeleteMessageBatchResultEntry tag if the message is deleted or a BatchResultErrorEntry tag if the message cannot be deleted.

* Required parameters: [Successful, Failed] */ -@interface AWSSQSDeleteMessageBatchResult : AZModel +@interface AWSSQSDeleteMessageBatchResult : AWSModel /** @@ -325,7 +325,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

Encloses the id an entry in DeleteMessageBatch.

* Required parameters: [Id] */ -@interface AWSSQSDeleteMessageBatchResultEntry : AZModel +@interface AWSSQSDeleteMessageBatchResultEntry : AWSModel /** @@ -378,7 +378,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** * A list of returned queue attributes. */ -@interface AWSSQSGetQueueAttributesResult : AZModel +@interface AWSSQSGetQueueAttributesResult : AWSModel /** @@ -392,7 +392,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** - *

The name of the queue whose URL must be fetched.Maximum 80 characters; alphanumeric characters, hyphens (-), and underscores (_) are allowed.

+ *

The name of the queue whose URL must be fetched. Maximum 80 characters; alphanumeric characters, hyphens (-), and underscores (_) are allowed.

*/ @property (nonatomic, strong) NSString *queueName; @@ -404,9 +404,9 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @end /** - *

For more information, seeResponses in the Amazon SQS Developer Guide.

+ *

For more information, see Responses in the Amazon SQS Developer Guide.

*/ -@interface AWSSQSGetQueueUrlResult : AZModel +@interface AWSSQSGetQueueUrlResult : AWSModel /** @@ -430,7 +430,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { * A list of your dead letter source queues. * Required parameters: [queueUrls] */ -@interface AWSSQSListDeadLetterSourceQueuesResult : AZModel +@interface AWSSQSListDeadLetterSourceQueuesResult : AWSModel /** @@ -453,7 +453,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** * A list of your queues. */ -@interface AWSSQSListQueuesResult : AZModel +@interface AWSSQSListQueuesResult : AWSModel /** @@ -466,11 +466,11 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** *

An Amazon SQS message.

*/ -@interface AWSSQSMessage : AZModel +@interface AWSSQSMessage : AWSModel /** - *

SenderId, SentTimestamp, ApproximateReceiveCount, and/orApproximateFirstReceiveTimestamp. SentTimestamp and ApproximateFirstReceiveTimestamp are each returned as an integer representing theepoch time in milliseconds.

+ *

SenderId, SentTimestamp, ApproximateReceiveCount, and/or ApproximateFirstReceiveTimestamp. SentTimestamp and ApproximateFirstReceiveTimestamp are each returned as an integer representing the epoch time in milliseconds.

*/ @property (nonatomic, strong) NSDictionary *attributes; @@ -500,7 +500,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @property (nonatomic, strong) NSString *messageId; /** - *

An identifier associated with the act of receiving the message.A new receipt handle is returned every time you receive a message.When deleting a message, you provide the last received receipt handle to delete the message.

+ *

An identifier associated with the act of receiving the message. A new receipt handle is returned every time you receive a message. When deleting a message, you provide the last received receipt handle to delete the message.

*/ @property (nonatomic, strong) NSString *receiptHandle; @@ -510,7 +510,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see SendMessage.

Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes).

* Required parameters: [DataType] */ -@interface AWSSQSMessageAttributeValue : AZModel +@interface AWSSQSMessageAttributeValue : AWSModel /** @@ -544,7 +544,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** - *

A list of attributes that need to be returned along with each message.

The following lists the names and descriptions of the attributes that can be returned:

  • All - returns all values.
  • ApproximateFirstReceiveTimestamp - returns the time when the message was first received (epoch time in milliseconds).
  • ApproximateReceiveCount - returns the number of times a message has been received but not deleted.
  • SenderId - returns the AWS account number (or the IP address, if anonymous access is allowed) of the sender.
  • SentTimestamp - returns the time when the message was sent (epoch time in milliseconds).
+ *

A list of attributes that need to be returned along with each message.

The following lists the names and descriptions of the attributes that can be returned:

  • All - returns all values.
  • ApproximateFirstReceiveTimestamp - returns the time when the message was first received (epoch time in milliseconds).
  • ApproximateReceiveCount - returns the number of times a message has been received but not deleted.
  • SenderId - returns the AWS account number (or the IP address, if anonymous access is allowed) of the sender.
  • SentTimestamp - returns the time when the message was sent (epoch time in milliseconds).
*/ @property (nonatomic, strong) NSArray *attributeNames; @@ -554,7 +554,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @property (nonatomic, strong) NSNumber *maxNumberOfMessages; /** - *

The message attribute Name can contain the following characters: A-Z, a-z, 0-9, underscore(_), hyphen(-), and period (.).The message attribute name must not start or end with a period, and it should not have successive periods. The message attribute name is case sensitive and must be unique among all attributenames for the message. The message attribute name can be up to 256 characters long. Attribute names cannot start with "AWS." or "Amazon." because these prefixes are reserved for use by Amazon Web Services.

+ *

The message attribute Name can contain the following characters: A-Z, a-z, 0-9, underscore(_), hyphen(-), and period (.). The message attribute name must not start or end with a period, and it should not have successive periods. The message attribute name is case sensitive and must be unique among all attribute names for the message. The message attribute name can be up to 256 characters long. Attribute names cannot start with "AWS." or "Amazon." because these prefixes are reserved for use by Amazon Web Services.

*/ @property (nonatomic, strong) NSArray *messageAttributeNames; @@ -569,7 +569,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @property (nonatomic, strong) NSNumber *visibilityTimeout; /** - *

The duration (in seconds) for which the call will wait for a message to arrive in the queue before returning.If a message is available, the call will return sooner than WaitTimeSeconds.

+ *

The duration (in seconds) for which the call will wait for a message to arrive in the queue before returning. If a message is available, the call will return sooner than WaitTimeSeconds.

*/ @property (nonatomic, strong) NSNumber *waitTimeSeconds; @@ -578,7 +578,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** * A list of received messages. */ -@interface AWSSQSReceiveMessageResult : AZModel +@interface AWSSQSReceiveMessageResult : AWSModel /** @@ -622,7 +622,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

Contains the details of a single Amazon SQS message along with a Id.

* Required parameters: [Id, MessageBody] */ -@interface AWSSQSSendMessageBatchRequestEntry : AZModel +@interface AWSSQSSendMessageBatchRequestEntry : AWSModel /** @@ -651,7 +651,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

For each message in the batch, the response contains a SendMessageBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

* Required parameters: [Successful, Failed] */ -@interface AWSSQSSendMessageBatchResult : AZModel +@interface AWSSQSSendMessageBatchResult : AWSModel /** @@ -670,7 +670,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { *

Encloses a message ID for successfully enqueued message of a SendMessageBatch.

* Required parameters: [Id, MessageId, MD5OfMessageBody] */ -@interface AWSSQSSendMessageBatchResultEntry : AZModel +@interface AWSSQSSendMessageBatchResultEntry : AWSModel /** @@ -699,7 +699,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** - *

The number of seconds (0 to 900 - 15 minutes) to delay a specific message. Messages with a positive DelaySeconds valuebecome available for processing after the delay time is finished. If you don't specify a value, the default value for the queue applies.

+ *

The number of seconds (0 to 900 - 15 minutes) to delay a specific message. Messages with a positive DelaySeconds value become available for processing after the delay time is finished. If you don't specify a value, the default value for the queue applies.

*/ @property (nonatomic, strong) NSNumber *delaySeconds; @@ -723,7 +723,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** *

The MD5OfMessageBody and MessageId elements.

*/ -@interface AWSSQSSendMessageResult : AZModel +@interface AWSSQSSendMessageResult : AWSModel /** @@ -737,7 +737,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { @property (nonatomic, strong) NSString *MD5OfMessageBody; /** - *

An element containing the message ID of the message sent to the queue. For more information, seeQueue and Message Identifiersin the Amazon SQS Developer Guide.

+ *

An element containing the message ID of the message sent to the queue. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide.

*/ @property (nonatomic, strong) NSString *messageId; @@ -747,7 +747,7 @@ typedef NS_ENUM(NSInteger, AWSSQSQueueAttributeName) { /** - *

A map of attributes to set.

The following lists the names, descriptions, and values of the special request parameters the SetQueueAttributes action uses:

  • DelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • MessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • Policy - The queue's policy. A valid form-url-encoded policy. For more information about policy structure, see Basic Policy Structure in the Amazon SQS Developer Guide.For more information about form-url-encoding, seehttp://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • ReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • VisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
  • RedrivePolicy - The parameters for dead letter queue functionality of the source queue.For more information about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.

+ *

A map of attributes to set.

The following lists the names, descriptions, and values of the special request parameters the SetQueueAttributes action uses:

  • DelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • MessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • Policy - The queue's policy. A valid form-url-encoded policy. For more information about policy structure, see Basic Policy Structure in the Amazon SQS Developer Guide. For more information about form-url-encoding, see http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • ReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • VisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
  • RedrivePolicy - The parameters for dead letter queue functionality of the source queue. For more information about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.

*/ @property (nonatomic, strong) NSDictionary *attributes; diff --git a/SQS/AWSSQSModel.m b/SQS/AWSSQSModel.m index a4769f5a2f7..9319e961235 100644 --- a/SQS/AWSSQSModel.m +++ b/SQS/AWSSQSModel.m @@ -14,7 +14,7 @@ */ #import "AWSSQSModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSSQSErrorDomain = @"com.amazonaws.AWSSQSErrorDomain"; @@ -307,9 +307,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)messageAttributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSQSMessageAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSQSMessageAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -397,9 +397,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)messageAttributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSQSMessageAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSQSMessageAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } @@ -450,9 +450,9 @@ + (NSDictionary *)JSONKeyPathsByPropertyKey { + (NSValueTransformer *)messageAttributesJSONTransformer { return [MTLValueTransformer reversibleTransformerWithForwardBlock:^id(id JSONDictionary) { - return [AZModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSQSMessageAttributeValue class]]; + return [AWSModelUtility mapMTLDictionaryFromJSONDictionary:JSONDictionary withModelClass:[AWSSQSMessageAttributeValue class]]; } reverseBlock:^id(id mapMTLDictionary) { - return [AZModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; + return [AWSModelUtility JSONDictionaryFromMapMTLDictionary:mapMTLDictionary]; }]; } diff --git a/SQS/Resources/sqs-2012-11-05.json b/SQS/Resources/sqs-2012-11-05.json index 614d1018ca2..7b3bea4f69d 100644 --- a/SQS/Resources/sqs-2012-11-05.json +++ b/SQS/Resources/sqs-2012-11-05.json @@ -8,7 +8,7 @@ "xmlNamespace":"http://queue.amazonaws.com/doc/2012-11-05/", "protocol":"query" }, - "documentation":"

Welcome to the Amazon Simple Queue Service API Reference. This section\n describes who should read this guide, how the guide is organized, and other resources related to the\n Amazon Simple Queue Service (Amazon SQS).

\n

Amazon SQS offers reliable and scalable hosted queues for storing messages as they travel\n between computers. By using Amazon SQS, you can move data between distributed components of\n your applications that perform different tasks without losing messages or requiring each\n component to be always available.

\n

Helpful Links:\n

\n

\n

We also provide SDKs that enable you to access Amazon SQS from your preferred programming language. \n The SDKs contain functionality that automatically takes care of tasks such as:

\n

\n

    \n
  • Cryptographically signing your service requests
  • \n
  • Retrying requests
  • \n
  • Handling error responses
  • \n
\n

\n

For a list of available SDKs, go to Tools for Amazon Web Services.

", + "documentation":"

Welcome to the Amazon Simple Queue Service API Reference. This section describes who should read this guide, how the guide is organized, and other resources related to the Amazon Simple Queue Service (Amazon SQS).

Amazon SQS offers reliable and scalable hosted queues for storing messages as they travel between computers. By using Amazon SQS, you can move data between distributed components of your applications that perform different tasks without losing messages or requiring each component to be always available.

Helpful Links:

We also provide SDKs that enable you to access Amazon SQS from your preferred programming language. The SDKs contain functionality that automatically takes care of tasks such as:

  • Cryptographically signing your service requests
  • Retrying requests
  • Handling error responses

For a list of available SDKs, go to Tools for Amazon Web Services.

", "operations":{ "AddPermission":{ "name":"AddPermission", @@ -26,10 +26,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The action that you requested would violate a limit. For example,\n ReceiveMessage returns this error if the maximum number of messages\n inflight has already been reached. AddPermission returns this error if\n the maximum number of permissions for the queue has already been reached.\n

" + "documentation":"

The action that you requested would violate a limit. For example, ReceiveMessage returns this error if the maximum number of messages inflight has already been reached. AddPermission returns this error if the maximum number of permissions for the queue has already been reached.

" } ], - "documentation":"

Adds a permission to a queue for a specific \n principal.\n This allows for sharing access to the queue.

\n\n

When you create a queue, you have full control access rights for the queue.\n Only you (as owner of the queue) can grant or deny permissions to the queue.\n For more information about these permissions, see\n Shared\n Queues in the Amazon SQS Developer Guide.

\n\n \n

AddPermission writes an Amazon SQS-generated policy. If you want to\n write your own policy, use SetQueueAttributes to upload your policy. For more\n information about writing your own policy, see\n Using\n The Access Policy Language in the Amazon SQS Developer Guide.

\n
\n \n Some API actions take lists of parameters. These lists are specified using the param.n notation. Values\n of n are integers starting from 1. For example, a parameter list with two elements looks like this: \n \n

&Attribute.1=this

\n

&Attribute.2=that

\n \n \n \n The following example Query request grants a SendMessage permission to the principal whose AWS account number is 125074342641.\n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=AddPermission\n&Label=testLabel\n&AWSAccountId.1=125074342641\n&ActionName.1=SendMessage\n&AWSAccountId.2=125074342642\n&ActionName.2=ReceiveMessage\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n 9a285199-c8d6-47c2-bdb2-314cb47d599d\n \n \n\n\n \n \n " + "documentation":"

Adds a permission to a queue for a specific principal. This allows for sharing access to the queue.

When you create a queue, you have full control access rights for the queue. Only you (as owner of the queue) can grant or deny permissions to the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide.

&Attribute.1=this

&Attribute.2=that

" }, "ChangeMessageVisibility":{ "name":"ChangeMessageVisibility", @@ -55,7 +55,7 @@ "documentation":"

The receipt handle provided is not valid.

" } ], - "documentation":"

Changes the visibility\n timeout of a specified message in a queue to a new value. The maximum allowed\n timeout value you can set the value to is 12 hours. This means you can't extend\n the timeout of a message in an existing queue to more than a total visibility\n timeout of 12 hours. (For more information visibility timeout, see Visibility\n Timeout in the Amazon SQS Developer Guide.)

\n\n

For example, let's say you have a message and its default message visibility\n timeout is 30 minutes. You could call ChangeMessageVisiblity with\n a value of two hours and the effective timeout would be two hours and 30\n minutes. When that time comes near you could again extend the time out by\n calling ChangeMessageVisiblity, but this time the maximum allowed timeout would\n be 9 hours and 30 minutes.

\n \n

There is a 120,000 limit for the number of inflight messages per queue. Messages are inflight after they have been received from the queue by a consuming component, but have not yet been deleted from the queue. If you reach the 120,000 limit, you will receive an OverLimit error message from Amazon SQS. To help avoid reaching the limit, you should \n delete the messages from the queue after they have been processed. You can also increase the number of queues you use to process the messages.\n

\n\n If you attempt to set the VisibilityTimeout to an\n amount more than the maximum time left, Amazon SQS returns an error. It will\n not automatically recalculate and increase the timeout to the maximum time\n remaining.\n\n Unlike with a queue, when you change the visibility timeout for a\n specific message, that timeout value is applied immediately but is not saved in\n memory for that message. If you don't delete a message after it is received,\n the visibility timeout for the message the next time it is received reverts to\n the original timeout value, not the value you set with the\n ChangeMessageVisibility action.\n \n \n \n The following example Query request changes the visibility timeout for a message to 60 seconds.\n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=ChangeMessageVisibility\n&VisibilityTimeout=60\n&ReceiptHandle=MbZj6wDWli%2BJvwwJaBV%2B3dcjk2YW2vA3%2BSTFFljT\nM8tJJg6HRG6PYSasuWXPJB%2BCwLj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGY\nWbnLmpRCJVAyeMjeU5ZBdtcQ%2BQEauMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/K\nSbkJ0=\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n 6a7a282a-d013-4a59-aba9-335b0fa48bed\n \n \n\n\n \n \n " + "documentation":"

Changes the visibility timeout of a specified message in a queue to a new value. The maximum allowed timeout value you can set the value to is 12 hours. This means you can't extend the timeout of a message in an existing queue to more than a total visibility timeout of 12 hours. (For more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.)

For example, let's say you have a message and its default message visibility timeout is 30 minutes. You could call ChangeMessageVisiblity with a value of two hours and the effective timeout would be two hours and 30 minutes. When that time comes near you could again extend the time out by calling ChangeMessageVisiblity, but this time the maximum allowed timeout would be 9 hours and 30 minutes.

If you attempt to set the VisibilityTimeout to an amount more than the maximum time left, Amazon SQS returns an error. It will not automatically recalculate and increase the timeout to the maximum time remaining. Unlike with a queue, when you change the visibility timeout for a specific message, that timeout value is applied immediately but is not saved in memory for that message. If you don't delete a message after it is received, the visibility timeout for the message the next time it is received reverts to the original timeout value, not the value you set with the ChangeMessageVisibility action." }, "ChangeMessageVisibilityBatch":{ "name":"ChangeMessageVisibilityBatch", @@ -66,7 +66,7 @@ "input":{"shape":"ChangeMessageVisibilityBatchRequest"}, "output":{ "shape":"ChangeMessageVisibilityBatchResult", - "documentation":"

\n For each message in the batch, the response contains a \n ChangeMessageVisibilityBatchResultEntry tag if the message succeeds or \n a BatchResultErrorEntry tag if the message fails.\n

", + "documentation":"

For each message in the batch, the response contains a ChangeMessageVisibilityBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

", "resultWrapper":"ChangeMessageVisibilityBatchResult" }, "errors":[ @@ -108,10 +108,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide\n by the specification.

" + "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" } ], - "documentation":"

Changes the visibility timeout of multiple messages.\n This is a batch version of ChangeMessageVisibility. The\n result of the action on each message is reported individually in the\n response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action.

\n Because the batch request can result in a combination of successful and unsuccessful actions, \n you should check for batch errors even when the call returns an HTTP status code of 200.\n Some API actions take lists of parameters. These lists are specified using the param.n notation. Values\n of n are integers starting from 1. For example, a parameter list with two elements looks like this: \n \n

&Attribute.1=this

\n

&Attribute.2=that

\n \n \n \n ChangeMessageVisibilityBatch request changes the visibility timeout settings for two messages. \n You must URL encode the entire URL; however, we've URL encoded\n only the message body to make the example easier for you to read.\n \n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n&Action=ChangeMessageVisibilityBatch\n&Version=2011-10-01\n&ChangeMessageVisibilityBatchRequestEntry.1.Id=change_visibility_msg_2\n&ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle=gfk0T0R0waama4fVFffkjKzmhMCymjQvfTFk2LxT33G4ms5subrE0deLKWSscPU1oD3J9zgeS4PQQ3U30qOumIE6AdAv3w%2F%2Fa1IXW6AqaWhGsEPaLm3Vf6IiWqdM8u5imB%2BNTwj3tQRzOWdTOePjOjPcTpRxBtXix%2BEvwJOZUma9wabv%2BSw6ZHjwmNcVDx8dZXJhVp16Bksiox%2FGrUvrVTCJRTWTLc59oHLLF8sEkKzRmGNzTDGTiV%2BYjHfQj60FD3rVaXmzTsoNxRhKJ72uIHVMGVQiAGgBX6HGv9LDmYhPXw4hy%2FNgIg%3D%3D\n&ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout=45\n&ChangeMessageVisibilityBatchRequestEntry.2.Id=change_visibility_msg_3\n&ChangeMessageVisibilityBatchRequestEntry.2.ReceiptHandle=gfk0T0R0waama4fVFffkjKzmhMCymjQvfTFk2LxT33FUgBz3%2BnougdeLKWSscPU1%2FXgx%2BxcNnjnQQ3U30qOumIE6AdAv3w%2F%2Fa1IXW6AqaWhGsEPaLm3Vf6IiWqdM8u5imB%2BNTwj3tQRzOWdTOePjOsogjZM%2F7kzn4Ew27XLU9I%2FYaWYmKvDbq%2Fk3HKVB9HfB43kE49atP2aWrzNL4yunG41Q4cfRRtfJdcGQGNHQ2%2Byd0Usf5qR1dZr1iDo5xk946eQat83AxTRP%2BY4Qi0V7FAeSLH9su9xpX6HGv9LDmYhPXw4hy%2FNgIg%3D%3D\n&ChangeMessageVisibilityBatchRequestEntry.2.VisibilityTimeout=45\n&SignatureMethod=HmacSHA256\n&Expires=2011-10-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n change_visibility_msg_2\n \n \n change_visibility_msg_3\n \n \n \n ca9668f7-ab1b-4f7a-8859-f15747ab17a7\n \n\n\n \n \n " + "documentation":"

Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

&Attribute.1=this

&Attribute.2=that

" }, "CreateQueue":{ "name":"CreateQueue", @@ -134,7 +134,7 @@ "senderFault":true }, "exception":true, - "documentation":"

You must wait 60 seconds after deleting a queue before you can create another\n with the same name.

" + "documentation":"

You must wait 60 seconds after deleting a queue before you can create another with the same name.

" }, { "shape":"QueueNameExists", @@ -144,10 +144,10 @@ "senderFault":true }, "exception":true, - "documentation":"

A queue already exists with this name. Amazon SQS returns this error only if the request includes\n attributes whose values differ from those of the existing queue.

" + "documentation":"

A queue already exists with this name. Amazon SQS returns this error only if the request includes attributes whose values differ from those of the existing queue.

" } ], - "documentation":"

Creates a new queue, or returns the URL\n of an existing one. When you request CreateQueue, you provide a\n name for the queue. To successfully create a new queue, you must provide a name\n that is unique within the scope of your own queues.

\n \n \n

If you delete a queue, you must wait at least 60 seconds before creating a queue with the\n same name.

\n
\n\n

You may pass one or more attributes in the request. If you do not\n provide a value for any attribute, the queue will have the default value\n for that attribute. Permitted attributes are the same that can be set\n using SetQueueAttributes.

\n \n

Use GetQueueUrl to get a queue's URL.\n GetQueueUrl requires only the QueueName parameter.

\n\n

If you provide the name of an existing queue, along with the exact names and values of all the queue's attributes,\n CreateQueue returns the queue URL for the existing queue. If the queue name, attribute names, \n or attribute values do not match an existing queue, CreateQueue returns an error.

\n \n Some API actions take lists of parameters. These lists are specified using the param.n notation. Values\n of n are integers starting from 1. For example, a parameter list with two elements looks like this: \n \n

&Attribute.1=this

\n

&Attribute.2=that

\n \n \n \n The following example Query request creates a new queue named testQueue.\n \n \nhttp://sqs.us-east-1.amazonaws.com/\n?Action=CreateQueue\n&QueueName=testQueue\n&Attribute.1.Name=VisibilityTimeout\n&Attribute.1.Value=40\n&Version=2011-10-01\n&SignatureMethod=HmacSHA256\n&Expires=2011-10-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n http://&useast1-query;/123456789012/testQueue\n \n \n \n \n 7a62c49f-347e-4fc4-9331-6e8e7a96aa73\n \n \n\n\n \n \n " + "documentation":"

Creates a new queue, or returns the URL of an existing one. When you request CreateQueue, you provide a name for the queue. To successfully create a new queue, you must provide a name that is unique within the scope of your own queues.

You may pass one or more attributes in the request. If you do not provide a value for any attribute, the queue will have the default value for that attribute. Permitted attributes are the same that can be set using SetQueueAttributes.

If you provide the name of an existing queue, along with the exact names and values of all the queue's attributes, CreateQueue returns the queue URL for the existing queue. If the queue name, attribute names, or attribute values do not match an existing queue, CreateQueue returns an error.

&Attribute.1=this

&Attribute.2=that

" }, "DeleteMessage":{ "name":"DeleteMessage", @@ -168,7 +168,7 @@ "documentation":"

The receipt handle provided is not valid.

" } ], - "documentation":"

\n Deletes the specified message from the specified\n queue. You specify the message by using the message's receipt\n handle and not the message ID you received when you\n sent the message. Even if the message is locked by another reader due to the visibility\n timeout setting, it is still deleted from the queue. If you leave a message in the queue\n for longer than the queue's configured retention period, Amazon SQS automatically deletes\n it. \n

\n \n

\n The receipt handle is associated with a specific instance of receiving the message. If\n you receive a message more than once, the receipt handle you get each time you receive the\n message is different. When you request DeleteMessage, if you don't\n provide the most recently received receipt handle for the message, the request will still\n succeed, but the message might not be deleted.\n

\n
\n \n

\n It is possible you will receive a message even after you have deleted it. This might\n happen on rare occasions if one of the servers storing a copy of the message is unavailable\n when you request to delete the message. The copy remains on the server and might be returned\n to you again on a subsequent receive request. You should create your system to be idempotent\n so that receiving a particular message more than once is not a problem.\n

\n
\n \n \n The following example Query request deletes a message from the queue named testQueue.\n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=DeleteMessage\n&ReceiptHandle=MbZj6wDWli%2BJvwwJaBV%2B3dcjk2YW2vA3%2BSTFFljT\nM8tJJg6HRG6PYSasuWXPJB%2BCwLj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGY\nWbnLmpRCJVAyeMjeU5ZBdtcQ%2BQEauMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/K\nSbkJ0=\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n b5293cb5-d306-4a17-9048-b263635abe42\n \n \n\n\n \n \n " + "documentation":"

Deletes the specified message from the specified queue. You specify the message by using the message's receipt handle and not the message ID you received when you sent the message. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue. If you leave a message in the queue for longer than the queue's configured retention period, Amazon SQS automatically deletes it.

It is possible you will receive a message even after you have deleted it. This might happen on rare occasions if one of the servers storing a copy of the message is unavailable when you request to delete the message. The copy remains on the server and might be returned to you again on a subsequent receive request. You should create your system to be idempotent so that receiving a particular message more than once is not a problem.

" }, "DeleteMessageBatch":{ "name":"DeleteMessageBatch", @@ -179,7 +179,7 @@ "input":{"shape":"DeleteMessageBatchRequest"}, "output":{ "shape":"DeleteMessageBatchResult", - "documentation":"

\n For each message in the batch, the response contains a \n DeleteMessageBatchResultEntry tag if the message is deleted or \n a BatchResultErrorEntry tag if the message cannot be deleted.\n

", + "documentation":"

For each message in the batch, the response contains a DeleteMessageBatchResultEntry tag if the message is deleted or a BatchResultErrorEntry tag if the message cannot be deleted.

", "resultWrapper":"DeleteMessageBatchResult" }, "errors":[ @@ -221,10 +221,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide\n by the specification.

" + "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" } ], - "documentation":"

Deletes multiple messages.\n This is a batch version of DeleteMessage. The result of the delete\n action on each message is reported individually in the response.

\n \n

\n Because the batch request can result in a combination of successful and unsuccessful actions, \n you should check for batch errors even when the call returns an HTTP status code of 200.\n

\n
\n Some API actions take lists of parameters. These lists are specified using the param.n notation. Values\n of n are integers starting from 1. For example, a parameter list with two elements looks like this: \n \n

&Attribute.1=this

\n

&Attribute.2=that

\n \n \n \n The following example DeleteMessageBatch request deletes two messages. You must URL encode the entire URL; however, we've URL encoded\n only the message body to make the example easier for you to read.\n \n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n&Action=DeleteMessageBatch\n&Version=2011-10-01\n&DeleteMessageBatchRequestEntry.1.Id=msg1\n&DeleteMessageBatchRequestEntry.1.ReceiptHandle=gfk0T0R0waama4fVFffkjPQrrvzMrOg0fTFk2LxT33EuB8wR0ZCFgKWyXGWFoqqpCIiprQUEhir%2F5LeGPpYTLzjqLQxyQYaQALeSNHb0us3uE84uujxpBhsDkZUQkjFFkNqBXn48xlMcVhTcI3YLH%2Bd%2BIqetIOHgBCZAPx6r%2B09dWaBXei6nbK5Ygih21DCDdAwFV68Jo8DXhb3ErEfoDqx7vyvC5nCpdwqv%2BJhU%2FTNGjNN8t51v5c%2FAXvQsAzyZVNapxUrHIt4NxRhKJ72uICcxruyE8eRXlxIVNgeNP8ZEDcw7zZU1Zw%3D%3D\n&DeleteMessageBatchRequestEntry.2.Id=msg2\n&DeleteMessageBatchRequestEntry.2.ReceiptHandle=gfk0T0R0waama4fVFffkjKzmhMCymjQvfTFk2LxT33G4ms5subrE0deLKWSscPU1oD3J9zgeS4PQQ3U30qOumIE6AdAv3w%2F%2Fa1IXW6AqaWhGsEPaLm3Vf6IiWqdM8u5imB%2BNTwj3tQRzOWdTOePjOjPcTpRxBtXix%2BEvwJOZUma9wabv%2BSw6ZHjwmNcVDx8dZXJhVp16Bksiox%2FGrUvrVTCJRTWTLc59oHLLF8sEkKzRmGNzTDGTiV%2BYjHfQj60FD3rVaXmzTsoNxRhKJ72uIHVMGVQiAGgB%2BqAbSqfKHDQtVOmJJgkHug%3D%3D\n&SignatureMethod=HmacSHA256\n&Expires=2011-10-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n msg1\n \n \n msg2\n \n \n \n d6f86b7a-74d1-4439-b43f-196a1e29cd85\n \n\n\n \n \n " + "documentation":"

Deletes multiple messages. This is a batch version of DeleteMessage. The result of the delete action on each message is reported individually in the response.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

&Attribute.1=this

&Attribute.2=that

" }, "DeleteQueue":{ "name":"DeleteQueue", @@ -233,7 +233,7 @@ "requestUri":"/" }, "input":{"shape":"DeleteQueueRequest"}, - "documentation":"

\n Deletes the queue specified by the queue\n URL, regardless of whether the queue is empty. If the specified queue does not\n exist, Amazon SQS returns a successful response.\n

\n \n

\n Use DeleteQueue with care; once you delete your queue, any messages\n in the queue are no longer available.\n

\n
\n

\n When you delete a queue, the deletion process takes up to 60 seconds. Requests you send\n involving that queue during the 60 seconds might succeed. For example, a\n SendMessage request might succeed, but after the 60 seconds, the queue and\n that message you sent no longer exist. Also, when you delete a queue, you must wait at least 60\n seconds before creating a queue with the same name.\n

\n

\n We reserve the right to delete queues that have had no activity for more than 30 days. For more\n information, see \n How\n Amazon SQS Queues Work in the Amazon SQS Developer Guide.\n

\n \n \n The following example Query request deletes the specified queue.\n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=DeleteQueue\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n 6fde8d1e-52cd-4581-8cd9-c512f4c64223\n \n \n\n\n \n \n " + "documentation":"

Deletes the queue specified by the queue URL, regardless of whether the queue is empty. If the specified queue does not exist, Amazon SQS returns a successful response.

Use DeleteQueue with care; once you delete your queue, any messages in the queue are no longer available.

When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after the 60 seconds, the queue and that message you sent no longer exist. Also, when you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

We reserve the right to delete queues that have had no activity for more than 30 days. For more information, see How Amazon SQS Queues Work in the Amazon SQS Developer Guide.

" }, "GetQueueAttributes":{ "name":"GetQueueAttributes", @@ -254,7 +254,7 @@ "documentation":"

The attribute referred to does not exist.

" } ], - "documentation":"

Gets attributes for the specified queue. The following attributes are supported:\n

    \n
  • \nAll - returns all values.
  • \n
  • \nApproximateNumberOfMessages - returns the approximate\n number of visible messages in a queue. For more information, see\n Resources Required to Process Messages\n in the Amazon SQS Developer Guide.
  • \n
  • \nApproximateNumberOfMessagesNotVisible - returns the\n approximate number of messages that are not timed-out and not deleted. \n For more information, see \n Resources Required to Process Messages in the\n Amazon SQS Developer Guide.
  • \n
  • \nVisibilityTimeout - returns the visibility timeout for\n the queue. For more information about visibility timeout, see\n Visibility Timeout in the Amazon SQS Developer Guide.
  • \n
  • \nCreatedTimestamp - returns the time when the queue was\n created (epoch time in seconds).
  • \n
  • \nLastModifiedTimestamp - returns the time when the queue\n was last changed (epoch time in seconds).
  • \n
  • \nPolicy - returns the queue's policy.
  • \n
  • \nMaximumMessageSize - returns the limit of how many bytes\n a message can contain before Amazon SQS rejects it.
  • \n
  • \nMessageRetentionPeriod - returns the number of seconds\n Amazon SQS retains a message.
  • \n
  • \nQueueArn - returns the queue's Amazon resource name\n (ARN).
  • \n
  • \nApproximateNumberOfMessagesDelayed - returns the\n approximate number of messages that are pending to be added to the\n queue.
  • \n
  • \nDelaySeconds - returns the default delay on the queue\n in seconds.
  • \n
  • \nReceiveMessageWaitTimeSeconds - returns the time for which a\n ReceiveMessage call will wait for a message to arrive.
  • \n
  • \nRedrivePolicy - returns the parameters for dead letter queue functionality of the source queue. \n For more information about RedrivePolicy and dead letter queues, see\n Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.
  • \n
\n

\n Going forward, new attributes might be added. \n If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.\n Some API actions take lists of parameters. These lists are specified using the param.n notation. Values\n of n are integers starting from 1. For example, a parameter list with two elements looks like this: \n \n

&Attribute.1=this

\n

&Attribute.2=that

\n \n \n \n The following example Query requests gets all the attribute values for the specified queue.\n \n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=GetQueueAttributes\n&AttributeName.1=All\n&Version=2012-11-05\n&SignatureMethod=HmacSHA256\n&Expires=2013-10-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n ReceiveMessageWaitTimeSeconds\n 2\n \n \n VisibilityTimeout\n 30\n \n \n ApproximateNumberOfMessages\n 0\n \n \n ApproximateNumberOfMessagesNotVisible\n 0\n \n \n CreatedTimestamp\n 1286771522\n \n \n LastModifiedTimestamp\n 1286771522\n \n \n QueueArn\n arn:aws:sqs:us-east-1:123456789012:qfoo\n \n \n MaximumMessageSize\n 8192\n \n \n MessageRetentionPeriod\n 345600\n \n \n \n 1ea71be5-b5a2-4f9d-b85a-945d8d08cd0b\n \n\n\n\n \n \n \n \n The following example Query request gets three attribute values for the specified\n queue.\n \n \n\nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=GetQueueAttributes\n&Action=GetQueueAttributes\n&Version=2012-11-05\n&AttributeName.1=VisibilityTimeout\n&AttributeName.2=DelaySeconds\n&AttributeName.3=ReceiveMessageWaitTimeSeconds\n&SignatureMethod=HmacSHA256\n&Expires=2013-10-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n\n\n \n \n VisibilityTimeout\n 30\n \n \n DelaySeconds\n 0\n \n \n ReceiveMessageWaitTimeSeconds\n 2\n \n\n\n \n \n " + "documentation":"

Gets attributes for the specified queue. The following attributes are supported:

  • All - returns all values.
  • ApproximateNumberOfMessages - returns the approximate number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide.
  • ApproximateNumberOfMessagesNotVisible - returns the approximate number of messages that are not timed-out and not deleted. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide.
  • VisibilityTimeout - returns the visibility timeout for the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
  • CreatedTimestamp - returns the time when the queue was created (epoch time in seconds).
  • LastModifiedTimestamp - returns the time when the queue was last changed (epoch time in seconds).
  • Policy - returns the queue's policy.
  • MaximumMessageSize - returns the limit of how many bytes a message can contain before Amazon SQS rejects it.
  • MessageRetentionPeriod - returns the number of seconds Amazon SQS retains a message.
  • QueueArn - returns the queue's Amazon resource name (ARN).
  • ApproximateNumberOfMessagesDelayed - returns the approximate number of messages that are pending to be added to the queue.
  • DelaySeconds - returns the default delay on the queue in seconds.
  • ReceiveMessageWaitTimeSeconds - returns the time for which a ReceiveMessage call will wait for a message to arrive.
  • RedrivePolicy - returns the parameters for dead letter queue functionality of the source queue. For more information about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.

&Attribute.1=this

&Attribute.2=that

" }, "GetQueueUrl":{ "name":"GetQueueUrl", @@ -265,7 +265,7 @@ "input":{"shape":"GetQueueUrlRequest"}, "output":{ "shape":"GetQueueUrlResult", - "documentation":"

For more information, see \n Responses\n in the Amazon SQS Developer Guide.

", + "documentation":"

For more information, see Responses in the Amazon SQS Developer Guide.

", "resultWrapper":"GetQueueUrlResult" }, "errors":[ @@ -280,7 +280,7 @@ "documentation":"

The queue referred to does not exist.

" } ], - "documentation":"

\n Returns the URL of an existing queue. \n This action provides a simple way to retrieve the URL of an Amazon SQS queue.\n

\n

\n To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId\n parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission to \n access the queue. For more information about shared queue access, see AddPermission or go to\n Shared Queues\n in the Amazon SQS Developer Guide.\n

\n \n \n \n The following example Query request gets the URL for the specified queue.\n \n \nhttp://sqs.us-east-1.amazonaws.com/\n?Action=GetQueueUrl\n&QueueName=testQueue\n&Version=2011-10-01\n&SignatureMethod=HmacSHA256\n&Expires=2011-10-24T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n http://&useast1-query;/123456789012/testQueue\n \n \n \n 470a6f13-2ed9-4181-ad8a-2fdea142988e\n \n\n\n \n \n " + "documentation":"

Returns the URL of an existing queue. This action provides a simple way to retrieve the URL of an Amazon SQS queue.

To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission to access the queue. For more information about shared queue access, see AddPermission or go to Shared Queues in the Amazon SQS Developer Guide.

" }, "ListDeadLetterSourceQueues":{ "name":"ListDeadLetterSourceQueues", @@ -306,7 +306,7 @@ "documentation":"

The queue referred to does not exist.

" } ], - "documentation":"

Returns a list of your queues that have the RedrivePolicy queue attribute configured with a dead letter queue.

\n \n \n \n The following example Query request returns a list of dead letter source queues. In this example only one source queue, MySourceQueue, was configured \n with a dead letter queue.\n \n \nAction=ListDeadLetterSourceQueues\n&Version=2012-11-05\n\n \n \n \n\n \n http://sqs.us-east-1.amazonaws.com/123456789012/MySourceQueue\n \n \n 8ffb921f-b85e-53d9-abcf-d8d0057f38fc\n \n\n\n \n \n \n

For more information about using dead letter queues, see Using Amazon SQS Dead Letter Queues.

" + "documentation":"

Returns a list of your queues that have the RedrivePolicy queue attribute configured with a dead letter queue.

For more information about using dead letter queues, see Using Amazon SQS Dead Letter Queues.

" }, "ListQueues":{ "name":"ListQueues", @@ -320,7 +320,7 @@ "documentation":"A list of your queues.", "resultWrapper":"ListQueuesResult" }, - "documentation":"

Returns a list of your queues. The maximum number of\n queues that can be returned is 1000. If you specify a value for the optional\n QueueNamePrefix parameter, only queues with a name beginning with the\n specified value are returned.

\n \n \n \n The following example Query request returns the queues whose names begin with the letter \"T\".\n \n \nhttp://sqs.us-east-1.amazonaws.com/\n?Action=ListQueues\n&QueueNamePrefix=t\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n http://sqs.us-east-1.amazonaws.com/123456789012/testQueue\n \n \n \n \n 725275ae-0b9b-4762-b238-436d7c65a1ac\n \n \n\n\n \n \n " + "documentation":"

Returns a list of your queues. The maximum number of queues that can be returned is 1000. If you specify a value for the optional QueueNamePrefix parameter, only queues with a name beginning with the specified value are returned.

" }, "ReceiveMessage":{ "name":"ReceiveMessage", @@ -343,10 +343,10 @@ "senderFault":true }, "exception":true, - "documentation":"

The action that you requested would violate a limit. For example,\n ReceiveMessage returns this error if the maximum number of messages\n inflight has already been reached. AddPermission returns this error if\n the maximum number of permissions for the queue has already been reached.\n

" + "documentation":"

The action that you requested would violate a limit. For example, ReceiveMessage returns this error if the maximum number of messages inflight has already been reached. AddPermission returns this error if the maximum number of permissions for the queue has already been reached.

" } ], - "documentation":"

\n Retrieves one or more messages, with a maximum limit of 10 messages, from the specified\n queue. Long poll support is enabled by using the WaitTimeSeconds parameter. \n For more information, see \n Amazon SQS Long Poll in the Amazon SQS Developer Guide.\n

\n

\n Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call. \n This means only the messages on the sampled machines are returned. If the number of messages in the queue is small (less than 1000), \n it is likely you will get fewer messages than you requested per ReceiveMessage call. \n If the number of messages in the queue is extremely small, you might not receive any messages in\n a particular ReceiveMessage response; in which case you should repeat the\n request.\n

\n

\n For each message returned, the response includes the following:\n

\n
    \n
  • \n

    \n Message body\n

    \n
  • \n
  • \n

    \n MD5 digest of the message body. For information about MD5, go to \n http://www.faqs.org/rfcs/rfc1321.html.\n

    \n
  • \n
  • \n

    \n Message ID you received when you sent the message to the queue.\n

    \n
  • \n
  • \n

    \n Receipt handle.\n

    \n
  • \n
  • \n

    \n Message attributes.\n

    \n
  • \n
  • \n

    \n MD5 digest of the message attributes.\n

    \n
  • \n
\n

\n The receipt handle is the identifier you must provide when deleting the message. For more\n information, see \n Queue\n and Message Identifiers in the Amazon SQS Developer Guide.\n

\n

\n You can provide the VisibilityTimeout parameter in your request, which\n will be applied to the messages that Amazon SQS returns in the response. If you do not include the\n parameter, the overall visibility timeout for the queue is used for the returned messages. For\n more information, see \n Visibility\n Timeout in the Amazon SQS Developer Guide. \n

\n \n

\n Going forward, new attributes might be added. If you are writing code that calls this action,\n we recommend that you structure your code so that it can handle new attributes gracefully.\n

\n
\n \n \n \n The following example Query request receives messages from the specified queue.\n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=ReceiveMessage\n&MaxNumberOfMessages=5\n&VisibilityTimeout=15\n&AttributeName=All;\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n \n 5fea7756-0ea4-451a-a703-a558b933e274\n \n \n MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+Cw\n Lj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QE\n auMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=\n \n \n fafb00f5732ab283681e124bf8747ed1\n \n This is a test message\n \n SenderId\n 195004372649\n \n \n SentTimestamp\n 1238099229000\n \n \n ApproximateReceiveCount\n 5\n \n \n ApproximateFirstReceiveTimestamp\n 1250700979248\n \n \n \n \n \n b6633655-283d-45b4-aee4-4e84e0ae6afa\n \n \n\n\n \n \n " + "documentation":"

Retrieves one or more messages, with a maximum limit of 10 messages, from the specified queue. Long poll support is enabled by using the WaitTimeSeconds parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide.

Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call. This means only the messages on the sampled machines are returned. If the number of messages in the queue is small (less than 1000), it is likely you will get fewer messages than you requested per ReceiveMessage call. If the number of messages in the queue is extremely small, you might not receive any messages in a particular ReceiveMessage response; in which case you should repeat the request.

For each message returned, the response includes the following:

  • Message body

  • MD5 digest of the message body. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

  • Message ID you received when you sent the message to the queue.

  • Receipt handle.

  • Message attributes.

  • MD5 digest of the message attributes.

The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide.

You can provide the VisibilityTimeout parameter in your request, which will be applied to the messages that Amazon SQS returns in the response. If you do not include the parameter, the overall visibility timeout for the queue is used for the returned messages. For more information, see Visibility Timeout in the Amazon SQS Developer Guide.

" }, "RemovePermission":{ "name":"RemovePermission", @@ -355,7 +355,7 @@ "requestUri":"/" }, "input":{"shape":"RemovePermissionRequest"}, - "documentation":"

Revokes any permissions in the queue\n policy that matches the specified Label parameter. Only the owner\n of the queue can remove permissions.

\n \n \n \n The following example Query request removes the testLabel permission on the queue named testQueue.\n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=RemovePermission\n&Label=testLabel\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n f8bdb362-6616-42c0-977a-ce9a8bcce3bb\n \n \n\n\n \n \n " + "documentation":"

Revokes any permissions in the queue policy that matches the specified Label parameter. Only the owner of the queue can remove permissions.

" }, "SendMessage":{ "name":"SendMessage", @@ -386,7 +386,7 @@ "documentation":"

Error code 400. Unsupported operation.

" } ], - "documentation":"

\n Delivers a message to the specified\n queue. With Amazon SQS, you now have the ability to send large payload messages that are up\n to 256KB (262,144 bytes) in size. To send large payloads, you must use an AWS SDK that\n supports SigV4 signing. To verify whether SigV4 is supported for an AWS SDK, check the SDK\n release notes.\n

\n \n

\n The following list shows the characters (in Unicode) allowed in your message, according\n to the W3C XML specification. For more information, go to \n http://www.w3.org/TR/REC-xml/#charsets \n If you send any characters not included in the list, your request will be rejected.\n

\n

\n #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]\n

\n
\n \n \n \n The following example SendMessage request sends a message containing \"This is a test message\" to the queue. \n You must URL encode the entire URL; however, we've URL encoded only the message body to make the example easier for you to read. \n The following example response includes the MD5 digest for \"This is a test message\".\n \n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=SendMessage\n&MessageBody=This+is+a+test+message\n&MessageAttribute.1.Name=test_attribute_name_1\n&MessageAttribute.1.Value.StringValue=test_attribute_value_1\n&MessageAttribute.1.Value.DataType=String\n&MessageAttribute.2.Name=test_attribute_name_2\n&MessageAttribute.2.Value.StringValue=test_attribute_value_2\n&MessageAttribute.2.Value.DataType=String\n&Version=2012-11-05\n&SignatureMethod=HmacSHA256\n&Expires=2014-05-05T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n fafb00f5732ab283681e124bf8747ed1\n \n \n\t 3ae8f24a165a8cedc005670c81a27295\n \n \n 5fea7756-0ea4-451a-a703-a558b933e274\n \n \n \n \n 27daac76-34dd-47df-bd01-1f6e873584a0\n \n \n\n\n \n \n " + "documentation":"

Delivers a message to the specified queue. With Amazon SQS, you now have the ability to send large payload messages that are up to 256KB (262,144 bytes) in size. To send large payloads, you must use an AWS SDK that supports SigV4 signing. To verify whether SigV4 is supported for an AWS SDK, check the SDK release notes.

The following list shows the characters (in Unicode) allowed in your message, according to the W3C XML specification. For more information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any characters not included in the list, your request will be rejected.

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

" }, "SendMessageBatch":{ "name":"SendMessageBatch", @@ -449,7 +449,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide\n by the specification.

" + "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" }, { "shape":"UnsupportedOperation", @@ -462,7 +462,7 @@ "documentation":"

Error code 400. Unsupported operation.

" } ], - "documentation":"

Delivers up to ten messages to the specified queue.\n This is a batch version of SendMessage.\n The result of the send action on each message is reported individually in the response.\n The maximum allowed individual message size is 256 KB (262,144 bytes).

\n

The maximum total payload size (i.e., the sum of all a batch's individual message lengths)\n is also 256 KB (262,144 bytes).

\n

If the DelaySeconds parameter is not specified for an entry, \n the default for the queue is used.

\n The following list shows the characters (in Unicode) that are allowed in your message, according\n to the W3C XML specification. For more information, go to http://www.faqs.org/rfcs/rfc1321.html. \n If you send any characters that are not included in the list, your request will be rejected.\n

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

\n
\n \n Because the batch request can result in a combination of successful and unsuccessful actions, \n you should check for batch errors even when the call returns an HTTP status code of 200. \n \n Some API actions take lists of parameters. These lists are specified using the param.n notation. Values\n of n are integers starting from 1. For example, a parameter list with two elements looks like this: \n \n

&Attribute.1=this

\n

&Attribute.2=that

\n\n \n \n The following example SendMessageBatch request sends two messages\n to the queue. You must URL encode the entire URL; however, we've URL encoded\n only the message body to make the example easier for you to read.\n The following example response includes the MD5 digest for the messages.\n \n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=SendMessageBatch\n&SendMessageBatchRequestEntry.1.Id=test_msg_001\n&SendMessageBatchRequestEntry.1.MessageBody=test%20message%20body%201\n&SendMessageBatchRequestEntry.2.Id=test_msg_002\n&SendMessageBatchRequestEntry.2.MessageBody=test%20message%20body%202\n&SendMessageBatchRequestEntry.2.DelaySeconds=60\n&SendMessageBatchRequestEntry.2.MessageAttribute.1.Name=test_attribute_name_1\n&SendMessageBatchRequestEntry.2.MessageAttribute.1.Value.StringValue=test_attribute_value_1\n&SendMessageBatchRequestEntry.2.MessageAttribute.1.Value.DataType=String\n&Version=2012-11-05\n&SignatureMethod=HmacSHA256\n&Expires=2014-05-05T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n\n \n test_msg_001\n 0a5231c7-8bff-4955-be2e-8dc7c50a25fa\n 0e024d309850c78cba5eabbeff7cae71\n \n \n test_msg_002\n 15ee1ed3-87e7-40c1-bdaa-2e49968ea7e9\n 7fb8146a82f95e0af155278f406862c2\n 295c5fa15a51aae6884d1d7c1d99ca50\n \n\n\n ca1ad5d0-8271-408b-8d0f-1351bf547e74\n\n\n\n \n \n " + "documentation":"

Delivers up to ten messages to the specified queue. This is a batch version of SendMessage. The result of the send action on each message is reported individually in the response. The maximum allowed individual message size is 256 KB (262,144 bytes).

The maximum total payload size (i.e., the sum of all a batch's individual message lengths) is also 256 KB (262,144 bytes).

If the DelaySeconds parameter is not specified for an entry, the default for the queue is used.

The following list shows the characters (in Unicode) that are allowed in your message, according to the W3C XML specification. For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you send any characters that are not included in the list, your request will be rejected.

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

&Attribute.1=this

&Attribute.2=that

" }, "SetQueueAttributes":{ "name":"SetQueueAttributes", @@ -478,7 +478,7 @@ "documentation":"

The attribute referred to does not exist.

" } ], - "documentation":"

Sets the value of one or more queue attributes. When you change a queue's attributes, \n the change can take up to 60 seconds for most of the attributes to propagate throughout the SQS system. \n Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes.

\n Going forward, new attributes might be added. \n If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.\n \n \n \n \n The following example Query request sets a policy that gives all users\n ReceiveMessage permission for the queue named testQueue. \n For more examples of policies, see \n Amazon SQS Policy Examples\n in the Amazon SQS Developer Guide. \n \n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=SetQueueAttributes\n&Version=2009-02-01\n&Attribute.Name=Policy\n&Attribute.Value=%7B%22Version%22%3A%222008-10-17%22%2C%22Id%22\n%3A%22%2F123456789012%2FtestQueue%2FSQSDefaultPolicy%22%2C%22Stat\nement%22%3A%5B%7B%22Sid%22%3A%22Queue1ReceiveMessage%22%2C%22Effe\nct%22%3A%22Allow%22%2C%22Principal%22%3A%7B%22AWS%22%3A%22*%22%7D\n%2C%22Action%22%3A%22SQS%3AReceiveMessage%22%2C%22Resource%22%3A%\n22arn%3Aaws%3Aaws%3Asqs%3Aus%2Deast%2D1%3A123456789012%3AtestQueue%22%7D%5D%7D\n&Timestamp=2009-05-06T16%3A57%3A31.000Z\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&Signature=%2Bd7ZlPIdnb%2BhpEna2TgfwQjfGF8%3D\n\n \n \n \n \n The following example Query request sets the visibility timeout to 35 seconds for\n the queue named testQueue. Note: There is a 120,000 limit for the number of inflight messages per queue. Messages are inflight after they have been received by the queue, but have \n not yet been deleted from the queue. If you reach the 120,000 limit, you will receive an OverLimit error message from Amazon SQS. To help avoid reaching the limit, you should \n delete the messages from the queue after they have been processed. You can also increase the number of queues you use to process the messages. \n \n \n \nhttp://sqs.us-east-1.amazonaws.com/123456789012/testQueue/\n?Action=SetQueueAttributes\n&Attribute.Name=VisibilityTimeout\n&Attribute.Value=35\n&Version=2009-02-01\n&SignatureMethod=HmacSHA256\n&Expires=2009-04-18T22%3A52%3A43PST\n&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE\n&SignatureVersion=2\n&Signature=Dqlp3Sd6ljTUA9Uf6SGtEExwUQEXAMPLE\n\n \n \n \n\n \n \n e5cca473-4fc0-4198-a451-8abb94d02c75\n \n \n\n\n \n \n " + "documentation":"

Sets the value of one or more queue attributes. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the SQS system. Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes.

" } }, "shapes":{ @@ -513,15 +513,15 @@ }, "Label":{ "shape":"String", - "documentation":"

The unique identification of the permission you're setting (e.g.,\n AliceSendMessage). Constraints: Maximum 80 characters;\n alphanumeric characters, hyphens (-), and underscores (_) are allowed.

" + "documentation":"

The unique identification of the permission you're setting (e.g., AliceSendMessage). Constraints: Maximum 80 characters; alphanumeric characters, hyphens (-), and underscores (_) are allowed.

" }, "AWSAccountIds":{ "shape":"AWSAccountIdList", - "documentation":"

The AWS account number of the principal\n who will be given permission. The principal must have an AWS account, but does\n not need to be signed up for Amazon SQS. For information about locating the AWS\n account identification, see Your\n AWS Identifiers in the Amazon SQS Developer Guide.

" + "documentation":"

The AWS account number of the principal who will be given permission. The principal must have an AWS account, but does not need to be signed up for Amazon SQS. For information about locating the AWS account identification, see Your AWS Identifiers in the Amazon SQS Developer Guide.

" }, "Actions":{ "shape":"ActionNameList", - "documentation":"

The action the client wants to allow for the specified principal. \n The following are valid values: * | SendMessage | ReceiveMessage | DeleteMessage | ChangeMessageVisibility | GetQueueAttributes | GetQueueUrl. \n For more information about these actions, see Understanding\n Permissions in the Amazon SQS Developer Guide.

\n

Specifying SendMessage,\n DeleteMessage, or ChangeMessageVisibility for the \n ActionName.n also grants\n permissions for the corresponding batch versions of those actions:\n SendMessageBatch,\n DeleteMessageBatch, and ChangeMessageVisibilityBatch.

" + "documentation":"

The action the client wants to allow for the specified principal. The following are valid values: * | SendMessage | ReceiveMessage | DeleteMessage | ChangeMessageVisibility | GetQueueAttributes | GetQueueUrl. For more information about these actions, see Understanding Permissions in the Amazon SQS Developer Guide.

Specifying SendMessage, DeleteMessage, or ChangeMessageVisibility for the ActionName.n also grants permissions for the corresponding batch versions of those actions: SendMessageBatch, DeleteMessageBatch, and ChangeMessageVisibilityBatch.

" } } }, @@ -597,7 +597,7 @@ "documentation":"

A message explaining why the action failed on this entry.

" } }, - "documentation":"

This is used in the responses of batch API to give a detailed description\n of the result of an action on each entry in the request.

" + "documentation":"

This is used in the responses of batch API to give a detailed description of the result of an action on each entry in the request.

" }, "BatchResultErrorEntryList":{ "type":"list", @@ -629,7 +629,7 @@ }, "Entries":{ "shape":"ChangeMessageVisibilityBatchRequestEntryList", - "documentation":"

A list of receipt handles of the messages for which the visibility timeout\n must be changed.

" + "documentation":"

A list of receipt handles of the messages for which the visibility timeout must be changed.

" } } }, @@ -642,7 +642,7 @@ "members":{ "Id":{ "shape":"String", - "documentation":"

An identifier for this particular receipt handle. This is used to communicate\n the result. Note that the Ids of a batch request need to be\n unique within the request.

" + "documentation":"

An identifier for this particular receipt handle. This is used to communicate the result. Note that the Ids of a batch request need to be unique within the request.

" }, "ReceiptHandle":{ "shape":"String", @@ -653,7 +653,7 @@ "documentation":"

The new value (in seconds) for the message's visibility timeout.

" } }, - "documentation":"

Encloses a receipt handle and an entry id for each message in\n ChangeMessageVisibilityBatch.

\n \n \n

All of the following parameters are list parameters that must be prefixed with ChangeMessageVisibilityBatchRequestEntry.n, \n where n is an integer value starting with 1. For example, a parameter list for this action might look like this:

\n
\n

&ChangeMessageVisibilityBatchRequestEntry.1.Id=change_visibility_msg_2

\n

&ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle=Your_Receipt_Handle

\n

&ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout=45

" + "documentation":"

Encloses a receipt handle and an entry id for each message in ChangeMessageVisibilityBatch.

All of the following parameters are list parameters that must be prefixed with ChangeMessageVisibilityBatchRequestEntry.n, where n is an integer value starting with 1. For example, a parameter list for this action might look like this:

&ChangeMessageVisibilityBatchRequestEntry.1.Id=change_visibility_msg_2

&ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle=Your_Receipt_Handle

&ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout=45

" }, "ChangeMessageVisibilityBatchRequestEntryList":{ "type":"list", @@ -679,7 +679,7 @@ "documentation":"

A list of BatchResultErrorEntry items.

" } }, - "documentation":"

\n For each message in the batch, the response contains a \n ChangeMessageVisibilityBatchResultEntry tag if the message succeeds or \n a BatchResultErrorEntry tag if the message fails.\n

" + "documentation":"

For each message in the batch, the response contains a ChangeMessageVisibilityBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

" }, "ChangeMessageVisibilityBatchResultEntry":{ "type":"structure", @@ -687,7 +687,7 @@ "members":{ "Id":{ "shape":"String", - "documentation":"

Represents a message whose visibility timeout has been changed\n successfully.

" + "documentation":"

Represents a message whose visibility timeout has been changed successfully.

" } }, "documentation":"

Encloses the id of an entry in ChangeMessageVisibilityBatch.

" @@ -714,7 +714,7 @@ }, "ReceiptHandle":{ "shape":"String", - "documentation":"

The receipt handle associated with the message whose visibility timeout\n should be changed. This parameter is returned by the ReceiveMessage action.

" + "documentation":"

The receipt handle associated with the message whose visibility timeout should be changed. This parameter is returned by the ReceiveMessage action.

" }, "VisibilityTimeout":{ "shape":"Integer", @@ -732,7 +732,7 @@ }, "Attributes":{ "shape":"AttributeMap", - "documentation":"

A map of attributes with their corresponding values.

\n

The following lists the names, descriptions, and values of the special request parameters the CreateQueue\n action uses:

\n

\n

    \n
  • \nDelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • \n
  • \nMaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • \n
  • \nMessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • \n
  • \nPolicy - The queue's policy. A valid\n form-url-encoded policy. For more information about policy\n structure, see Basic Policy Structure in the Amazon SQS Developer Guide. \n For more information about form-url-encoding, see \n http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • \n
  • \nReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • \n
  • \nVisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout,\n see Visibility Timeout in the Amazon SQS Developer Guide.
  • \n
\n

", + "documentation":"

A map of attributes with their corresponding values.

The following lists the names, descriptions, and values of the special request parameters the CreateQueue action uses:

  • DelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • MessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • Policy - The queue's policy. A valid form-url-encoded policy. For more information about policy structure, see Basic Policy Structure in the Amazon SQS Developer Guide. For more information about form-url-encoding, see http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • ReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • VisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.

", "locationName":"Attribute" } } @@ -773,7 +773,7 @@ "members":{ "Id":{ "shape":"String", - "documentation":"

An identifier for this particular receipt handle. This is used to\n communicate the result. Note that the Ids of a batch request\n need to be unique within the request.

" + "documentation":"

An identifier for this particular receipt handle. This is used to communicate the result. Note that the Ids of a batch request need to be unique within the request.

" }, "ReceiptHandle":{ "shape":"String", @@ -806,7 +806,7 @@ "documentation":"

A list of BatchResultErrorEntry items.

" } }, - "documentation":"

\n For each message in the batch, the response contains a \n DeleteMessageBatchResultEntry tag if the message is deleted or \n a BatchResultErrorEntry tag if the message cannot be deleted.\n

" + "documentation":"

For each message in the batch, the response contains a DeleteMessageBatchResultEntry tag if the message is deleted or a BatchResultErrorEntry tag if the message cannot be deleted.

" }, "DeleteMessageBatchResultEntry":{ "type":"structure", @@ -897,7 +897,7 @@ "members":{ "QueueName":{ "shape":"String", - "documentation":"

The name of the queue whose URL must be fetched. \n Maximum 80 characters; alphanumeric characters, hyphens (-), and underscores (_) are allowed.

" + "documentation":"

The name of the queue whose URL must be fetched. Maximum 80 characters; alphanumeric characters, hyphens (-), and underscores (_) are allowed.

" }, "QueueOwnerAWSAccountId":{ "shape":"String", @@ -913,7 +913,7 @@ "documentation":"

The URL for the queue.

" } }, - "documentation":"

For more information, see \n Responses\n in the Amazon SQS Developer Guide.

" + "documentation":"

For more information, see Responses in the Amazon SQS Developer Guide.

" }, "Integer":{"type":"integer"}, "InvalidAttributeName":{ @@ -933,7 +933,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide\n by the specification.

" + "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" }, "InvalidIdFormat":{ "type":"structure", @@ -975,7 +975,7 @@ "members":{ "QueueNamePrefix":{ "shape":"String", - "documentation":"

A string to use for filtering the list results. Only those queues whose name\n begins with the specified string are returned.

" + "documentation":"

A string to use for filtering the list results. Only those queues whose name begins with the specified string are returned.

" } } }, @@ -998,7 +998,7 @@ }, "ReceiptHandle":{ "shape":"String", - "documentation":"

An identifier associated with the act of receiving the message. \n A new receipt handle is returned every time you receive a message. \n When deleting a message, you provide the last received receipt handle to delete the message.

" + "documentation":"

An identifier associated with the act of receiving the message. A new receipt handle is returned every time you receive a message. When deleting a message, you provide the last received receipt handle to delete the message.

" }, "MD5OfBody":{ "shape":"String", @@ -1010,7 +1010,7 @@ }, "Attributes":{ "shape":"AttributeMap", - "documentation":"

SenderId, SentTimestamp, ApproximateReceiveCount, and/or \n ApproximateFirstReceiveTimestamp. SentTimestamp\n and ApproximateFirstReceiveTimestamp are each returned as an integer representing the \n epoch time in milliseconds.

", + "documentation":"

SenderId, SentTimestamp, ApproximateReceiveCount, and/or ApproximateFirstReceiveTimestamp. SentTimestamp and ApproximateFirstReceiveTimestamp are each returned as an integer representing the epoch time in milliseconds.

", "locationName":"Attribute" }, "MD5OfMessageAttributes":{ @@ -1075,7 +1075,7 @@ "documentation":"

Amazon SQS supports the following logical data types: String, Number, and Binary. In addition, you can append your own custom labels. For more information, see Message Attribute Data Types.

" } }, - "documentation":"

The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see SendMessage.

\n

Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes).

" + "documentation":"

The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see SendMessage.

Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes).

" }, "MessageList":{ "type":"list", @@ -1107,7 +1107,7 @@ "senderFault":true }, "exception":true, - "documentation":"

The action that you requested would violate a limit. For example,\n ReceiveMessage returns this error if the maximum number of messages\n inflight has already been reached. AddPermission returns this error if\n the maximum number of permissions for the queue has already been reached.\n

" + "documentation":"

The action that you requested would violate a limit. For example, ReceiveMessage returns this error if the maximum number of messages inflight has already been reached. AddPermission returns this error if the maximum number of permissions for the queue has already been reached.

" }, "QueueAttributeName":{ "type":"string", @@ -1137,7 +1137,7 @@ "senderFault":true }, "exception":true, - "documentation":"

You must wait 60 seconds after deleting a queue before you can create another\n with the same name.

" + "documentation":"

You must wait 60 seconds after deleting a queue before you can create another with the same name.

" }, "QueueDoesNotExist":{ "type":"structure", @@ -1161,7 +1161,7 @@ "senderFault":true }, "exception":true, - "documentation":"

A queue already exists with this name. Amazon SQS returns this error only if the request includes\n attributes whose values differ from those of the existing queue.

" + "documentation":"

A queue already exists with this name. Amazon SQS returns this error only if the request includes attributes whose values differ from those of the existing queue.

" }, "QueueUrlList":{ "type":"list", @@ -1188,23 +1188,23 @@ }, "AttributeNames":{ "shape":"AttributeNameList", - "documentation":"

A list of attributes that need to be returned along with each message. \n

\n

\n The following lists the names and descriptions of the attributes that can be returned:\n

\n
    \n
  • \nAll - returns all values.
  • \n
  • \nApproximateFirstReceiveTimestamp - returns\n the time when the message was first received (epoch time in milliseconds).
  • \n
  • \nApproximateReceiveCount - returns the\n number of times a message has been received but not deleted.
  • \n
  • \nSenderId - returns the AWS account\n number (or the IP address, if anonymous access is allowed) of the\n sender.
  • \n
  • \nSentTimestamp - returns the time when\n the message was sent (epoch time in milliseconds).
  • \n
" + "documentation":"

A list of attributes that need to be returned along with each message.

The following lists the names and descriptions of the attributes that can be returned:

  • All - returns all values.
  • ApproximateFirstReceiveTimestamp - returns the time when the message was first received (epoch time in milliseconds).
  • ApproximateReceiveCount - returns the number of times a message has been received but not deleted.
  • SenderId - returns the AWS account number (or the IP address, if anonymous access is allowed) of the sender.
  • SentTimestamp - returns the time when the message was sent (epoch time in milliseconds).
" }, "MessageAttributeNames":{ "shape":"MessageAttributeNameList", - "documentation":"

The message attribute Name can contain the following characters: A-Z, a-z, 0-9, underscore(_), hyphen(-), and period (.). \n The message attribute name must not start or end with a period, and it should not have successive periods. The message attribute name is case sensitive and must be unique among all attribute \n names for the message. The message attribute name can be up to 256 characters long. Attribute names cannot start with \"AWS.\" or \"Amazon.\" because these prefixes are reserved for use by Amazon Web Services.

" + "documentation":"

The message attribute Name can contain the following characters: A-Z, a-z, 0-9, underscore(_), hyphen(-), and period (.). The message attribute name must not start or end with a period, and it should not have successive periods. The message attribute name is case sensitive and must be unique among all attribute names for the message. The message attribute name can be up to 256 characters long. Attribute names cannot start with \"AWS.\" or \"Amazon.\" because these prefixes are reserved for use by Amazon Web Services.

" }, "MaxNumberOfMessages":{ "shape":"Integer", - "documentation":"

The maximum number of messages to return. Amazon SQS never returns more\n messages than this value but may return fewer. Values can be from 1 to 10. Default is 1.

\n\n

All of the messages are not necessarily returned.

" + "documentation":"

The maximum number of messages to return. Amazon SQS never returns more messages than this value but may return fewer. Values can be from 1 to 10. Default is 1.

All of the messages are not necessarily returned.

" }, "VisibilityTimeout":{ "shape":"Integer", - "documentation":"

The duration (in seconds) that the received messages are hidden from\n subsequent retrieve requests after being retrieved by a\n ReceiveMessage request.

" + "documentation":"

The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request.

" }, "WaitTimeSeconds":{ "shape":"Integer", - "documentation":"

The duration (in seconds) for which the call will wait for a message to arrive\n in the queue before returning. If a message is available, the call will\n return sooner than WaitTimeSeconds.

" + "documentation":"

The duration (in seconds) for which the call will wait for a message to arrive in the queue before returning. If a message is available, the call will return sooner than WaitTimeSeconds.

" } } }, @@ -1231,7 +1231,7 @@ }, "Label":{ "shape":"String", - "documentation":"

The identification of the permission to remove. This is the label added with\n the AddPermission action.

" + "documentation":"

The identification of the permission to remove. This is the label added with the AddPermission action.

" } } }, @@ -1261,7 +1261,7 @@ "members":{ "Id":{ "shape":"String", - "documentation":"

An identifier for the message in this batch. This is used to communicate\n the result. Note that the Ids of a batch request need to\n be unique within the request.

" + "documentation":"

An identifier for the message in this batch. This is used to communicate the result. Note that the Ids of a batch request need to be unique within the request.

" }, "MessageBody":{ "shape":"String", @@ -1300,7 +1300,7 @@ }, "Failed":{ "shape":"BatchResultErrorEntryList", - "documentation":"

A list of BatchResultErrorEntry items with the error detail about each\n message that could not be enqueued.

" + "documentation":"

A list of BatchResultErrorEntry items with the error detail about each message that could not be enqueued.

" } }, "documentation":"

For each message in the batch, the response contains a SendMessageBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

" @@ -1323,14 +1323,14 @@ }, "MD5OfMessageBody":{ "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message body string. This can be used to\n verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the\n message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" + "documentation":"

An MD5 digest of the non-URL-encoded message body string. This can be used to verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" }, "MD5OfMessageAttributes":{ "shape":"String", "documentation":"

An MD5 digest of the non-URL-encoded message attribute string. This can be used to verify that Amazon SQS received the message batch correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" } }, - "documentation":"

Encloses a message ID for successfully enqueued message of a\n SendMessageBatch.

" + "documentation":"

Encloses a message ID for successfully enqueued message of a SendMessageBatch.

" }, "SendMessageBatchResultEntryList":{ "type":"list", @@ -1357,7 +1357,7 @@ }, "DelaySeconds":{ "shape":"Integer", - "documentation":"

\n The number of seconds (0 to 900 - 15 minutes) to delay a specific message. Messages with a positive DelaySeconds value \n become available for processing after the delay time is finished.\n If you don't specify a value, the default value for the queue applies.\n

" + "documentation":"

The number of seconds (0 to 900 - 15 minutes) to delay a specific message. Messages with a positive DelaySeconds value become available for processing after the delay time is finished. If you don't specify a value, the default value for the queue applies.

" }, "MessageAttributes":{ "shape":"MessageAttributeMap", @@ -1371,7 +1371,7 @@ "members":{ "MD5OfMessageBody":{ "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message body string. This can be used to\n verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the\n message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" + "documentation":"

An MD5 digest of the non-URL-encoded message body string. This can be used to verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" }, "MD5OfMessageAttributes":{ "shape":"String", @@ -1379,7 +1379,7 @@ }, "MessageId":{ "shape":"String", - "documentation":"

\n An element containing the message ID of the message sent to the queue. \n \n For more information, see \n Queue and Message Identifiers\n in the Amazon SQS Developer Guide.\n

" + "documentation":"

An element containing the message ID of the message sent to the queue. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide.

" } }, "documentation":"

The MD5OfMessageBody and MessageId elements.

" @@ -1388,7 +1388,7 @@ "type":"structure", "required":[ "QueueUrl", - "attributes" + "Attributes" ], "members":{ "QueueUrl":{ @@ -1397,7 +1397,7 @@ }, "Attributes":{ "shape":"AttributeMap", - "documentation":"

A map of attributes to set.

\n

The following lists the names, descriptions, and values of the special request parameters the SetQueueAttributes\n action uses:

\n

\n

    \n
  • \nDelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • \n
  • \nMaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • \n
  • \nMessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • \n
  • \nPolicy - The queue's policy. A valid\n form-url-encoded policy. For more information about policy\n structure, see Basic Policy Structure in the Amazon SQS Developer Guide. \n For more information about form-url-encoding, see \n http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • \n
  • \nReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • \n
  • \nVisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
  • \n
  • \nRedrivePolicy - The parameters for dead letter queue functionality of the source queue. \n For more information about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.
  • \n
\n

", + "documentation":"

A map of attributes to set.

The following lists the names, descriptions, and values of the special request parameters the SetQueueAttributes action uses:

  • DelaySeconds - The time in seconds that the delivery of all messages in the queue will be delayed. An integer from 0 to 900 (15 minutes). The default for this attribute is 0 (zero).
  • MaximumMessageSize - The limit of how many bytes a message can contain before Amazon SQS rejects it. An integer from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute is 262144 (256 KiB).
  • MessageRetentionPeriod - The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4 days).
  • Policy - The queue's policy. A valid form-url-encoded policy. For more information about policy structure, see Basic Policy Structure in the Amazon SQS Developer Guide. For more information about form-url-encoding, see http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1.
  • ReceiveMessageWaitTimeSeconds - The time for which a ReceiveMessage call will wait for a message to arrive. An integer from 0 to 20 (seconds). The default for this attribute is 0.
  • VisibilityTimeout - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The default for this attribute is 30. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
  • RedrivePolicy - The parameters for dead letter queue functionality of the source queue. For more information about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.

", "locationName":"Attribute" } } diff --git a/Scripts/GenerateAppleDocs.sh b/Scripts/GenerateAppleDocs.sh index 9fff5222403..b5684321667 100755 --- a/Scripts/GenerateAppleDocs.sh +++ b/Scripts/GenerateAppleDocs.sh @@ -9,7 +9,7 @@ function cleanup } -VERSION="2.0.5" +VERSION="2.0.6" if [ -n $1 ] && [ "$1" == "clean" ]; then cleanup diff --git a/Scripts/Package.sh b/Scripts/Package.sh index da11eb75243..44094e1cb67 100755 --- a/Scripts/Package.sh +++ b/Scripts/Package.sh @@ -14,7 +14,6 @@ fi if [ -x "Scripts/PodFramework.sh" ]; then Scripts/PodFramework.sh Bolts - Scripts/PodFramework.sh CSURITemplate Scripts/PodFramework.sh Mantle Scripts/PodFramework.sh TMCache Scripts/PodFramework.sh XMLDictionary diff --git a/Scripts/PodFramework.sh b/Scripts/PodFramework.sh index ed13f327b6e..1b90a8c19b1 100755 --- a/Scripts/PodFramework.sh +++ b/Scripts/PodFramework.sh @@ -2,7 +2,6 @@ cd "$SOURCE_ROOT" - # version FRAMEWORK_VERSION=A @@ -20,7 +19,6 @@ echo $NAME echo "framework path is: " echo $FRAMEWORK_DIR - # clean rm -rf $FRAMEWORK_DIR @@ -37,12 +35,9 @@ ln -s Versions/Current/Headers $FRAMEWORK_DIR/Headers ln -s Versions/Current/Resources $FRAMEWORK_DIR/Resources ln -s Versions/Current/$NAME $FRAMEWORK_DIR/$NAME - - echo "Framework: Creating library bolts " lipo -create "Pods/build/Debug-iphonesimulator/libPods-${NAME}.a" "Pods/build/Debug64-iphonesimulator/libPods-${NAME}.a" "Pods/build/Release-iphoneos/libPods-${NAME}.a" "Pods/build/Release64-iphoneos/libPods-${NAME}.a" -o "$FRAMEWORK_DIR/Versions/Current/$NAME" - # copy header file if [ "$1" = "UICKeyChainStore" ] then @@ -50,7 +45,10 @@ then elif [ "$1" = "Reachability" ] then cp -a Pods/${NAME}/*.h $FRAMEWORK_DIR/Headers/ +elif [ "$1" = "Bolts" ] +then + cp -a Pods/${NAME}/${NAME}/Common/*.h $FRAMEWORK_DIR/Headers/ + cp -a Pods/${NAME}/${NAME}/iOS/*.h $FRAMEWORK_DIR/Headers/ else cp -a Pods/${NAME}/${NAME}/*.h $FRAMEWORK_DIR/Headers/ fi - diff --git a/Scripts/SdkPackage.sh b/Scripts/SdkPackage.sh index b2e552513a0..4e34ba23659 100755 --- a/Scripts/SdkPackage.sh +++ b/Scripts/SdkPackage.sh @@ -81,10 +81,10 @@ lipo -create "Build/Debug-iphonesimulator/lib${PROJECT}.a" "Build/Debug64-iphone # Now copy headerfile echo "Framework: Copying assets into current version..." -cp -a AmazonCore/*.h $FRAMEWORK_DIR/Headers/ -cp -a AmazonCore/Logging/*.h $FRAMEWORK_DIR/Headers/ -cp -a AmazonCore/Networking/*.h $FRAMEWORK_DIR/Headers/ -cp -a AmazonCore/Utility/*.h $FRAMEWORK_DIR/Headers/ +# cp -a AmazonCore/*.h $FRAMEWORK_DIR/Headers/ +# cp -a AmazonCore/Logging/*.h $FRAMEWORK_DIR/Headers/ +# cp -a AmazonCore/Networking/*.h $FRAMEWORK_DIR/Headers/ +cp -a AWSCore/Utility/*.h $FRAMEWORK_DIR/Headers/ cp -a AWSCore/*.h $FRAMEWORK_DIR/Headers/ cp -a AWSCore/Authentication/*.h $FRAMEWORK_DIR/Headers/ diff --git a/SimpleDB/AWSSimpleDB.h b/SimpleDB/AWSSimpleDB.h index 1a9e8fb7670..00326428765 100644 --- a/SimpleDB/AWSSimpleDB.h +++ b/SimpleDB/AWSSimpleDB.h @@ -20,19 +20,18 @@ @class BFTask; /** - * Amazon SimpleDB is a web service providing the core database functions of data indexing and querying in the cloud. By offloading the time and effort associated with building and operating a web-scale database, SimpleDB provides developers the freedom to focus on application development.

A traditional, clustered relational database requires a sizable upfront capital outlay, is complex to design, and often requires extensive and repetitive database administration. Amazon SimpleDB is dramatically simpler, requiring no schema, automatically indexing your data and providing a simple API for storage and access. This approach eliminates the administrative burden of data modeling, index maintenance, and performance tuning. Developers gain access to this functionality within Amazon's proven computing environment, are able to scale instantly, and pay only for what they use.

Visit http://aws.amazon.com/simpledb/ for more information.

+ * Amazon SimpleDB is a web service providing the core database functions of data indexing and querying in the cloud. By offloading the time and effort associated with building and operating a web-scale database, SimpleDB provides developers the freedom to focus on application development.

A traditional, clustered relational database requires a sizable upfront capital outlay, is complex to design, and often requires extensive and repetitive database administration. Amazon SimpleDB is dramatically simpler, requiring no schema, automatically indexing your data and providing a simple API for storage and access. This approach eliminates the administrative burden of data modeling, index maintenance, and performance tuning. Developers gain access to this functionality within Amazon's proven computing environment, are able to scale instantly, and pay only for what they use.

Visit http://aws.amazon.com/simpledb/ for more information.

*/ @interface AWSSimpleDB : AWSService @property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; -@property (nonatomic, strong, readonly) AWSEndpoint *endpoint; + (instancetype)defaultSimpleDB; - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration; /** - *

Performs multiple DeleteAttributes operations in a single call, which reduces round trips and latencies. This enables Amazon SimpleDB to optimize requests, which generally yields better throughput.

If you specify BatchDeleteAttributes without attributes or values, all the attributes for the item are deleted.

BatchDeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute doesn't result in an error.

The BatchDeleteAttributes operation succeeds or fails in its entirety. There are no partial deletes. You can execute multiple BatchDeleteAttributes operations and other operations in parallel. However, large numbers of concurrent BatchDeleteAttributes calls can result in Service Unavailable (503) responses.

This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method.

This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists.

The following limitations are enforced for this operation:

  • 1 MB request size
  • 25 item limit per BatchDeleteAttributes operation

+ *

Performs multiple DeleteAttributes operations in a single call, which reduces round trips and latencies. This enables Amazon SimpleDB to optimize requests, which generally yields better throughput.

The following limitations are enforced for this operation:

  • 1 MB request size
  • 25 item limit per BatchDeleteAttributes operation

* * @param request A container for the necessary parameters to execute the BatchDeleteAttributes service method. * @@ -43,7 +42,7 @@ - (BFTask *)batchDeleteAttributes:(AWSSimpleDBBatchDeleteAttributesRequest *)request; /** - *

The BatchPutAttributes operation creates or replaces attributes within one or more items.By using this operation, the client can perform multiple PutAttribute operation with a single call.This helps yield savings in round trips and latencies, enabling Amazon SimpleDB to optimize requests and generally produce better throughput.

The client may specify the item name with the Item.X.ItemName parameter. The client may specify new attributes using a combination of the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value parameters. The client may specify the first attribute for the first item using the parameters Item.0.Attribute.0.Name and Item.0.Attribute.0.Value, and for the second attribute for the first item by the parameters Item.0.Attribute.1.Name and Item.0.Attribute.1.Value, and so on.

Attributes are uniquely identified within an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", "second_value" }. However, it cannot have two attribute instances where both the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same.

Optionally, the requester can supply the Replace parameter for each individual value. Setting this value to true will cause the new attribute values to replace the existing attribute values. For example, if an item I has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requester does a BatchPutAttributes of {'I', 'b', '4' } with the Replace parameter set to true, the final attributes of the item will be { 'a', '1' } and { 'b', '4' }, replacing the previous values of the 'b' attribute with the new value.

You cannot specify an empty string as an item or as an attribute name. The BatchPutAttributes operation succeeds or fails in its entirety. There are no partial puts. This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists.

You can execute multiple BatchPutAttributes operations and other operations in parallel. However, large numbers of concurrent BatchPutAttributes calls can result in Service Unavailable (503) responses.

The following limitations are enforced for this operation:

  • 256 attribute name-value pairs per item
  • 1 MB request size
  • 1 billion attributes per domain
  • 10 GB of total user data storage per domain
  • 25 item limit per BatchPutAttributes operation

+ *

The BatchPutAttributes operation creates or replaces attributes within one or more items. By using this operation, the client can perform multiple PutAttribute operation with a single call. This helps yield savings in round trips and latencies, enabling Amazon SimpleDB to optimize requests and generally produce better throughput.

The client may specify the item name with the Item.X.ItemName parameter. The client may specify new attributes using a combination of the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value parameters. The client may specify the first attribute for the first item using the parameters Item.0.Attribute.0.Name and Item.0.Attribute.0.Value, and for the second attribute for the first item by the parameters Item.0.Attribute.1.Name and Item.0.Attribute.1.Value, and so on.

Attributes are uniquely identified within an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", "second_value" }. However, it cannot have two attribute instances where both the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same.

Optionally, the requester can supply the Replace parameter for each individual value. Setting this value to true will cause the new attribute values to replace the existing attribute values. For example, if an item I has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requester does a BatchPutAttributes of {'I', 'b', '4' } with the Replace parameter set to true, the final attributes of the item will be { 'a', '1' } and { 'b', '4' }, replacing the previous values of the 'b' attribute with the new value.

This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists.

You can execute multiple BatchPutAttributes operations and other operations in parallel. However, large numbers of concurrent BatchPutAttributes calls can result in Service Unavailable (503) responses.

The following limitations are enforced for this operation:

  • 256 attribute name-value pairs per item
  • 1 MB request size
  • 1 billion attributes per domain
  • 10 GB of total user data storage per domain
  • 25 item limit per BatchPutAttributes operation

* * @param request A container for the necessary parameters to execute the BatchPutAttributes service method. * @@ -54,7 +53,7 @@ - (BFTask *)batchPutAttributes:(AWSSimpleDBBatchPutAttributesRequest *)request; /** - *

The CreateDomain operation creates a new domain. The domain name should be unique among the domains associated with the Access Key ID provided in the request. The CreateDomain operation may take 10 or more seconds to complete.

CreateDomain is an idempotent operation; running it multiple times using the same domain name will not result in an error response.

The client can create up to 100 domains per account.

If the client requires additional domains, go to http://aws.amazon.com/contact-us/simpledb-limit-request/.

+ *

The CreateDomain operation creates a new domain. The domain name should be unique among the domains associated with the Access Key ID provided in the request. The CreateDomain operation may take 10 or more seconds to complete.

The client can create up to 100 domains per account.

If the client requires additional domains, go to http://aws.amazon.com/contact-us/simpledb-limit-request/.

* * @param request A container for the necessary parameters to execute the CreateDomain service method. * @@ -65,7 +64,7 @@ - (BFTask *)createDomain:(AWSSimpleDBCreateDomainRequest *)request; /** - *

Deletes one or more attributes associated with an item. If all attributes of the item are deleted, the item is deleted.

If DeleteAttributes is called without being passed any attributes or values specified, all the attributes for the item are deleted.

DeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Because Amazon SimpleDB makes multiple copies of item data and uses an eventual consistency update model, performing a GetAttributes or Select operation (read) immediately after a DeleteAttributes or PutAttributes operation (write) might not return updated item data.

+ *

Deletes one or more attributes associated with an item. If all attributes of the item are deleted, the item is deleted.

DeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Because Amazon SimpleDB makes multiple copies of item data and uses an eventual consistency update model, performing a GetAttributes or Select operation (read) immediately after a DeleteAttributes or PutAttributes operation (write) might not return updated item data.

* * @param request A container for the necessary parameters to execute the DeleteAttributes service method. * @@ -76,7 +75,7 @@ - (BFTask *)deleteAttributes:(AWSSimpleDBDeleteAttributesRequest *)request; /** - *

The DeleteDomain operation deletes a domain. Any items (and their attributes) in the domain are deleted as well. The DeleteDomain operation might take 10 or more seconds to complete.

Running DeleteDomain on a domain that does not exist or running the function multiple times using the same domain name will not result in an error response. + *

The DeleteDomain operation deletes a domain. Any items (and their attributes) in the domain are deleted as well. The DeleteDomain operation might take 10 or more seconds to complete.

* * @param request A container for the necessary parameters to execute the DeleteDomain service method. * @@ -87,7 +86,7 @@ - (BFTask *)deleteDomain:(AWSSimpleDBDeleteDomainRequest *)request; /** - *

Returns information about the domain, including when the domain was created, the number of items and attributes in the domain, and the size of the attribute names and values.

+ *

Returns information about the domain, including when the domain was created, the number of items and attributes in the domain, and the size of the attribute names and values.

* * @param request A container for the necessary parameters to execute the DomainMetadata service method. * @@ -99,7 +98,7 @@ - (BFTask *)domainMetadata:(AWSSimpleDBDomainMetadataRequest *)request; /** - *

Returns all of the attributes associated with the specified item. Optionally, the attributes returned can be limited to one or more attributes by specifying an attribute name parameter.

If the item does not exist on the replica that was accessed for this operation, an empty set is returned. The system does not return an error as it cannot guarantee the item does not exist on other replicas.

If GetAttributes is called without being passed any attribute names, all the attributes for the item are returned. + *

Returns all of the attributes associated with the specified item. Optionally, the attributes returned can be limited to one or more attributes by specifying an attribute name parameter.

If the item does not exist on the replica that was accessed for this operation, an empty set is returned. The system does not return an error as it cannot guarantee the item does not exist on other replicas.

* * @param request A container for the necessary parameters to execute the GetAttributes service method. * @@ -111,7 +110,7 @@ - (BFTask *)getAttributes:(AWSSimpleDBGetAttributesRequest *)request; /** - *

The ListDomains operation lists all domains associated with the Access Key ID. It returns domain names up to the limit set by MaxNumberOfDomains. A NextToken is returned if there are more than MaxNumberOfDomains domains. Calling ListDomains successive times with the NextToken provided by the operation returns up to MaxNumberOfDomains more domain names with each successive operation call.

+ *

The ListDomains operation lists all domains associated with the Access Key ID. It returns domain names up to the limit set by MaxNumberOfDomains. A NextToken is returned if there are more than MaxNumberOfDomains domains. Calling ListDomains successive times with the NextToken provided by the operation returns up to MaxNumberOfDomains more domain names with each successive operation call.

* * @param request A container for the necessary parameters to execute the ListDomains service method. * @@ -123,7 +122,7 @@ - (BFTask *)listDomains:(AWSSimpleDBListDomainsRequest *)request; /** - *

The PutAttributes operation creates or replaces attributes in an item. The client may specify new attributes using a combination of the Attribute.X.Name and Attribute.X.Value parameters. The client specifies the first attribute by the parameters Attribute.0.Name and Attribute.0.Value, the second attribute by the parameters Attribute.1.Name and Attribute.1.Value, and so on.

Attributes are uniquely identified in an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", second_value" }. However, it cannot have two attribute instances where both the Attribute.X.Name and Attribute.X.Value are the same.

Optionally, the requestor can supply the Replace parameter for each individual attribute. Setting this value to true causes the new attribute value to replace the existing attribute value(s). For example, if an item has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requestor callsPutAttributes using the attributes { 'b', '4' } with the Replace parameter set to true, the final attributes of the item are changed to { 'a', '1' } and { 'b', '4' }, which replaces the previous values of the 'b' attribute with the new value.

Using PutAttributes to replace attribute values that do not exist will not result in an error response.

You cannot specify an empty string as an attribute name.

Because Amazon SimpleDB makes multiple copies of client data and uses an eventual consistency update model, an immediate GetAttributes or Select operation (read) immediately after a PutAttributes or DeleteAttributes operation (write) might not return the updated data.

The following limitations are enforced for this operation:

  • 256 total attribute name-value pairs per item
  • One billion attributes per domain
  • 10 GB of total user data storage per domain

+ *

The PutAttributes operation creates or replaces attributes in an item. The client may specify new attributes using a combination of the Attribute.X.Name and Attribute.X.Value parameters. The client specifies the first attribute by the parameters Attribute.0.Name and Attribute.0.Value, the second attribute by the parameters Attribute.1.Name and Attribute.1.Value, and so on.

Attributes are uniquely identified in an item by their name/value combination. For example, a single item can have the attributes { "first_name", "first_value" } and { "first_name", second_value" }. However, it cannot have two attribute instances where both the Attribute.X.Name and Attribute.X.Value are the same.

Optionally, the requestor can supply the Replace parameter for each individual attribute. Setting this value to true causes the new attribute value to replace the existing attribute value(s). For example, if an item has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requestor calls PutAttributes using the attributes { 'b', '4' } with the Replace parameter set to true, the final attributes of the item are changed to { 'a', '1' } and { 'b', '4' }, which replaces the previous values of the 'b' attribute with the new value.

You cannot specify an empty string as an attribute name.

Because Amazon SimpleDB makes multiple copies of client data and uses an eventual consistency update model, an immediate GetAttributes or Select operation (read) immediately after a PutAttributes or DeleteAttributes operation (write) might not return the updated data.

The following limitations are enforced for this operation:

  • 256 total attribute name-value pairs per item
  • One billion attributes per domain
  • 10 GB of total user data storage per domain

* * @param request A container for the necessary parameters to execute the PutAttributes service method. * diff --git a/SimpleDB/AWSSimpleDB.m b/SimpleDB/AWSSimpleDB.m index 605d03071da..f0e466ea98e 100644 --- a/SimpleDB/AWSSimpleDB.m +++ b/SimpleDB/AWSSimpleDB.m @@ -15,8 +15,8 @@ #import "AWSSimpleDB.h" -#import "AZNetworking.h" -#import "AZCategory.h" +#import "AWSNetworking.h" +#import "AWSCategory.h" #import "AWSSignature.h" #import "AWSService.h" #import "AWSNetworking.h" @@ -95,7 +95,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSimpleDBErrorDomain code:[errorCodeDictionary[errorInfo[@"Code"]] integerValue] - userInfo:@{NSLocalizedDescriptionKey :[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]} + userInfo:errorInfo ]; return responseObject; } @@ -103,8 +103,7 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response if (error) { *error = [NSError errorWithDomain:AWSSimpleDBErrorDomain code:AWSSimpleDBErrorUnknown - userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"%@ -- %@",[errorInfo objectForKey:@"Code"],[errorInfo objectForKey:@"Message"]?[errorInfo objectForKey:@"Message"]:[NSNull null]] - }]; + userInfo:errorInfo]; return responseObject; } } @@ -127,22 +126,22 @@ @interface AWSSimpleDBRequestRetryHandler : AWSURLRequestRetryHandler @implementation AWSSimpleDBRequestRetryHandler -- (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount +- (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount response:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { - AZNetworkingRetryType retryType = [super shouldRetry:currentRetryCount + AWSNetworkingRetryType retryType = [super shouldRetry:currentRetryCount response:response data:data error:error]; - if(retryType == AZNetworkingRetryTypeShouldNotRetry + if(retryType == AWSNetworkingRetryTypeShouldNotRetry && [error.domain isEqualToString:AWSSimpleDBErrorDomain] && currentRetryCount < self.maxRetryCount) { switch (error.code) { case AWSSimpleDBErrorAccessFailure: case AWSSimpleDBErrorAuthFailure: case AWSSimpleDBErrorAuthMissingFailure: - retryType = AZNetworkingRetryTypeShouldRefreshCredentialsAndRetry; + retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; default: @@ -157,15 +156,14 @@ - (AZNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount @interface AWSRequest() -@property (nonatomic, strong) AZNetworkingRequest *internalRequest; +@property (nonatomic, strong) AWSNetworkingRequest *internalRequest; @end @interface AWSSimpleDB() -@property (nonatomic, strong) AZNetworking *networking; +@property (nonatomic, strong) AWSNetworking *networking; @property (nonatomic, strong) AWSServiceConfiguration *configuration; -@property (nonatomic, strong) AWSEndpoint *endpoint; @end @@ -189,25 +187,25 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { if (self = [super init]) { _configuration = [configuration copy]; - _endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType - service:AWSServiceSimpleDB]; + _configuration.endpoint = [AWSEndpoint endpointWithRegion:_configuration.regionType + service:AWSServiceSimpleDB]; AWSSignatureV2Signer *signer = [AWSSignatureV2Signer signerWithCredentialsProvider:_configuration.credentialsProvider - endpoint:_endpoint]; + endpoint:_configuration.endpoint]; - _configuration.baseURL = _endpoint.URL; + _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSimpleDBRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _endpoint.hostName}; + _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; - _networking = [AZNetworking networking:_configuration]; + _networking = [AWSNetworking networking:_configuration]; } return self; } - (BFTask *)invokeRequest:(AWSRequest *)request - HTTPMethod:(AZHTTPMethod)HTTPMethod + HTTPMethod:(AWSHTTPMethod)HTTPMethod URLString:(NSString *) URLString targetPrefix:(NSString *)targetPrefix operationName:(NSString *)operationName @@ -216,9 +214,9 @@ - (BFTask *)invokeRequest:(AWSRequest *)request request = [AWSRequest new]; } - AZNetworkingRequest *networkingRequest = request.internalRequest; + AWSNetworkingRequest *networkingRequest = request.internalRequest; if (request) { - networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] az_removeNullValues]; + networkingRequest.parameters = [[MTLJSONAdapter JSONDictionaryFromModel:request] aws_removeNullValues]; } else { networkingRequest.parameters = @{}; } @@ -226,8 +224,8 @@ - (BFTask *)invokeRequest:(AWSRequest *)request AWSQueryStringRequestSerializer *requestSerializer = [AWSQueryStringRequestSerializer serializerWithResource:AWSSimpleDBDefinitionFileName actionName:operationName]; -// requestSerializer.additionalParameters = @{@"Action" : operationName, -// @"Version" : @"2009-04-15"}; + // requestSerializer.additionalParameters = @{@"Action" : operationName, + // @"Version" : @"2009-04-15"}; networkingRequest.requestSerializer = requestSerializer; networkingRequest.responseSerializer = [AWSSimpleDBResponseSerializer serializerWithOutputClass:outputClass @@ -241,7 +239,7 @@ - (BFTask *)invokeRequest:(AWSRequest *)request - (BFTask *)batchDeleteAttributes:(AWSSimpleDBBatchDeleteAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"BatchDeleteAttributes" @@ -250,7 +248,7 @@ - (BFTask *)batchDeleteAttributes:(AWSSimpleDBBatchDeleteAttributesRequest *)req - (BFTask *)batchPutAttributes:(AWSSimpleDBBatchPutAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"BatchPutAttributes" @@ -259,7 +257,7 @@ - (BFTask *)batchPutAttributes:(AWSSimpleDBBatchPutAttributesRequest *)request { - (BFTask *)createDomain:(AWSSimpleDBCreateDomainRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"CreateDomain" @@ -268,7 +266,7 @@ - (BFTask *)createDomain:(AWSSimpleDBCreateDomainRequest *)request { - (BFTask *)deleteAttributes:(AWSSimpleDBDeleteAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteAttributes" @@ -277,7 +275,7 @@ - (BFTask *)deleteAttributes:(AWSSimpleDBDeleteAttributesRequest *)request { - (BFTask *)deleteDomain:(AWSSimpleDBDeleteDomainRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DeleteDomain" @@ -286,7 +284,7 @@ - (BFTask *)deleteDomain:(AWSSimpleDBDeleteDomainRequest *)request { - (BFTask *)domainMetadata:(AWSSimpleDBDomainMetadataRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"DomainMetadata" @@ -295,7 +293,7 @@ - (BFTask *)domainMetadata:(AWSSimpleDBDomainMetadataRequest *)request { - (BFTask *)getAttributes:(AWSSimpleDBGetAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"GetAttributes" @@ -304,7 +302,7 @@ - (BFTask *)getAttributes:(AWSSimpleDBGetAttributesRequest *)request { - (BFTask *)listDomains:(AWSSimpleDBListDomainsRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"ListDomains" @@ -313,7 +311,7 @@ - (BFTask *)listDomains:(AWSSimpleDBListDomainsRequest *)request { - (BFTask *)putAttributes:(AWSSimpleDBPutAttributesRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"PutAttributes" @@ -322,7 +320,7 @@ - (BFTask *)putAttributes:(AWSSimpleDBPutAttributesRequest *)request { - (BFTask *)select:(AWSSimpleDBSelectRequest *)request { return [self invokeRequest:request - HTTPMethod:AZHTTPMethodPOST + HTTPMethod:AWSHTTPMethodPOST URLString:@"" targetPrefix:@"" operationName:@"Select" diff --git a/SimpleDB/AWSSimpleDBModel.h b/SimpleDB/AWSSimpleDBModel.h index 0e1d77c19b6..70a4a787c75 100644 --- a/SimpleDB/AWSSimpleDBModel.h +++ b/SimpleDB/AWSSimpleDBModel.h @@ -15,7 +15,7 @@ #import #import "AWSNetworking.h" -#import "AZModel.h" +#import "AWSModel.h" FOUNDATION_EXPORT NSString *const AWSSimpleDBErrorDomain; @@ -68,7 +68,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { *

* Required parameters: [Name, Value] */ -@interface AWSSimpleDBAttribute : AZModel +@interface AWSSimpleDBAttribute : AWSModel /** @@ -127,13 +127,13 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { /** - * The name of the domain to create. The name can range between 3 and 255 characters and can contain the following characters: a-z, A-Z, 0-9, '_', '-', and '.'. + * The name of the domain to create. The name can range between 3 and 255 characters and can contain the following characters: a-z, A-Z, 0-9, '_', '-', and '.'. */ @property (nonatomic, strong) NSString *domainName; @end -@interface AWSSimpleDBDeletableItem : AZModel +@interface AWSSimpleDBDeletableItem : AWSModel @property (nonatomic, strong) NSArray *attributes; @property (nonatomic, strong) NSString *name; @@ -154,7 +154,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @property (nonatomic, strong) NSString *domainName; /** - * The update condition which, if specified, determines whether the specified attributes will be deleted or not.The update condition must be satisfied in order for this request to be processed and the attributes to be deleted. + * The update condition which, if specified, determines whether the specified attributes will be deleted or not. The update condition must be satisfied in order for this request to be processed and the attributes to be deleted. */ @property (nonatomic, strong) AWSSimpleDBUpdateCondition *expected; @@ -185,7 +185,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @end -@interface AWSSimpleDBDomainMetadataResult : AZModel +@interface AWSSimpleDBDomainMetadataResult : AWSModel /** @@ -234,7 +234,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @property (nonatomic, strong) NSArray *attributeNames; /** - * Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned.Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read. + * Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read. */ @property (nonatomic, strong) NSNumber *consistentRead; @@ -250,7 +250,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @end -@interface AWSSimpleDBGetAttributesResult : AZModel +@interface AWSSimpleDBGetAttributesResult : AWSModel /** @@ -264,7 +264,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { *

* Required parameters: [Name, Attributes] */ -@interface AWSSimpleDBItem : AZModel +@interface AWSSimpleDBItem : AWSModel /** @@ -288,7 +288,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { /** - * The maximum number of domain names you want returned.The range is 1 to 100.The default setting is 100. + * The maximum number of domain names you want returned. The range is 1 to 100. The default setting is 100. */ @property (nonatomic, strong) NSNumber *maxNumberOfDomains; @@ -299,7 +299,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @end -@interface AWSSimpleDBListDomainsResult : AZModel +@interface AWSSimpleDBListDomainsResult : AWSModel /** @@ -328,7 +328,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @property (nonatomic, strong) NSString *domainName; /** - * The update condition which, if specified, determines whether the specified attributes will be updated or not.The update condition must be satisfied in order for this request to be processed and the attributes to be updated. + * The update condition which, if specified, determines whether the specified attributes will be updated or not. The update condition must be satisfied in order for this request to be processed and the attributes to be updated. */ @property (nonatomic, strong) AWSSimpleDBUpdateCondition *expected; @@ -343,7 +343,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { *

* Required parameters: [Name, Value] */ -@interface AWSSimpleDBReplaceableAttribute : AZModel +@interface AWSSimpleDBReplaceableAttribute : AWSModel /** @@ -367,7 +367,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { *

* Required parameters: [Name, Attributes] */ -@interface AWSSimpleDBReplaceableItem : AZModel +@interface AWSSimpleDBReplaceableItem : AWSModel /** @@ -386,7 +386,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { /** - * Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned.Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read. + * Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read. */ @property (nonatomic, strong) NSNumber *consistentRead; @@ -402,7 +402,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @end -@interface AWSSimpleDBSelectResult : AZModel +@interface AWSSimpleDBSelectResult : AWSModel /** @@ -420,7 +420,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { /** *

Specifies the conditions under which data should be updated. If an update condition is specified for a request, the data will only be updated if the condition is satisfied. For example, if an attribute with a specific name and value exists, or if a specific attribute doesn't exist.

*/ -@interface AWSSimpleDBUpdateCondition : AZModel +@interface AWSSimpleDBUpdateCondition : AWSModel /** @@ -434,7 +434,7 @@ typedef NS_ENUM(NSInteger, AWSSimpleDBErrorType) { @property (nonatomic, strong) NSString *name; /** - *

The value of an attribute.This value can only be specified when the Exists parameter is equal to true.

+ *

The value of an attribute. This value can only be specified when the Exists parameter is equal to true.

*/ @property (nonatomic, strong) NSString *value; diff --git a/SimpleDB/AWSSimpleDBModel.m b/SimpleDB/AWSSimpleDBModel.m index c9ff457dd16..d071061a953 100644 --- a/SimpleDB/AWSSimpleDBModel.m +++ b/SimpleDB/AWSSimpleDBModel.m @@ -14,7 +14,7 @@ */ #import "AWSSimpleDBModel.h" -#import "AZCategory.h" +#import "AWSCategory.h" NSString *const AWSSimpleDBErrorDomain = @"com.amazonaws.AWSSimpleDBErrorDomain"; diff --git a/SimpleDB/Resources/sdb-2009-04-15.json b/SimpleDB/Resources/sdb-2009-04-15.json index 21473031e67..13c26ea2660 100644 --- a/SimpleDB/Resources/sdb-2009-04-15.json +++ b/SimpleDB/Resources/sdb-2009-04-15.json @@ -7,7 +7,7 @@ "xmlNamespace":"http://sdb.amazonaws.com/doc/2009-04-15/", "protocol":"query" }, - "documentation":"Amazon SimpleDB is a web service providing the core database functions of\n data indexing and querying in the cloud. By offloading the time and effort associated with\n building and operating a web-scale database, SimpleDB provides developers the freedom to focus\n on application development.\n\n

\n A traditional, clustered relational database requires a sizable upfront capital outlay,\n is complex to design, and often requires extensive and repetitive database administration.\n Amazon SimpleDB is dramatically simpler, requiring no schema, automatically indexing your data\n and providing a simple API for storage and access. This approach eliminates the administrative\n burden of data modeling, index maintenance, and performance tuning. Developers gain access to\n this functionality within Amazon's proven computing environment, are able to scale instantly,\n and pay only for what they use.\n

\n\n

\n Visit http://aws.amazon.com/simpledb/ for\n more information.\n

", + "documentation":"Amazon SimpleDB is a web service providing the core database functions of data indexing and querying in the cloud. By offloading the time and effort associated with building and operating a web-scale database, SimpleDB provides developers the freedom to focus on application development.

A traditional, clustered relational database requires a sizable upfront capital outlay, is complex to design, and often requires extensive and repetitive database administration. Amazon SimpleDB is dramatically simpler, requiring no schema, automatically indexing your data and providing a simple API for storage and access. This approach eliminates the administrative burden of data modeling, index maintenance, and performance tuning. Developers gain access to this functionality within Amazon's proven computing environment, are able to scale instantly, and pay only for what they use.

Visit http://aws.amazon.com/simpledb/ for more information.

", "operations":{ "BatchDeleteAttributes":{ "name":"BatchDeleteAttributes", @@ -16,7 +16,7 @@ "requestUri":"/" }, "input":{"shape":"BatchDeleteAttributesRequest"}, - "documentation":"

\n Performs multiple DeleteAttributes operations in a single call, which reduces round trips and latencies.\n This enables Amazon SimpleDB to optimize requests, which generally yields better throughput.\n

\n \n

\n If you specify BatchDeleteAttributes without attributes or values,\n all the attributes for the item are deleted.\n

\n

\n BatchDeleteAttributes is an idempotent operation;\n running it multiple times on the same item or attribute doesn't result in an error.\n

\n

\n The BatchDeleteAttributes operation succeeds or fails in its entirety. There are no partial deletes.\n You can execute multiple BatchDeleteAttributes operations and other operations in parallel.\n However, large numbers of concurrent BatchDeleteAttributes calls can result in Service Unavailable (503) responses.\n

\n

\n This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method.\n

\n

\n This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists.\n

\n
\n

\n The following limitations are enforced for this operation:\n

    \n
  • 1 MB request size
  • \n
  • 25 item limit per BatchDeleteAttributes operation
  • \n
\n

" + "documentation":"

Performs multiple DeleteAttributes operations in a single call, which reduces round trips and latencies. This enables Amazon SimpleDB to optimize requests, which generally yields better throughput.

The following limitations are enforced for this operation:

  • 1 MB request size
  • 25 item limit per BatchDeleteAttributes operation

" }, "BatchPutAttributes":{ "name":"BatchPutAttributes", @@ -117,7 +117,7 @@ "documentation":"

Too many attributes exist in a single call.

" } ], - "documentation":"

\n\t The BatchPutAttributes operation creates or replaces attributes within\n\t\tone or more items. By using this operation, the client can perform multiple\n\t\tPutAttribute operation with a single call. This helps yield savings in round trips\n\t\tand latencies, enabling Amazon SimpleDB to optimize requests and generally produce better throughput.\n\t\t

\n\n

\n\t\tThe client may specify the item name with the Item.X.ItemName parameter.\n\t\tThe client may specify new attributes using a combination of the\n\t\tItem.X.Attribute.Y.Name and Item.X.Attribute.Y.Value\n\t\tparameters. The client may specify the first attribute for the first item using the parameters\n\t\tItem.0.Attribute.0.Name and Item.0.Attribute.0.Value,\n\t\tand for the second attribute for the first item by the parameters\n\t\tItem.0.Attribute.1.Name and Item.0.Attribute.1.Value,\n\t\tand so on.\n

\n\n

\n\t\tAttributes are uniquely identified within an item by their name/value\n\t\tcombination. For example, a single item can have the attributes {\n\t\t\"first_name\", \"first_value\" } and { \"first_name\", \"second_value\" }.\n\t\tHowever, it cannot have two attribute instances where both the\n\t\tItem.X.Attribute.Y.Name and Item.X.Attribute.Y.Value\n\t\tare the same.\n

\n\n

\n Optionally, the requester can supply the Replace parameter for each\n\t\tindividual value. Setting this value to true will cause the new\n\t\tattribute values to replace the existing attribute values. For\n\t\texample, if an item I has the attributes { 'a', '1' }, { 'b', '2'}\n\t\tand { 'b', '3' } and the requester does a BatchPutAttributes of {'I',\n\t\t'b', '4' } with the Replace parameter set to true, the final\n\t\tattributes of the item will be { 'a', '1' } and { 'b', '4' },\n\t\treplacing the previous values of the 'b' attribute with the new value.\n

\n\n \n\t\tYou cannot specify an empty string as an item or as an attribute name.\n\t\tThe BatchPutAttributes operation succeeds or fails in its entirety.\n There are no partial puts.\n \n\n \n This operation is vulnerable to exceeding the maximum URL size when making\n a REST request using the HTTP GET method.\n This operation does not support conditions using Expected.X.Name,\n Expected.X.Value, or\n Expected.X.Exists.\n \n\n

\n You can execute multiple BatchPutAttributes operations and other operations in parallel.\n However, large numbers of concurrent BatchPutAttributes calls can result in\n Service Unavailable (503) responses.\n

\n\n

\n The following limitations are enforced for this operation:\n

    \n
  • 256 attribute name-value pairs per item
  • \n
  • 1 MB request size
  • \n
  • 1 billion attributes per domain
  • \n
  • 10 GB of total user data storage per domain
  • \n
  • 25 item limit per BatchPutAttributes operation
  • \n
\n

" + "documentation":"

The BatchPutAttributes operation creates or replaces attributes within one or more items. By using this operation, the client can perform multiple PutAttribute operation with a single call. This helps yield savings in round trips and latencies, enabling Amazon SimpleDB to optimize requests and generally produce better throughput.

The client may specify the item name with the Item.X.ItemName parameter. The client may specify new attributes using a combination of the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value parameters. The client may specify the first attribute for the first item using the parameters Item.0.Attribute.0.Name and Item.0.Attribute.0.Value, and for the second attribute for the first item by the parameters Item.0.Attribute.1.Name and Item.0.Attribute.1.Value, and so on.

Attributes are uniquely identified within an item by their name/value combination. For example, a single item can have the attributes { \"first_name\", \"first_value\" } and { \"first_name\", \"second_value\" }. However, it cannot have two attribute instances where both the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same.

Optionally, the requester can supply the Replace parameter for each individual value. Setting this value to true will cause the new attribute values to replace the existing attribute values. For example, if an item I has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requester does a BatchPutAttributes of {'I', 'b', '4' } with the Replace parameter set to true, the final attributes of the item will be { 'a', '1' } and { 'b', '4' }, replacing the previous values of the 'b' attribute with the new value.

This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists.

You can execute multiple BatchPutAttributes operations and other operations in parallel. However, large numbers of concurrent BatchPutAttributes calls can result in Service Unavailable (503) responses.

The following limitations are enforced for this operation:

  • 256 attribute name-value pairs per item
  • 1 MB request size
  • 1 billion attributes per domain
  • 10 GB of total user data storage per domain
  • 25 item limit per BatchPutAttributes operation

" }, "CreateDomain":{ "name":"CreateDomain", @@ -158,7 +158,7 @@ "documentation":"

Too many domains exist per this account.

" } ], - "documentation":"

\n\t\tThe CreateDomain operation creates a new domain. The domain name should\n\t\tbe unique among the domains associated with the Access Key ID provided\n\t\tin the request. The CreateDomain operation may take 10 or more seconds to complete.\n\t\t

\n\n \n\t\tCreateDomain is an idempotent operation; running it multiple times using the same\n\t\tdomain name will not result in an error response.\n \n\n

\n The client can create up to 100 domains per account.\n

\n\n

\n If the client requires additional domains, go to\n \n http://aws.amazon.com/contact-us/simpledb-limit-request/.\n

" + "documentation":"

The CreateDomain operation creates a new domain. The domain name should be unique among the domains associated with the Access Key ID provided in the request. The CreateDomain operation may take 10 or more seconds to complete.

The client can create up to 100 domains per account.

If the client requires additional domains, go to http://aws.amazon.com/contact-us/simpledb-limit-request/.

" }, "DeleteAttributes":{ "name":"DeleteAttributes", @@ -209,7 +209,7 @@ "documentation":"

The specified attribute does not exist.

" } ], - "documentation":"

\n Deletes one or more attributes associated with an item.\n If all attributes of the item are deleted, the item is deleted.\n

\n\n \n If DeleteAttributes is called without being passed any attributes or values\n specified, all the attributes for the item are deleted.\n \n\n

\n DeleteAttributes is an idempotent operation; running it multiple\n times on the same item or attribute does not result in an error response.\n

\n\n

\n Because Amazon SimpleDB makes multiple copies of item data and uses an\n eventual consistency update model, performing a GetAttributes or\n Select operation (read) immediately after a DeleteAttributes or\n PutAttributes operation (write) might not return updated item data.\n

" + "documentation":"

Deletes one or more attributes associated with an item. If all attributes of the item are deleted, the item is deleted.

DeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Because Amazon SimpleDB makes multiple copies of item data and uses an eventual consistency update model, performing a GetAttributes or Select operation (read) immediately after a DeleteAttributes or PutAttributes operation (write) might not return updated item data.

" }, "DeleteDomain":{ "name":"DeleteDomain", @@ -230,7 +230,7 @@ "documentation":"

The request must contain the specified missing parameter.

" } ], - "documentation":"

\n\t The DeleteDomain operation deletes a domain. Any items\n\t\t(and their attributes) in the domain are deleted as well.\n\t\tThe DeleteDomain operation might take 10 or more seconds to complete.\n\t\t

\n\n \n Running DeleteDomain on a domain that does not exist or running the\n\t\tfunction multiple times using the same domain name will not result in an error response.\n " + "documentation":"

The DeleteDomain operation deletes a domain. Any items (and their attributes) in the domain are deleted as well. The DeleteDomain operation might take 10 or more seconds to complete.

" }, "DomainMetadata":{ "name":"DomainMetadata", @@ -265,7 +265,7 @@ "documentation":"

The specified domain does not exist.

" } ], - "documentation":"

\n\t\tReturns information about the domain, including when the domain was created,\n\t\tthe number of items and attributes in the domain,\n\t\tand the size of the attribute names and values.\n\t\t

" + "documentation":"

Returns information about the domain, including when the domain was created, the number of items and attributes in the domain, and the size of the attribute names and values.

" }, "GetAttributes":{ "name":"GetAttributes", @@ -310,7 +310,7 @@ "documentation":"

The specified domain does not exist.

" } ], - "documentation":"

\n Returns all of the attributes associated with the specified item.\n Optionally, the attributes returned can be limited to one or\n more attributes by specifying an attribute name parameter.\n

\n\n

\n If the item does not exist on the replica that was accessed\n for this operation, an empty set is returned. The system does\n not return an error as it cannot guarantee the item does\n not exist on other replicas.\n

\n\n \n If GetAttributes is called without being passed any attribute names, all\n the attributes for the item are returned.\n " + "documentation":"

Returns all of the attributes associated with the specified item. Optionally, the attributes returned can be limited to one or more attributes by specifying an attribute name parameter.

If the item does not exist on the replica that was accessed for this operation, an empty set is returned. The system does not return an error as it cannot guarantee the item does not exist on other replicas.

" }, "ListDomains":{ "name":"ListDomains", @@ -345,7 +345,7 @@ "documentation":"

The specified NextToken is not valid.

" } ], - "documentation":"

\n The ListDomains operation lists all domains associated with the\n Access Key ID. It returns domain names up to the limit set by\n MaxNumberOfDomains.\n A NextToken is returned if there are more\n \tthan MaxNumberOfDomains domains. Calling ListDomains successive\n times with the NextToken provided by the operation\n returns up to MaxNumberOfDomains more domain names\n with each successive operation call.\n

" + "documentation":"

The ListDomains operation lists all domains associated with the Access Key ID. It returns domain names up to the limit set by MaxNumberOfDomains. A NextToken is returned if there are more than MaxNumberOfDomains domains. Calling ListDomains successive times with the NextToken provided by the operation returns up to MaxNumberOfDomains more domain names with each successive operation call.

" }, "PutAttributes":{ "name":"PutAttributes", @@ -426,7 +426,7 @@ "documentation":"

The specified attribute does not exist.

" } ], - "documentation":"

\n\t\tThe PutAttributes operation creates or replaces attributes\n\t\tin an item. The client may specify new attributes using a combination\n\t\tof the Attribute.X.Name and Attribute.X.Value\n\t\tparameters. The client specifies the first attribute by the parameters\n\t\tAttribute.0.Name and Attribute.0.Value,\n\t\tthe second attribute by the parameters Attribute.1.Name\n\t\tand Attribute.1.Value, and so on.\n\t\t

\n\n

\n\t\tAttributes are uniquely identified in an item by their name/value\n\t\tcombination. For example, a single item can have the attributes\n\t\t{ \"first_name\", \"first_value\" } and { \"first_name\",\n\t\tsecond_value\" }. However, it cannot have two attribute instances\n\t\twhere both the Attribute.X.Name and Attribute.X.Value\n\t\tare the same.\n

\n\n

\n Optionally, the requestor can supply the Replace parameter for each\n\t\tindividual attribute. Setting this value to true causes the new\n\t\tattribute value to replace the existing attribute value(s).\n\t\tFor example, if an item has the attributes { 'a', '1' },\n\t\t{ 'b', '2'} and { 'b', '3' } and the requestor\n calls PutAttributes using the attributes { 'b', '4' } with\n the Replace parameter set to true, the final attributes of the item are changed\n\t\tto { 'a', '1' } and { 'b', '4' }, which replaces the\n\t\tprevious values of the 'b' attribute with the new value.\n

\n\n \n Using PutAttributes to replace attribute values that do not exist will not\n\t\tresult in an error response.\n \n\n

\n You cannot specify an empty string as an attribute name.\n

\n\n

\n Because Amazon SimpleDB makes multiple copies of client data and uses\n an eventual consistency update model, an immediate GetAttributes\n or Select operation (read) immediately after a PutAttributes or\n DeleteAttributes operation (write) might not return the updated data.\n

\n\n

\n The following limitations are enforced for this operation:\n\n

    \n
  • 256 total attribute name-value pairs per item
  • \n
  • One billion attributes per domain
  • \n
  • 10 GB of total user data storage per domain
  • \n
\n

" + "documentation":"

The PutAttributes operation creates or replaces attributes in an item. The client may specify new attributes using a combination of the Attribute.X.Name and Attribute.X.Value parameters. The client specifies the first attribute by the parameters Attribute.0.Name and Attribute.0.Value, the second attribute by the parameters Attribute.1.Name and Attribute.1.Value, and so on.

Attributes are uniquely identified in an item by their name/value combination. For example, a single item can have the attributes { \"first_name\", \"first_value\" } and { \"first_name\", second_value\" }. However, it cannot have two attribute instances where both the Attribute.X.Name and Attribute.X.Value are the same.

Optionally, the requestor can supply the Replace parameter for each individual attribute. Setting this value to true causes the new attribute value to replace the existing attribute value(s). For example, if an item has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requestor calls PutAttributes using the attributes { 'b', '4' } with the Replace parameter set to true, the final attributes of the item are changed to { 'a', '1' } and { 'b', '4' }, which replaces the previous values of the 'b' attribute with the new value.

You cannot specify an empty string as an attribute name.

Because Amazon SimpleDB makes multiple copies of client data and uses an eventual consistency update model, an immediate GetAttributes or Select operation (read) immediately after a PutAttributes or DeleteAttributes operation (write) might not return the updated data.

The following limitations are enforced for this operation:

  • 256 total attribute name-value pairs per item
  • One billion attributes per domain
  • 10 GB of total user data storage per domain

" }, "Select":{ "name":"Select", @@ -518,7 +518,7 @@ "senderFault":true }, "exception":true, - "documentation":"

A timeout occurred when attempting to\n query the specified domain with specified query expression.

" + "documentation":"

A timeout occurred when attempting to query the specified domain with specified query expression.

" }, { "shape":"TooManyRequestedAttributes", @@ -531,7 +531,7 @@ "documentation":"

Too many attributes requested.

" } ], - "documentation":"

\n The Select operation returns a set of attributes for ItemNames\n that match the select expression. Select is similar to the standard\n SQL SELECT statement.\n

\n\n

\n The total size of the response cannot exceed 1 MB in total size.\n Amazon SimpleDB automatically adjusts the number of items\n returned per page to enforce this limit. For example, if the client asks\n to retrieve 2500 items, but each individual item\n is 10 kB in size, the system returns 100 items and an\n appropriate NextToken so the client can access the next page of results.\n

\n\n

\n For information on how to construct select expressions,\n see Using Select to Create Amazon SimpleDB Queries in the\n Developer Guide.\n

" + "documentation":"

The Select operation returns a set of attributes for ItemNames that match the select expression. Select is similar to the standard SQL SELECT statement.

The total size of the response cannot exceed 1 MB in total size. Amazon SimpleDB automatically adjusts the number of items returned per page to enforce this limit. For example, if the client asks to retrieve 2500 items, but each individual item is 10 kB in size, the system returns 100 items and an appropriate NextToken so the client can access the next page of results.

For information on how to construct select expressions, see Using Select to Create Amazon SimpleDB Queries in the Developer Guide.

" } }, "shapes":{ @@ -631,7 +631,7 @@ "members":{ "DomainName":{ "shape":"String", - "documentation":"The name of the domain to create. The name can range between 3 and 255\n\t\tcharacters and can contain the following characters: a-z, A-Z, 0-9,\n\t\t'_', '-', and '.'." + "documentation":"The name of the domain to create. The name can range between 3 and 255 characters and can contain the following characters: a-z, A-Z, 0-9, '_', '-', and '.'." } } }, @@ -667,15 +667,15 @@ }, "ItemName":{ "shape":"String", - "documentation":"The name of the item. Similar to rows on a spreadsheet,\n items represent individual objects that contain one or more\n value-attribute pairs." + "documentation":"The name of the item. Similar to rows on a spreadsheet, items represent individual objects that contain one or more value-attribute pairs." }, "Attributes":{ "shape":"AttributeList", - "documentation":"A list of Attributes. Similar to columns on a spreadsheet, attributes\n represent categories of data that can be assigned to items." + "documentation":"A list of Attributes. Similar to columns on a spreadsheet, attributes represent categories of data that can be assigned to items." }, "Expected":{ "shape":"UpdateCondition", - "documentation":"The update condition which, if specified, determines whether the specified attributes\n will be deleted or not. The update condition must be satisfied in order for this\n request to be processed and the attributes to be deleted." + "documentation":"The update condition which, if specified, determines whether the specified attributes will be deleted or not. The update condition must be satisfied in order for this request to be processed and the attributes to be deleted." } } }, @@ -775,7 +775,7 @@ }, "ConsistentRead":{ "shape":"Boolean", - "documentation":"Determines whether or not strong consistency should be enforced when data is read\n from SimpleDB. If true, any data previously written to SimpleDB\n will be returned. Otherwise, results will be consistent eventually, and the client\n may not see data that was written immediately before your read." + "documentation":"Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read." } } }, @@ -889,11 +889,11 @@ "members":{ "MaxNumberOfDomains":{ "shape":"Integer", - "documentation":"The maximum number of domain names you want returned.\n\n The range is 1 to 100.\n\n The default setting is 100." + "documentation":"The maximum number of domain names you want returned. The range is 1 to 100. The default setting is 100." }, "NextToken":{ "shape":"String", - "documentation":"A string informing Amazon SimpleDB where to start the\n next list of domain names." + "documentation":"A string informing Amazon SimpleDB where to start the next list of domain names." } } }, @@ -906,7 +906,7 @@ }, "NextToken":{ "shape":"String", - "documentation":"An opaque token indicating that there are more domains than the specified\n MaxNumberOfDomains still available." + "documentation":"An opaque token indicating that there are more domains than the specified MaxNumberOfDomains still available." } } }, @@ -1037,7 +1037,7 @@ }, "Expected":{ "shape":"UpdateCondition", - "documentation":"The update condition which, if specified, determines whether the specified attributes\n will be updated or not. The update condition must be satisfied in order for this\n request to be processed and the attributes to be updated." + "documentation":"The update condition which, if specified, determines whether the specified attributes will be updated or not. The update condition must be satisfied in order for this request to be processed and the attributes to be updated." } } }, @@ -1058,7 +1058,7 @@ }, "Replace":{ "shape":"Boolean", - "documentation":"A flag specifying whether or not to replace the attribute/value pair or\n to add a new attribute/value pair. The default setting is false." + "documentation":"A flag specifying whether or not to replace the attribute/value pair or to add a new attribute/value pair. The default setting is false." } }, "documentation":"

" @@ -1109,7 +1109,7 @@ "senderFault":true }, "exception":true, - "documentation":"

A timeout occurred when attempting to\n query the specified domain with specified query expression.

" + "documentation":"

A timeout occurred when attempting to query the specified domain with specified query expression.

" }, "SelectRequest":{ "type":"structure", @@ -1121,11 +1121,11 @@ }, "NextToken":{ "shape":"String", - "documentation":"A string informing Amazon SimpleDB where to start the next\n list of ItemNames." + "documentation":"A string informing Amazon SimpleDB where to start the next list of ItemNames." }, "ConsistentRead":{ "shape":"Boolean", - "documentation":"Determines whether or not strong consistency should be enforced when data is read\n from SimpleDB. If true, any data previously written to SimpleDB\n will be returned. Otherwise, results will be consistent eventually, and the client\n may not see data that was written immediately before your read." + "documentation":"Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read." } } }, @@ -1138,7 +1138,7 @@ }, "NextToken":{ "shape":"String", - "documentation":"An opaque token indicating that more items than MaxNumberOfItems were matched,\n the response size exceeded 1 megabyte, or the execution time exceeded 5 seconds." + "documentation":"An opaque token indicating that more items than MaxNumberOfItems were matched, the response size exceeded 1 megabyte, or the execution time exceeded 5 seconds." } } }, @@ -1165,14 +1165,14 @@ }, "Value":{ "shape":"String", - "documentation":"

The value of an attribute. This value can only be\n specified when the Exists parameter is equal to true.

" + "documentation":"

The value of an attribute. This value can only be specified when the Exists parameter is equal to true.

" }, "Exists":{ "shape":"Boolean", - "documentation":"

A value specifying whether or not the specified attribute must exist with the specified\n value in order for the update condition to be satisfied. Specify true if\n the attribute must exist for the update condition to be satisfied. Specify false\n if the attribute should not exist in order for the update condition to be satisfied.

" + "documentation":"

A value specifying whether or not the specified attribute must exist with the specified value in order for the update condition to be satisfied. Specify true if the attribute must exist for the update condition to be satisfied. Specify false if the attribute should not exist in order for the update condition to be satisfied.

" } }, - "documentation":"

\n Specifies the conditions under which data should be updated.\n If an update condition is specified for a request,\n the data will only be updated if the condition is satisfied.\n For example, if an attribute with a specific name and value\n exists, or if a specific attribute doesn't exist.\n

" + "documentation":"

Specifies the conditions under which data should be updated. If an update condition is specified for a request, the data will only be updated if the condition is satisfied. For example, if an attribute with a specific name and value exists, or if a specific attribute doesn't exist.

" } } }