diff --git a/manifest.json b/manifest.json index 7676bed60..c454f5e9e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "variables": { - "${LATEST}": "3.385.2" + "${LATEST}": "3.386.2" }, "endpoints": "https://raw.githubusercontent.com/aws/aws-sdk-php/${LATEST}/src/data/endpoints.json", "services": { diff --git a/src/Service/ImageBuilder/CHANGELOG.md b/src/Service/ImageBuilder/CHANGELOG.md index af7cbb78b..fd9eedcdb 100644 --- a/src/Service/ImageBuilder/CHANGELOG.md +++ b/src/Service/ImageBuilder/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Added + +- AWS api-change: Adds support for AMI watermarks in Image Builder. + ## 1.1.0 ### Added diff --git a/src/Service/ImageBuilder/composer.json b/src/Service/ImageBuilder/composer.json index 6687d9deb..6079a76fc 100644 --- a/src/Service/ImageBuilder/composer.json +++ b/src/Service/ImageBuilder/composer.json @@ -33,7 +33,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.2-dev" } } } diff --git a/src/Service/ImageBuilder/src/Result/GetImageResponse.php b/src/Service/ImageBuilder/src/Result/GetImageResponse.php index 17c56391a..78446da06 100644 --- a/src/Service/ImageBuilder/src/Result/GetImageResponse.php +++ b/src/Service/ImageBuilder/src/Result/GetImageResponse.php @@ -171,6 +171,22 @@ private function populateResultAmiList(array $json): array return $items; } + /** + * @return string[] + */ + private function populateResultAmiWatermarksList(array $json): array + { + $items = []; + foreach ($json as $item) { + $a = isset($item) ? (string) $item : null; + if (null !== $a) { + $items[] = $a; + } + } + + return $items; + } + private function populateResultComponentConfiguration(array $json): ComponentConfiguration { return new ComponentConfiguration([ @@ -443,6 +459,7 @@ private function populateResultImageRecipe(array $json): ImageRecipe 'workingDirectory' => isset($json['workingDirectory']) ? (string) $json['workingDirectory'] : null, 'additionalInstanceConfiguration' => empty($json['additionalInstanceConfiguration']) ? null : $this->populateResultAdditionalInstanceConfiguration($json['additionalInstanceConfiguration']), 'amiTags' => !isset($json['amiTags']) ? null : $this->populateResultTagMap($json['amiTags']), + 'amiWatermarks' => !isset($json['amiWatermarks']) ? null : $this->populateResultAmiWatermarksList($json['amiWatermarks']), ]); } diff --git a/src/Service/ImageBuilder/src/ValueObject/ImageRecipe.php b/src/Service/ImageBuilder/src/ValueObject/ImageRecipe.php index c4c19b2b7..b44a67141 100644 --- a/src/Service/ImageBuilder/src/ValueObject/ImageRecipe.php +++ b/src/Service/ImageBuilder/src/ValueObject/ImageRecipe.php @@ -125,6 +125,14 @@ final class ImageRecipe */ private $amiTags; + /** + * The AMI watermark names attached to the output AMI from this recipe. AMI watermarks are lineage markers that + * automatically propagate to derivative AMIs when the source AMI is copied or distributed. + * + * @var string[]|null + */ + private $amiWatermarks; + /** * @param array{ * arn?: string|null, @@ -142,6 +150,7 @@ final class ImageRecipe * workingDirectory?: string|null, * additionalInstanceConfiguration?: AdditionalInstanceConfiguration|array|null, * amiTags?: array|null, + * amiWatermarks?: string[]|null, * } $input */ public function __construct(array $input) @@ -161,6 +170,7 @@ public function __construct(array $input) $this->workingDirectory = $input['workingDirectory'] ?? null; $this->additionalInstanceConfiguration = isset($input['additionalInstanceConfiguration']) ? AdditionalInstanceConfiguration::create($input['additionalInstanceConfiguration']) : null; $this->amiTags = $input['amiTags'] ?? null; + $this->amiWatermarks = $input['amiWatermarks'] ?? null; } /** @@ -180,6 +190,7 @@ public function __construct(array $input) * workingDirectory?: string|null, * additionalInstanceConfiguration?: AdditionalInstanceConfiguration|array|null, * amiTags?: array|null, + * amiWatermarks?: string[]|null, * }|ImageRecipe $input */ public static function create($input): self @@ -200,6 +211,14 @@ public function getAmiTags(): array return $this->amiTags ?? []; } + /** + * @return string[] + */ + public function getAmiWatermarks(): array + { + return $this->amiWatermarks ?? []; + } + public function getArn(): ?string { return $this->arn; diff --git a/src/Service/Lambda/CHANGELOG.md b/src/Service/Lambda/CHANGELOG.md index dd070889f..dc21e4a74 100644 --- a/src/Service/Lambda/CHANGELOG.md +++ b/src/Service/Lambda/CHANGELOG.md @@ -5,6 +5,7 @@ ### Added - AWS api-change: Converging and fixing existing documentation gaps in Lambda SDK +- AWS api-change: Lambda now supports self-managed S3 buckets for Lambda code storage giving you the option for Lambda to reference a copy of your source code from your own S3 buckets. This allows you to maintain a single copy of your source code and manage your own code storage limits. ## 2.15.0 diff --git a/src/Service/Lambda/src/Enum/S3ObjectStorageMode.php b/src/Service/Lambda/src/Enum/S3ObjectStorageMode.php new file mode 100644 index 000000000..e027829e0 --- /dev/null +++ b/src/Service/Lambda/src/Enum/S3ObjectStorageMode.php @@ -0,0 +1,23 @@ + true, + self::REFERENCE => true, + ][$value]); + } +} diff --git a/src/Service/Lambda/src/Result/PublishLayerVersionResponse.php b/src/Service/Lambda/src/Result/PublishLayerVersionResponse.php index 878cdcb1a..8a0565ee3 100644 --- a/src/Service/Lambda/src/Result/PublishLayerVersionResponse.php +++ b/src/Service/Lambda/src/Result/PublishLayerVersionResponse.php @@ -7,6 +7,7 @@ use AsyncAws\Lambda\Enum\Architecture; use AsyncAws\Lambda\Enum\Runtime; use AsyncAws\Lambda\ValueObject\LayerVersionContentOutput; +use AsyncAws\Lambda\ValueObject\ResolvedS3Object; class PublishLayerVersionResponse extends Result { @@ -214,6 +215,16 @@ private function populateResultLayerVersionContentOutput(array $json): LayerVers 'CodeSize' => isset($json['CodeSize']) ? (int) $json['CodeSize'] : null, 'SigningProfileVersionArn' => isset($json['SigningProfileVersionArn']) ? (string) $json['SigningProfileVersionArn'] : null, 'SigningJobArn' => isset($json['SigningJobArn']) ? (string) $json['SigningJobArn'] : null, + 'ResolvedS3Object' => empty($json['ResolvedS3Object']) ? null : $this->populateResultResolvedS3Object($json['ResolvedS3Object']), + ]); + } + + private function populateResultResolvedS3Object(array $json): ResolvedS3Object + { + return new ResolvedS3Object([ + 'S3Bucket' => isset($json['S3Bucket']) ? (string) $json['S3Bucket'] : null, + 'S3Key' => isset($json['S3Key']) ? (string) $json['S3Key'] : null, + 'S3ObjectVersion' => isset($json['S3ObjectVersion']) ? (string) $json['S3ObjectVersion'] : null, ]); } } diff --git a/src/Service/Lambda/src/ValueObject/LayerVersionContentInput.php b/src/Service/Lambda/src/ValueObject/LayerVersionContentInput.php index ec8f7dd1f..04978a713 100644 --- a/src/Service/Lambda/src/ValueObject/LayerVersionContentInput.php +++ b/src/Service/Lambda/src/ValueObject/LayerVersionContentInput.php @@ -2,6 +2,9 @@ namespace AsyncAws\Lambda\ValueObject; +use AsyncAws\Core\Exception\InvalidArgument; +use AsyncAws\Lambda\Enum\S3ObjectStorageMode; + /** * A ZIP archive that contains the contents of an Lambda layer [^1]. You can specify either an Amazon S3 location, or * upload a layer archive directly. @@ -31,6 +34,11 @@ final class LayerVersionContentInput */ private $s3ObjectVersion; + /** + * @var S3ObjectStorageMode::*|null + */ + private $s3ObjectStorageMode; + /** * The base64-encoded contents of the layer archive. Amazon Web Services SDK and Amazon Web Services CLI clients handle * the encoding for you. @@ -44,6 +52,7 @@ final class LayerVersionContentInput * S3Bucket?: string|null, * S3Key?: string|null, * S3ObjectVersion?: string|null, + * S3ObjectStorageMode?: S3ObjectStorageMode::*|null, * ZipFile?: string|null, * } $input */ @@ -52,6 +61,7 @@ public function __construct(array $input) $this->s3Bucket = $input['S3Bucket'] ?? null; $this->s3Key = $input['S3Key'] ?? null; $this->s3ObjectVersion = $input['S3ObjectVersion'] ?? null; + $this->s3ObjectStorageMode = $input['S3ObjectStorageMode'] ?? null; $this->zipFile = $input['ZipFile'] ?? null; } @@ -60,6 +70,7 @@ public function __construct(array $input) * S3Bucket?: string|null, * S3Key?: string|null, * S3ObjectVersion?: string|null, + * S3ObjectStorageMode?: S3ObjectStorageMode::*|null, * ZipFile?: string|null, * }|LayerVersionContentInput $input */ @@ -78,6 +89,14 @@ public function getS3Key(): ?string return $this->s3Key; } + /** + * @return S3ObjectStorageMode::*|null + */ + public function getS3ObjectStorageMode(): ?string + { + return $this->s3ObjectStorageMode; + } + public function getS3ObjectVersion(): ?string { return $this->s3ObjectVersion; @@ -103,6 +122,13 @@ public function requestBody(): array if (null !== $v = $this->s3ObjectVersion) { $payload['S3ObjectVersion'] = $v; } + if (null !== $v = $this->s3ObjectStorageMode) { + if (!S3ObjectStorageMode::exists($v)) { + /** @psalm-suppress NoValue */ + throw new InvalidArgument(\sprintf('Invalid parameter "S3ObjectStorageMode" for "%s". The value "%s" is not a valid "S3ObjectStorageMode".', __CLASS__, $v)); + } + $payload['S3ObjectStorageMode'] = $v; + } if (null !== $v = $this->zipFile) { $payload['ZipFile'] = base64_encode($v); } diff --git a/src/Service/Lambda/src/ValueObject/LayerVersionContentOutput.php b/src/Service/Lambda/src/ValueObject/LayerVersionContentOutput.php index a7b706acf..21c6567ae 100644 --- a/src/Service/Lambda/src/ValueObject/LayerVersionContentOutput.php +++ b/src/Service/Lambda/src/ValueObject/LayerVersionContentOutput.php @@ -44,6 +44,11 @@ final class LayerVersionContentOutput */ private $signingJobArn; + /** + * @var ResolvedS3Object|null + */ + private $resolvedS3Object; + /** * @param array{ * Location?: string|null, @@ -51,6 +56,7 @@ final class LayerVersionContentOutput * CodeSize?: int|null, * SigningProfileVersionArn?: string|null, * SigningJobArn?: string|null, + * ResolvedS3Object?: ResolvedS3Object|array|null, * } $input */ public function __construct(array $input) @@ -60,6 +66,7 @@ public function __construct(array $input) $this->codeSize = $input['CodeSize'] ?? null; $this->signingProfileVersionArn = $input['SigningProfileVersionArn'] ?? null; $this->signingJobArn = $input['SigningJobArn'] ?? null; + $this->resolvedS3Object = isset($input['ResolvedS3Object']) ? ResolvedS3Object::create($input['ResolvedS3Object']) : null; } /** @@ -69,6 +76,7 @@ public function __construct(array $input) * CodeSize?: int|null, * SigningProfileVersionArn?: string|null, * SigningJobArn?: string|null, + * ResolvedS3Object?: ResolvedS3Object|array|null, * }|LayerVersionContentOutput $input */ public static function create($input): self @@ -91,6 +99,11 @@ public function getLocation(): ?string return $this->location; } + public function getResolvedS3Object(): ?ResolvedS3Object + { + return $this->resolvedS3Object; + } + public function getSigningJobArn(): ?string { return $this->signingJobArn; diff --git a/src/Service/Lambda/src/ValueObject/ResolvedS3Object.php b/src/Service/Lambda/src/ValueObject/ResolvedS3Object.php new file mode 100644 index 000000000..b36c83d7f --- /dev/null +++ b/src/Service/Lambda/src/ValueObject/ResolvedS3Object.php @@ -0,0 +1,71 @@ +s3Bucket = $input['S3Bucket'] ?? null; + $this->s3Key = $input['S3Key'] ?? null; + $this->s3ObjectVersion = $input['S3ObjectVersion'] ?? null; + } + + /** + * @param array{ + * S3Bucket?: string|null, + * S3Key?: string|null, + * S3ObjectVersion?: string|null, + * }|ResolvedS3Object $input + */ + public static function create($input): self + { + return $input instanceof self ? $input : new self($input); + } + + public function getS3Bucket(): ?string + { + return $this->s3Bucket; + } + + public function getS3Key(): ?string + { + return $this->s3Key; + } + + public function getS3ObjectVersion(): ?string + { + return $this->s3ObjectVersion; + } +} diff --git a/src/Service/RdsDataService/CHANGELOG.md b/src/Service/RdsDataService/CHANGELOG.md index 0ef8e2d5b..f3036e74b 100644 --- a/src/Service/RdsDataService/CHANGELOG.md +++ b/src/Service/RdsDataService/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Changed + +- AWS enhancement: Documentation updates. + ## 3.0.2 ### Changed diff --git a/src/Service/RdsDataService/src/Exception/BadRequestException.php b/src/Service/RdsDataService/src/Exception/BadRequestException.php index b35c87c23..0c0ded717 100644 --- a/src/Service/RdsDataService/src/Exception/BadRequestException.php +++ b/src/Service/RdsDataService/src/Exception/BadRequestException.php @@ -5,8 +5,7 @@ use AsyncAws\Core\Exception\Http\ClientException; /** - * There is an error in the call or in a SQL statement. (This error only appears in calls from Aurora Serverless v1 - * databases.). + * There is an error in the call or in a SQL statement. This exception is deprecated. */ final class BadRequestException extends ClientException { diff --git a/src/Service/RdsDataService/src/Exception/DatabaseResumingException.php b/src/Service/RdsDataService/src/Exception/DatabaseResumingException.php index 136a5c5ea..65bdb49c0 100644 --- a/src/Service/RdsDataService/src/Exception/DatabaseResumingException.php +++ b/src/Service/RdsDataService/src/Exception/DatabaseResumingException.php @@ -5,7 +5,7 @@ use AsyncAws\Core\Exception\Http\ClientException; /** - * A request was cancelled because the Aurora Serverless v2 DB instance was paused. The Data API request automatically + * A request was cancelled because the Aurora Serverless DB instance was paused. The Data API request automatically * resumes the DB instance. Wait a few seconds and try again. */ final class DatabaseResumingException extends ClientException