Skip to content

Migration tool - S3 transforms #6014

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package foo.bar;

import com.amazonaws.HttpMethod;
import com.amazonaws.services.s3.model.MultiFactorAuthentication;
import com.amazonaws.services.s3.model.SSEAwsKeyManagementParams;
import com.amazonaws.services.s3.model.SSECustomerKey;
import java.io.ByteArrayInputStream;
Expand All @@ -25,6 +26,7 @@
import software.amazon.awssdk.core.async.AsyncRequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.AccessControlPolicy;
import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
import software.amazon.awssdk.services.s3.model.GeneratePresignedUrlRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectResponse;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
Expand All @@ -33,6 +35,12 @@

public class S3Transforms {

void s3Pojos() {
DeleteObjectRequest deleteVersionRequest =
DeleteObjectRequest.builder().bucket("bucket").key("key").versionId("id").mfa(new MultiFactorAuthentication("serialNum", "token"))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a comment to show how customers can fix it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, will do as follow up. Want to merge these changes to include in the benchmarks

.build();
}

void upload_streamWithLiteralLength(S3TransferManager tm, String bucket, String key) {
HeadObjectResponse metadata = HeadObjectResponse.builder()
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
import com.amazonaws.HttpMethod;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.DeleteVersionRequest;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.MultiFactorAuthentication;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSEAwsKeyManagementParams;
Expand All @@ -31,6 +33,11 @@

public class S3Transforms {

void s3Pojos() {
DeleteVersionRequest deleteVersionRequest =
new DeleteVersionRequest("bucket", "key", "id", new MultiFactorAuthentication("serialNum", "token"));
}

void upload_streamWithLiteralLength(TransferManager tm, String bucket, String key) {
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(333);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@
import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketRequestPaymentRequest;
import software.amazon.awssdk.services.s3.model.PutBucketTaggingRequest;
import software.amazon.awssdk.services.s3.model.PutBucketVersioningRequest;
import software.amazon.awssdk.services.s3.model.PutBucketWebsiteRequest;
import software.amazon.awssdk.services.s3.model.ReplicationConfiguration;
import software.amazon.awssdk.services.s3.model.RequestPaymentConfiguration;
Expand All @@ -115,6 +116,7 @@
import software.amazon.awssdk.services.s3.model.Tagging;
import software.amazon.awssdk.services.s3.model.UploadPartCopyRequest;
import software.amazon.awssdk.services.s3.model.UploadPartCopyResponse;
import software.amazon.awssdk.services.s3.model.VersioningConfiguration;
import software.amazon.awssdk.services.s3.model.WebsiteConfiguration;
import software.amazon.awssdk.services.s3.presigner.S3Presigner;

Expand Down Expand Up @@ -350,6 +352,9 @@ private void pojosWithConstructorArgs(String bucket) {
PutBucketNotificationConfigurationRequest notificationRequest = PutBucketNotificationConfigurationRequest.builder().bucket(bucket).notificationConfiguration(NotificationConfiguration.builder()
.build())
.build();
PutBucketNotificationConfigurationRequest notificationRequest2 = PutBucketNotificationConfigurationRequest.builder().notificationConfiguration(NotificationConfiguration.builder()
.build()).bucket(bucket)
.build();
PutBucketTaggingRequest tagRequest = PutBucketTaggingRequest.builder().bucket(bucket).tagging(Tagging.builder()
.build())
.build();
Expand Down Expand Up @@ -389,6 +394,9 @@ private void setBucketConfigs(S3Client s3, String bucket) {
s3.putBucketWebsite(PutBucketWebsiteRequest.builder().bucket(bucket).websiteConfiguration(WebsiteConfiguration.builder()
.build())
.build());
s3.putBucketVersioning(PutBucketVersioningRequest.builder().bucket(bucket).versioningConfiguration(VersioningConfiguration.builder()
.build())
.build());
}

private void setBucketNameTest(S3Client s3, String bucket) {
Expand Down Expand Up @@ -446,4 +454,8 @@ private void getS3AccountOwner(S3Client s3) {
.build();
Owner owner3 = s3.listBuckets(getS3AccountOwnerRequest).owner();
}

private void getRegionName(S3Client s3) {
String region = s3.serviceClientConfiguration().region().id();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,20 @@
import software.amazon.awssdk.services.s3.model.CSVOutput;
import software.amazon.awssdk.services.s3.model.Condition;
import software.amazon.awssdk.services.s3.model.Destination;
import software.amazon.awssdk.services.s3.model.GetBucketVersioningResponse;
import software.amazon.awssdk.services.s3.model.Grantee;
import software.amazon.awssdk.services.s3.model.JSONInput;
import software.amazon.awssdk.services.s3.model.JSONOutput;
import software.amazon.awssdk.services.s3.model.ListMultipartUploadsResponse;
import software.amazon.awssdk.services.s3.model.ListPartsResponse;
import software.amazon.awssdk.services.s3.model.MetadataEntry;
import software.amazon.awssdk.services.s3.model.Owner;
import software.amazon.awssdk.services.s3.model.Part;
import software.amazon.awssdk.services.s3.model.PartitionDateSource;
import software.amazon.awssdk.services.s3.model.PartitionedPrefix;
import software.amazon.awssdk.services.s3.model.RedirectAllRequestsTo;
import software.amazon.awssdk.services.s3.model.S3Object;
import software.amazon.awssdk.services.s3.model.Tag;
import software.amazon.awssdk.services.s3.model.VersioningConfiguration;

public class S3Pojos {

Expand Down Expand Up @@ -69,9 +72,15 @@ public void s3Pojos(String bucket, String key, String id, String value) {
.build();
S3Object s3ObjectSummary = S3Object.builder()
.build();
GetBucketVersioningResponse bucketVersioningConfiguration = GetBucketVersioningResponse.builder()
VersioningConfiguration bucketVersioningConfiguration = VersioningConfiguration.builder()
.build();
VersioningConfiguration bucketVersioningConfiguration2 = VersioningConfiguration.builder().status("status")
.build();
Bucket bucketPojo = Bucket.builder().name("name")
.build();
Owner owner = Owner.builder().id(id).displayName("displayName")
.build();
PartitionedPrefix partitionedPrefix = PartitionedPrefix.builder().partitionDateSource(PartitionDateSource.DELIVERY_TIME)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,19 @@
import software.amazon.awssdk.services.s3.model.PutBucketMetricsConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketNotificationConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketOwnershipControlsRequest;
import software.amazon.awssdk.services.s3.model.PutBucketPolicyRequest;
import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketTaggingRequest;
import software.amazon.awssdk.services.s3.model.PutBucketVersioningRequest;
import software.amazon.awssdk.services.s3.model.ReplicationConfiguration;
import software.amazon.awssdk.services.s3.model.RequestPayer;
import software.amazon.awssdk.services.s3.model.RestoreObjectRequest;
import software.amazon.awssdk.services.s3.model.RestoreObjectResponse;
import software.amazon.awssdk.services.s3.model.RestoreRequest;
import software.amazon.awssdk.services.s3.model.Tag;
import software.amazon.awssdk.services.s3.model.Tagging;
import software.amazon.awssdk.services.s3.model.UploadPartCopyRequest;
import software.amazon.awssdk.services.s3.model.VersioningConfiguration;

public class S3RequestConstructor {
S3Client s3 = S3Client.create();
Expand Down Expand Up @@ -298,6 +305,12 @@ public void requestconstructor() {
GetObjectRequest.builder().bucket(bucketName).key(objectKey).versionId("3")
.build());

GetObjectRequest getObjectRequestRequesterPaysTrue = GetObjectRequest.builder().bucket(bucketName).key(objectKey).requestPayer(RequestPayer.REQUESTER)
.build();

GetObjectRequest getObjectRequestRequesterPaysFalse = GetObjectRequest.builder().bucket(bucketName).key(objectKey)
.build();

//INCOMPATIBLE RESPONSE
s3.getObjectAcl(GetObjectAclRequest.builder().bucket(bucketName).key(objectKey)
.build());
Expand Down Expand Up @@ -427,9 +440,25 @@ public void requestconstructor() {

RestoreObjectRequest restoreObjectRequest = RestoreObjectRequest.builder().bucket(bucketName).key(objectKey)
.build();
RestoreObjectRequest restoreObjectRequest2 = RestoreObjectRequest.builder().bucket(bucketName).key(objectKey).restoreRequest(RestoreRequest.builder().days(77).build())
.build();
RestoreObjectResponse restoreObjectResult = s3.restoreObject(restoreObjectRequest);

GetBucketRequestPaymentRequest getRequestPaymentConfigurationRequest =
GetBucketRequestPaymentRequest.builder().bucket(bucketName)
.build();

PutBucketPolicyRequest setBucketPolicyRequest = PutBucketPolicyRequest.builder().bucket(bucketName).policy("policyText")
.build();

List<Tag> tags = new ArrayList<>();
GetObjectTaggingResponse getObjectTaggingResult = GetObjectTaggingResponse.builder().tagSet(tags)
.build();

PutBucketVersioningRequest setBucketVersioningConfigurationRequest =
PutBucketVersioningRequest.builder().bucket(bucketName).versioningConfiguration(VersioningConfiguration.builder()
.build())
.build();
s3.putBucketVersioning(setBucketVersioningConfigurationRequest);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,13 @@ public class S3Streaming {

S3Client s3 = S3Client.create();

void getObject(String bucket, String key) throws Exception {
void getObject(String bucket, String key, File file) throws Exception {
ResponseInputStream<GetObjectResponse> s3Object = s3.getObject(GetObjectRequest.builder().bucket(bucket).key(key)
.build());
s3Object.close();

s3.getObject(GetObjectRequest.builder().bucket(bucket).key(key)
.build(), file.toPath());
}

void putObject_bucketKeyContent(String bucket, String key, String content) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.11.1000</version>
<version>1.12.782</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.amazonaws.services.s3.model.BucketNotificationConfiguration;
import com.amazonaws.services.s3.model.BucketReplicationConfiguration;
import com.amazonaws.services.s3.model.BucketTaggingConfiguration;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.BucketWebsiteConfiguration;
import com.amazonaws.services.s3.model.CORSRule;
import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest;
Expand Down Expand Up @@ -54,6 +55,7 @@
import com.amazonaws.services.s3.model.SetBucketLifecycleConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketNotificationConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketTaggingConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketWebsiteConfigurationRequest;
import com.amazonaws.services.s3.model.StorageClass;
import com.amazonaws.services.s3.model.analytics.AnalyticsConfiguration;
Expand Down Expand Up @@ -230,6 +232,7 @@ private void pojosWithConstructorArgs(String bucket) {
AbortMultipartUploadRequest abortMultipartUploadRequest = new AbortMultipartUploadRequest(bucket, "key", "versionId");
SetBucketLifecycleConfigurationRequest lifecycleRequest = new SetBucketLifecycleConfigurationRequest(bucket, new BucketLifecycleConfiguration());
SetBucketNotificationConfigurationRequest notificationRequest = new SetBucketNotificationConfigurationRequest(bucket, new BucketNotificationConfiguration());
SetBucketNotificationConfigurationRequest notificationRequest2 = new SetBucketNotificationConfigurationRequest(new BucketNotificationConfiguration(), bucket);
SetBucketTaggingConfigurationRequest tagRequest = new SetBucketTaggingConfigurationRequest(bucket, new BucketTaggingConfiguration());
SetBucketWebsiteConfigurationRequest websiteRequest = new SetBucketWebsiteConfigurationRequest(bucket, new BucketWebsiteConfiguration());
}
Expand All @@ -245,6 +248,7 @@ private void setBucketConfigs(AmazonS3 s3, String bucket) {
s3.setBucketReplicationConfiguration(bucket, new BucketReplicationConfiguration());
s3.setBucketTaggingConfiguration(bucket, new BucketTaggingConfiguration());
s3.setBucketWebsiteConfiguration(bucket, new BucketWebsiteConfiguration());
s3.setBucketVersioningConfiguration(new SetBucketVersioningConfigurationRequest(bucket, new BucketVersioningConfiguration()));
}

private void setBucketNameTest(AmazonS3 s3, String bucket) {
Expand Down Expand Up @@ -283,4 +287,8 @@ private void getS3AccountOwner(AmazonS3 s3) {
GetS3AccountOwnerRequest getS3AccountOwnerRequest = new GetS3AccountOwnerRequest();
Owner owner3 = s3.getS3AccountOwner(getS3AccountOwnerRequest);
}

private void getRegionName(AmazonS3 s3) {
String region = s3.getRegionName();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.BucketAccelerateConfiguration;
import com.amazonaws.services.s3.model.BucketNotificationConfiguration;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.CSVInput;
import com.amazonaws.services.s3.model.CSVOutput;
Expand All @@ -26,6 +27,9 @@
import com.amazonaws.services.s3.model.JSONOutput;
import com.amazonaws.services.s3.model.MetadataEntry;
import com.amazonaws.services.s3.model.MultipartUploadListing;
import com.amazonaws.services.s3.model.Owner;
import com.amazonaws.services.s3.model.PartitionDateSource;
import com.amazonaws.services.s3.model.PartitionedPrefix;
import com.amazonaws.services.s3.model.PartListing;
import com.amazonaws.services.s3.model.PartSummary;
import com.amazonaws.services.s3.model.RedirectRule;
Expand Down Expand Up @@ -55,6 +59,9 @@ public void s3Pojos(String bucket, String key, String id, String value) {
RoutingRuleCondition routingRuleCondition = new RoutingRuleCondition();
S3ObjectSummary s3ObjectSummary = new S3ObjectSummary();
BucketVersioningConfiguration bucketVersioningConfiguration = new BucketVersioningConfiguration();
BucketVersioningConfiguration bucketVersioningConfiguration2 = new BucketVersioningConfiguration("status");
Bucket bucketPojo = new Bucket("name");
Owner owner = new Owner(id, "displayName");
PartitionedPrefix partitionedPrefix = new PartitionedPrefix(PartitionDateSource.DELIVERY_TIME);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.amazonaws.services.s3.model.BucketNotificationConfiguration;
import com.amazonaws.services.s3.model.BucketReplicationConfiguration;
import com.amazonaws.services.s3.model.BucketTaggingConfiguration;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.CopyPartRequest;
Expand Down Expand Up @@ -100,14 +101,18 @@
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.RestoreObjectRequest;
import com.amazonaws.services.s3.model.RestoreObjectResult;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.SetBucketAnalyticsConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketLifecycleConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketMetricsConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketNotificationConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketOwnershipControlsRequest;
import com.amazonaws.services.s3.model.SetBucketPolicyRequest;
import com.amazonaws.services.s3.model.SetBucketReplicationConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketTaggingConfigurationRequest;
import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;
import com.amazonaws.services.s3.model.Tag;
import com.amazonaws.services.s3.model.analytics.AnalyticsConfiguration;
import com.amazonaws.services.s3.model.metrics.MetricsConfiguration;
import com.amazonaws.services.s3.model.ownership.OwnershipControls;
Expand Down Expand Up @@ -248,6 +253,10 @@ public void requestconstructor() {
S3Object s3Object2 = s3.getObject(
new GetObjectRequest(bucketName, objectKey, "3"));

GetObjectRequest getObjectRequestRequesterPaysTrue = new GetObjectRequest(bucketName, objectKey, true);

GetObjectRequest getObjectRequestRequesterPaysFalse = new GetObjectRequest(bucketName, objectKey, false);

//INCOMPATIBLE RESPONSE
s3.getObjectAcl(new GetObjectAclRequest(bucketName, objectKey));

Expand Down Expand Up @@ -341,8 +350,19 @@ public void requestconstructor() {
ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, objectKey, "id");

RestoreObjectRequest restoreObjectRequest = new RestoreObjectRequest(bucketName, objectKey);
RestoreObjectRequest restoreObjectRequest2 = new RestoreObjectRequest(bucketName, objectKey, 77);
RestoreObjectResult restoreObjectResult = s3.restoreObjectV2(restoreObjectRequest);

GetRequestPaymentConfigurationRequest getRequestPaymentConfigurationRequest =
new GetRequestPaymentConfigurationRequest(bucketName);

SetBucketPolicyRequest setBucketPolicyRequest = new SetBucketPolicyRequest(bucketName, "policyText");

List<Tag> tags = new ArrayList<>();
GetObjectTaggingResult getObjectTaggingResult = new GetObjectTaggingResult(tags);

SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest =
new SetBucketVersioningConfigurationRequest(bucketName, new BucketVersioningConfiguration());
s3.setBucketVersioningConfiguration(setBucketVersioningConfigurationRequest);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.ObjectTagging;
import com.amazonaws.services.s3.model.PutObjectRequest;
Expand All @@ -36,9 +37,11 @@ public class S3Streaming {

AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

void getObject(String bucket, String key) throws Exception {
void getObject(String bucket, String key, File file) throws Exception {
S3Object s3Object = s3.getObject(bucket, key);
s3Object.getObjectContent().close();

s3.getObject(new GetObjectRequest(bucket, key), file);
}

void putObject_bucketKeyContent(String bucket, String key, String content) {
Expand Down
Loading
Loading