Interface PollyPresigner
- All Superinterfaces:
AutoCloseable
,SdkAutoCloseable
,SdkPresigner
- All Known Implementing Classes:
DefaultPollyPresigner
Enables signing a
PollyRequest
so that it can be executed without requiring any additional authentication on the
part of the caller.
Signature Duration
Pre-signed requests are only valid for a finite period of time, referred to as the signature duration. This signature
duration is configured when the request is generated, and cannot be longer than 7 days. Attempting to generate a signature
longer than 7 days in the future will fail at generation time. Attempting to use a pre-signed request after the signature
duration has passed will result in an access denied response from the service.
Example Usage
// Create a PollyPresigner using the default region and credentials.
// This is usually done at application startup, because creating a presigner can be expensive.
PollyPresigner presigner = PollyPresigner.create();
// Create a SynthesizeSpeechRequest to be pre-signed
SynthesizeSpeechRequest synthesizeSpeechRequest =
SynthesizeSpeechRequest.builder()
.text("Hello Polly!")
.voiceId(VoiceId.SALLI)
.outputFormat(OutputFormat.PCM)
.build();
// Create a SynthesizeSpeechRequest to specify the signature duration
SynthesizeSpeechPresignRequest synthesizeSpeechPresignRequest =
SynthesizeSpeechPresignRequest.builder()
.signatureDuration(Duration.ofMinutes(10))
.synthesizeSpeechRequest(synthesizeSpeechRequest)
.build();
// Generate the presigned request
PresignedSynthesizeSpeechRequest presignedSynthesizeSpeechRequest =
presigner.presignSynthesizeSpeech(SynthesizeSpeechPresignRequest);
// Log the presigned URL, for example.
System.out.println("Presigned URL: " + presignedSynthesizeSpeechRequest.url());
// It is recommended to close the presigner when it is done being used, because some credential
// providers (e.g. if your AWS profile is configured to assume an STS role) require system resources
// that need to be freed. If you are using one presigner per application (as recommended), this
// usually is not needed.
presigner.close();
Browser Compatibility
Some pre-signed requests can be executed by a web browser. These "browser compatible" pre-signed requests
do not require the customer to send anything other than a "host" header when performing an HTTP GET against
the pre-signed URL.
Whether a pre-signed request is "browser compatible" can be determined by checking the
PresignedRequest.isBrowserExecutable()
flag. It is recommended to always check this flag when the pre-signed
request needs to be executed by a browser, because some request fields will result in the pre-signed request not
being browser-compatible.
Executing a Pre-Signed Request from Java code
Browser-compatible requests (see above) can be executed using a web browser. All pre-signed requests can be executed
from Java code. This documentation describes two methods for executing a pre-signed request: (1) using the JDK's
URLConnection
class, (2) using an SDK synchronous SdkHttpClient
class.
Using {code URLConnection}:
// Create a pre-signed request using one of the "presign" methods on PollyPresigner PresignedRequest presignedRequest = ...; // Create a JDK HttpURLConnection for communicating with Polly HttpURLConnection connection = (HttpURLConnection) presignedRequest.url().openConnection(); // Specify any headers that are needed by the service (not needed when isBrowserExecutable is true) presignedRequest.httpRequest().headers().forEach((header, values) -> { values.forEach(value -> { connection.addRequestProperty(header, value); }); }); // Download the result of executing the request try (InputStream content = connection.getInputStream()) { System.out.println("Service returned response: "); IoUtils.copy(content, myFileOutputstream); }
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic PollyPresigner.Builder
builder()
static PollyPresigner
create()
Create an instance of this presigner using the default region and credentials chains to resolve the region and credentials to use.presignSynthesizeSpeech
(SynthesizeSpeechPresignRequest synthesizeSpeechPresignRequest) Presign aSynthesizeSpeechRequest
so that it can be executed at a later time without requiring additional signing or authentication.Methods inherited from interface software.amazon.awssdk.awscore.presigner.SdkPresigner
close
-
Method Details
-
presignSynthesizeSpeech
PresignedSynthesizeSpeechRequest presignSynthesizeSpeech(SynthesizeSpeechPresignRequest synthesizeSpeechPresignRequest) Presign aSynthesizeSpeechRequest
so that it can be executed at a later time without requiring additional signing or authentication.- Parameters:
synthesizeSpeechPresignRequest
- The presign request.- Returns:
- The presigned request.
-
create
Create an instance of this presigner using the default region and credentials chains to resolve the region and credentials to use. -
builder
- Returns:
- the builder for a
PollyPresigner
.
-