Doc AWS SDK Examples GitHub リポジトリには、他にも SDK の例があります。 AWS
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SDK を使用した Amazon S3 Control のコード例 AWS SDKs
次のコード例は、 AWS Software Development Kit (SDK) で Amazon S3 Control を使用する方法を示しています。
基本は、重要なオペレーションをサービス内で実行する方法を示すコード例です。
アクションはより大きなプログラムからのコードの抜粋であり、コンテキスト内で実行する必要があります。アクションは個々のサービス機能を呼び出す方法を示していますが、コンテキスト内のアクションは、関連するシナリオで確認できます。
開始方法
次のコード例は、Amazon S3 Control の使用を開始する方法を示しています。
- Java
-
- SDK for Java 2.x
-
GitHub には、その他のリソースもあります。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.core.retry.RetryMode;
import software.amazon.awssdk.core.retry.RetryPolicy;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlAsyncClient;
import software.amazon.awssdk.services.s3control.model.JobListDescriptor;
import software.amazon.awssdk.services.s3control.model.JobStatus;
import software.amazon.awssdk.services.s3control.model.ListJobsRequest;
import software.amazon.awssdk.services.s3control.paginators.ListJobsPublisher;
import java.time.Duration;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
/**
* Before running this example:
* <p/>
* The SDK must be able to authenticate AWS requests on your behalf. If you have not configured
* authentication for SDKs and tools,see https://docs.aws.amazon.com/sdkref/latest/guide/access.html in the AWS SDKs and Tools Reference Guide.
* <p/>
* You must have a runtime environment configured with the Java SDK.
* See https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html in the Developer Guide if this is not set up.
*/
public class HelloS3Batch {
private static S3ControlAsyncClient asyncClient;
public static void main(String[] args) {
S3BatchActions actions = new S3BatchActions();
String accountId = actions.getAccountId();
try {
listBatchJobsAsync(accountId)
.exceptionally(ex -> {
System.err.println("List batch jobs failed: " + ex.getMessage());
return null;
})
.join();
} catch (CompletionException ex) {
System.err.println("Failed to list batch jobs: " + ex.getMessage());
}
}
/**
* Retrieves the asynchronous S3 Control client instance.
* <p>
* This method creates and returns a singleton instance of the {@link S3ControlAsyncClient}. If the instance
* has not been created yet, it will be initialized with the following configuration:
* <ul>
* <li>Maximum concurrency: 100</li>
* <li>Connection timeout: 60 seconds</li>
* <li>Read timeout: 60 seconds</li>
* <li>Write timeout: 60 seconds</li>
* <li>API call timeout: 2 minutes</li>
* <li>API call attempt timeout: 90 seconds</li>
* <li>Retry policy: 3 retries</li>
* <li>Region: US_EAST_1</li>
* <li>Credentials provider: {@link EnvironmentVariableCredentialsProvider}</li>
* </ul>
*
* @return the asynchronous S3 Control client instance
*/
private static S3ControlAsyncClient getAsyncClient() {
if (asyncClient == null) {
SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder()
.maxConcurrency(100)
.connectionTimeout(Duration.ofSeconds(60))
.readTimeout(Duration.ofSeconds(60))
.writeTimeout(Duration.ofSeconds(60))
.build();
ClientOverrideConfiguration overrideConfig = ClientOverrideConfiguration.builder()
.apiCallTimeout(Duration.ofMinutes(2))
.apiCallAttemptTimeout(Duration.ofSeconds(90))
.retryStrategy(RetryMode.STANDARD)
.build();
asyncClient = S3ControlAsyncClient.builder()
.region(Region.US_EAST_1)
.httpClient(httpClient)
.overrideConfiguration(overrideConfig)
.build();
}
return asyncClient;
}
/**
* Asynchronously lists batch jobs that have completed for the specified account.
*
* @param accountId the ID of the account to list jobs for
* @return a CompletableFuture that completes when the job listing operation is finished
*/
public static CompletableFuture<Void> listBatchJobsAsync(String accountId) {
ListJobsRequest jobsRequest = ListJobsRequest.builder()
.jobStatuses(JobStatus.COMPLETE)
.accountId(accountId)
.maxResults(10)
.build();
ListJobsPublisher publisher = getAsyncClient().listJobsPaginator(jobsRequest);
return publisher.subscribe(response -> {
List<JobListDescriptor> jobs = response.jobs();
for (JobListDescriptor job : jobs) {
System.out.println("The job id is " + job.jobId());
System.out.println("The job priority is " + job.priority());
}
}).thenAccept(response -> {
System.out.println("Listing batch jobs completed");
}).exceptionally(ex -> {
System.err.println("Failed to list batch jobs: " + ex.getMessage());
throw new RuntimeException(ex);
});
}