Skip to content

Commit 274a30e

Browse files
author
Mehakmeet Singh
committed
HADOOP-13887. review comments
1 parent e3d5922 commit 274a30e

26 files changed

+148
-143
lines changed

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/Constants.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ private Constants() {
426426
*
427427
* {@value}
428428
*/
429-
public static final String S3_ENCRYPTION_ALGORITHM =
429+
public static final String SERVER_SIDE_ENCRYPTION_ALGORITHM =
430430
"fs.s3a.server-side-encryption-algorithm";
431431

432432
/**
@@ -442,14 +442,14 @@ private Constants() {
442442

443443
/**
444444
* Used to specify which AWS KMS key to use if
445-
* {@link #S3_ENCRYPTION_ALGORITHM} is
445+
* {@link #SERVER_SIDE_ENCRYPTION_ALGORITHM} is
446446
* {@code SSE-KMS} (will default to aws/s3
447447
* master key if left blank).
448448
* With with {@code SSE_C}, the base-64 encoded AES 256 key.
449449
* May be set within a JCEKS file.
450450
* Value: "{@value}".
451451
*/
452-
public static final String S3_ENCRYPTION_KEY =
452+
public static final String SERVER_SIDE_ENCRYPTION_KEY =
453453
"fs.s3a.server-side-encryption.key";
454454

455455
/**

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/DefaultS3ClientFactory.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@
5858
import static org.apache.hadoop.fs.s3a.Constants.AWS_S3_CENTRAL_REGION;
5959
import static org.apache.hadoop.fs.s3a.Constants.EXPERIMENTAL_AWS_INTERNAL_THROTTLING;
6060
import static org.apache.hadoop.fs.s3a.Constants.EXPERIMENTAL_AWS_INTERNAL_THROTTLING_DEFAULT;
61-
import static org.apache.hadoop.fs.s3a.Constants.S3_ENCRYPTION_ALGORITHM;
62-
import static org.apache.hadoop.fs.s3a.Constants.S3_ENCRYPTION_KEY;
61+
import static org.apache.hadoop.fs.s3a.Constants.SERVER_SIDE_ENCRYPTION_ALGORITHM;
62+
import static org.apache.hadoop.fs.s3a.Constants.SERVER_SIDE_ENCRYPTION_KEY;
6363
import static org.apache.hadoop.fs.s3a.S3AUtils.translateException;
6464

6565
/**
@@ -125,7 +125,7 @@ public AmazonS3 createS3Client(
125125

126126
try {
127127
if (S3AEncryptionMethods.getMethod(S3AUtils.
128-
lookupPassword(conf, S3_ENCRYPTION_ALGORITHM, null))
128+
lookupPassword(conf, SERVER_SIDE_ENCRYPTION_ALGORITHM, null))
129129
.equals(S3AEncryptionMethods.CSE_KMS)) {
130130
return buildAmazonS3EncryptionClient(
131131
awsConf,
@@ -149,6 +149,7 @@ public AmazonS3 createS3Client(
149149
* @param parameters parameters.
150150
*
151151
* @return new AmazonS3 client.
152+
* @throws IOException if lookupPassword() has any problem.
152153
*/
153154
protected AmazonS3 buildAmazonS3EncryptionClient(
154155
final ClientConfiguration awsConf,
@@ -161,10 +162,10 @@ protected AmazonS3 buildAmazonS3EncryptionClient(
161162

162163
//CSE-KMS Method
163164
String kmsKeyId = S3AUtils.lookupPassword(conf,
164-
S3_ENCRYPTION_KEY, null);
165+
SERVER_SIDE_ENCRYPTION_KEY, null);
165166
// Check if kmsKeyID is not null
166167
Preconditions.checkArgument(kmsKeyId != null, "CSE-KMS method "
167-
+ "requires KMS key ID. Use " + S3_ENCRYPTION_KEY
168+
+ "requires KMS key ID. Use " + SERVER_SIDE_ENCRYPTION_KEY
168169
+ " property to set it. ");
169170

170171
EncryptionMaterialsProvider materialsProvider =

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ABlockOutputStream.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,8 @@ public synchronized void write(byte[] source, int offset, int len)
329329
* @param isLast true, if part being uploaded is last and client side
330330
* encryption is enabled.
331331
* @throws IOException Problems opening the destination for upload,
332-
* initializing the upload, or if a previous operation has failed.
332+
* initializing the upload, or if a previous operation
333+
* has failed.
333334
*/
334335
private synchronized void uploadCurrentBlock(boolean isLast)
335336
throws IOException {

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ public void initialize(URI name, Configuration originalConf)
428428
initializeStatisticsBinding();
429429
// If CSE-KMS method is set then CSE is enabled.
430430
isCSEEnabled = S3AUtils.lookupPassword(conf,
431-
S3_ENCRYPTION_ALGORITHM, null) != null;
431+
SERVER_SIDE_ENCRYPTION_ALGORITHM, null) != null;
432432
LOG.debug("Client Side Encryption enabled: {}", isCSEEnabled);
433433
setCSEGauge();
434434
// Username is the current user at the time the FS was instantiated.

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AUtils.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,14 +125,14 @@ public final class S3AUtils {
125125
public static final String SSE_C_NO_KEY_ERROR =
126126
S3AEncryptionMethods.SSE_C.getMethod()
127127
+ " is enabled but no encryption key was declared in "
128-
+ S3_ENCRYPTION_KEY;
128+
+ SERVER_SIDE_ENCRYPTION_KEY;
129129
/**
130130
* Encryption SSE-S3 is used but the caller also set an encryption key.
131131
*/
132132
public static final String SSE_S3_WITH_KEY_ERROR =
133133
S3AEncryptionMethods.SSE_S3.getMethod()
134134
+ " is enabled but an encryption key was set in "
135-
+ S3_ENCRYPTION_KEY;
135+
+ SERVER_SIDE_ENCRYPTION_KEY;
136136
private static final String EOF_MESSAGE_IN_XML_PARSER
137137
= "Failed to sanitize XML document destined for handler class";
138138

@@ -518,6 +518,7 @@ public static String stringify(AmazonS3Exception e) {
518518
* @param owner owner of the file
519519
* @param eTag S3 object eTag or null if unavailable
520520
* @param versionId S3 object versionId or null if unavailable
521+
* @param isCSEEnabled is client side encryption enabled?
521522
* @return a status entry
522523
*/
523524
public static S3AFileStatus createFileStatus(Path keyPath,
@@ -1576,9 +1577,9 @@ static void patchSecurityCredentialProviders(Configuration conf) {
15761577
public static String getS3EncryptionKey(String bucket,
15771578
Configuration conf) {
15781579
try {
1579-
return lookupPassword(bucket, conf, S3_ENCRYPTION_KEY);
1580+
return lookupPassword(bucket, conf, SERVER_SIDE_ENCRYPTION_KEY);
15801581
} catch (IOException e) {
1581-
LOG.error("Cannot retrieve " + S3_ENCRYPTION_KEY, e);
1582+
LOG.error("Cannot retrieve " + SERVER_SIDE_ENCRYPTION_KEY, e);
15821583
return "";
15831584
}
15841585
}
@@ -1598,7 +1599,7 @@ public static S3AEncryptionMethods getEncryptionAlgorithm(String bucket,
15981599
Configuration conf) throws IOException {
15991600
S3AEncryptionMethods encryptionMethod = S3AEncryptionMethods.getMethod(
16001601
lookupPassword(bucket, conf,
1601-
S3_ENCRYPTION_ALGORITHM));
1602+
SERVER_SIDE_ENCRYPTION_ALGORITHM));
16021603
String encryptionKey = getS3EncryptionKey(bucket, conf);
16031604
int encryptionKeyLen =
16041605
StringUtils.isBlank(encryptionKey) ? 0 : encryptionKey.length();

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/S3GuardTool.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1348,7 +1348,7 @@ public int run(String[] args, PrintStream out)
13481348
ENDPOINT,
13491349
StringUtils.isNotEmpty(endpoint) ? endpoint : "(unset)");
13501350
String encryption =
1351-
printOption(out, "\tEncryption", S3_ENCRYPTION_ALGORITHM,
1351+
printOption(out, "\tEncryption", SERVER_SIDE_ENCRYPTION_ALGORITHM,
13521352
"none");
13531353
printOption(out, "\tInput seek policy", INPUT_FADVISE, INPUT_FADV_NORMAL);
13541354
printOption(out, "\tChange Detection Source", CHANGE_DETECT_SOURCE,

hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/encryption.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ to encrypt the data as it saved to S3. It remains encrypted on S3 until deleted:
6060
clients cannot change the encryption attributes of an object once uploaded.
6161

6262
The Amazon AWS SDK also offers client-side encryption, in which all the encoding
63-
and decoding of data is performed on the client.
63+
and decoding of data is performed on the client.
6464

6565
The server-side "SSE" encryption is performed with symmetric AES256 encryption;
6666
S3 offers different mechanisms for actually defining the key to use.
@@ -113,7 +113,7 @@ This encrypts the data on the client, before transmitting to S3, where it is
113113
stored encrypted. The data is unencrypted after downloading when it is being
114114
read back.
115115

116-
In CSE-KMS, the ID of an AWS-KMS key is provided to the S3A client;
116+
In CSE-KMS, the ID of an AWS-KMS key is provided to the S3A client;
117117
the client communicates with AWS-KMS to request a new encryption key, which
118118
KMS returns along with the same key encrypted with the KMS key.
119119
The S3 client encrypts the payload *and* attaches the KMS-encrypted version
@@ -508,7 +508,7 @@ Analysis
508508
1. The WARN commands are the AWS SDK warning that because the S3A client uses
509509
an encryption algorithm which seek() requires, the SDK considers it less
510510
secure than the most recent algorithm(s). Ignore.
511-
511+
512512
* `header.x-amz-server-side-encryption="AES256"` : the file has been encrypted with S3-SSE. This is set up as the S3 default encryption,
513513
so even when CSE is enabled, the data is doubly encrypted.
514514
* `header.x-amz-cek-alg="AES/GCM/NoPadding`: client-side encrypted with the `"AES/GCM/NoPadding` algorithm.
@@ -569,11 +569,11 @@ Use `distCp`for this, with per-bucket encryption policies.
569569
Amazon S3 Client Side Encryption(S3-CSE), is used to encrypt data on the
570570
client-side and then transmit it over to S3 storage. The same encrypted data
571571
is then transmitted over to client while reading and then
572-
decrypted on the client-side.
572+
decrypted on the client-side.
573573

574574
S3-CSE, uses `AmazonS3EncryptionClientV2.java` as the AmazonS3 client. The
575575
encryption and decryption is done by AWS SDK. As of July 2021, Only CSE-KMS
576-
method is supported.
576+
method is supported.
577577

578578
A key reason this feature (HADOOP-13887) has been unavailable for a long time
579579
is that the AWS S3 client pads uploaded objects with a 16 byte footer. This
@@ -585,7 +585,7 @@ footer, as ORC and Parquet do.
585585
There is now a workaround: compensate for the footer in listings when CSE is enabled.
586586

587587
- When listing files and directories, 16 bytes are subtracted from the length
588-
of all non-empty objects( greater than or equal to 16 bytes).
588+
of all non-empty objects( greater than or equal to 16 bytes).
589589
- Directory markers MAY be longer than 0 bytes long.
590590

591591
This "appears" to work; secondly it does in the testing as of July 2021. However
@@ -605,11 +605,11 @@ clients where S3-CSE has not been enabled.
605605
client.
606606
- Writing files may be slower, as only a single block can be encrypted and
607607
uploaded at a time.
608-
- Multipart Uploader API disabled.
608+
- Multipart Uploader API disabled.
609609
- S3 Select is not supported.
610610
- Multipart uploads would be serial, and partSize must be a multiple of 16
611611
bytes.
612-
- maximum message size in bytes that can be encrypted under this mode is
612+
- maximum message size in bytes that can be encrypted under this mode is
613613
2^36-32, or ~64G, due to the security limitation of AES/GCM as recommended by
614614
NIST.
615615

@@ -625,15 +625,15 @@ KMS_KEY_ID:
625625
Identifies the symmetric CMK that encrypts the data key.
626626
To specify a CMK, use its key ID, key ARN, alias name, or alias ARN. When
627627
using an alias name, prefix it with "alias/". To specify a CMK in a
628-
different AWSaccount, you must use the key ARN or alias ARN.
628+
different AWS account, you must use the key ARN or alias ARN.
629629

630630
For example:
631-
- Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
632-
- Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
633-
- Alias name: alias/ExampleAlias
634-
- Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
631+
- Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
632+
- Key ARN: `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
633+
- Alias name: `alias/ExampleAlias`
634+
- Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
635635

636-
*Note:* If `fs.s3a.server-side-encryption-algorithm=CSE-KMS` is set,
636+
*Note:* If `fs.s3a.server-side-encryption-algorithm=CSE-KMS` is set,
637637
`fs.s3a.server-side-encryption.key=<KMS_KEY_ID>` property must be set for
638638
S3-CSE to work.
639639

hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/troubleshooting_s3a.md

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,7 +1161,7 @@ file using configured SSE-C keyB into that structure.
11611161

11621162
### Instruction file not found for S3 object
11631163

1164-
Reading an unencrypted file would fail when read through CSE enabled client.
1164+
Reading an unencrypted file would fail when read through CSE enabled client.
11651165
```
11661166
java.lang.SecurityException: Instruction file not found for S3 object with bucket name: ap-south-cse, key: unencryptedData.txt
11671167
at com.amazonaws.services.s3.internal.crypto.v2.S3CryptoModuleAE.decipher(S3CryptoModuleAE.java:190)
@@ -1199,13 +1199,13 @@ java.lang.SecurityException: Instruction file not found for S3 object with bucke
11991199
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:95)
12001200
at org.apache.hadoop.fs.FsShell.main(FsShell.java:390)
12011201
```
1202-
CSE enabled client should read encrypted data only.
1202+
CSE enabled client should read encrypted data only.
12031203

1204-
### CSE-KMS method requires KMS key ID
1204+
### CSE-KMS method requires KMS key ID
12051205

12061206
KMS key ID is required for CSE-KMS to encrypt data, not providing one leads
1207-
to failure.
1208-
1207+
to failure.
1208+
12091209
```
12101210
2021-07-07 11:33:04,550 WARN fs.FileSystem: Failed to initialize fileystem
12111211
s3a://ap-south-cse/: java.lang.IllegalArgumentException: CSE-KMS
@@ -1214,7 +1214,7 @@ method requires KMS key ID. Use fs.s3a.server-side-encryption.key property to se
12141214
set it.
12151215
```
12161216

1217-
set `fs.s3a.server-side-encryption.key=<KMS_KEY_ID>` generated through AWS console.
1217+
set `fs.s3a.server-side-encryption.key=<KMS_KEY_ID>` generated through AWS console.
12181218

12191219
### `com.amazonaws.services.kms.model.IncorrectKeyException` The key ID in the request does not identify a CMK that can perform this operation.
12201220

@@ -1231,7 +1231,7 @@ The key ID in the request does not identify a CMK that can perform this
12311231
operation. (Service: AWSKMS ; Status Code: 400; Error Code: IncorrectKeyException;
12321232
Request ID: da21aa8a-f00d-467c-94a0-32b627d32bc0; Proxy: null)
12331233
```
1234-
Use the same KMS key ID used to upload data to download and read it as well.
1234+
Use the same KMS key ID used to upload data to download and read it as well.
12351235

12361236
### `com.amazonaws.services.kms.model.NotFoundException` key/<KMS_KEY_ID> does not exist
12371237

@@ -1249,8 +1249,8 @@ does not exist(Service: AWSKMS; Status Code: 400; Error Code: NotFoundException;
12491249
Request ID: 279db85d-864d-4a38-9acd-d892adb504c0; Proxy: null)
12501250
```
12511251
While generating the KMS Key ID make sure to generate it in the same region
1252-
as your bucket.
1253-
1252+
as your bucket.
1253+
12541254
### Unable to perform range get request: Range get support has been disabled
12551255

12561256
If Range get is not supported for a CSE algorithm or is disabled:
@@ -1276,7 +1276,7 @@ java.lang.SecurityException: Unable to perform range get request: Range get supp
12761276
at org.apache.hadoop.fs.s3a.S3AInputStream.read(S3AInputStream.java:408)
12771277
at java.io.DataInputStream.readByte(DataInputStream.java:265)
12781278
```
1279-
Range gets msut be enabled for CSE to work.
1279+
Range gets must be enabled for CSE to work.
12801280

12811281
### WARNING: Range gets do not provide authenticated encryption properties even when used with an authenticated mode (AES-GCM).
12821282

@@ -1297,7 +1297,7 @@ get data.
12971297

12981298
The S3 Encryption Client is configured to read encrypted data with legacy
12991299
encryption modes through the CryptoMode setting, and we would see this
1300-
warning for all S3-CSE request.
1300+
warning for all S3-CSE request.
13011301

13021302
```
13031303
2021-07-14 12:54:09,519 [main] WARN s3.AmazonS3EncryptionClientV2
@@ -1307,16 +1307,18 @@ encryption modes through the CryptoMode setting. If you don't have objects
13071307
encrypted with these legacy modes, you should disable support for them to
13081308
enhance security. See https://docs.aws.amazon.com/general/latest/gr/aws_sdk_cryptography.html
13091309
```
1310-
We can ignore this, since this CryptoMode setting(CryptoMode.AuthenticatedEncryption)
1311-
is required for range gets to work.
1310+
We can ignore this, since this CryptoMode setting(CryptoMode.AuthenticatedEncryption)
1311+
is required for range gets to work.
13121312

13131313
### com.amazonaws.services.kms.model.InvalidKeyUsageException: You cannot generate a data key with an asymmetric CMK
13141314

13151315
If you generated an Asymmetric CMK from AWS console then CSE-KMS won't be
1316-
able to generate unique data key for encryption.
1316+
able to generate unique data key for encryption.
13171317

13181318
```
1319-
Caused by: com.amazonaws.services.kms.model.InvalidKeyUsageException: You cannot generate a data key with an asymmetric CMK (Service: AWSKMS; Status Code: 400; Error Code: InvalidKeyUsageException; Request ID: 93609c15-e490-4035-8390-f4396f0d90bf; Proxy: null)
1319+
Caused by: com.amazonaws.services.kms.model.InvalidKeyUsageException:
1320+
You cannot generate a data key with an asymmetric CMK
1321+
(Service: AWSKMS; Status Code: 400; Error Code: InvalidKeyUsageException; Request ID: 93609c15-e490-4035-8390-f4396f0d90bf; Proxy: null)
13201322
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1819)
13211323
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1403)
13221324
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1372)
@@ -1348,15 +1350,16 @@ Caused by: com.amazonaws.services.kms.model.InvalidKeyUsageException: You cannot
13481350
```
13491351

13501352
Generate a Symmetric Key in the same region as your S3 storage for CSE-KMS to
1351-
work.
1353+
work.
13521354

13531355
### com.amazonaws.services.kms.model.NotFoundException: Invalid keyId
13541356

13551357
If the value in `fs.s3a.server-side-encryption.key` property, does not exist
13561358
/valid in AWS KMS CMK(Customer managed keys), then this error would be seen.
13571359

13581360
```
1359-
Caused by: com.amazonaws.services.kms.model.NotFoundException: Invalid keyId abc (Service: AWSKMS; Status Code: 400; Error Code: NotFoundException; Request ID: 9d53552a-3d1b-47c8-984c-9a599d5c2391; Proxy: null)
1361+
Caused by: com.amazonaws.services.kms.model.NotFoundException: Invalid keyId abc
1362+
(Service: AWSKMS; Status Code: 400; Error Code: NotFoundException; Request ID: 9d53552a-3d1b-47c8-984c-9a599d5c2391; Proxy: null)
13601363
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1819)
13611364
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1403)
13621365
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1372)
@@ -1392,12 +1395,11 @@ same on AWS console.
13921395

13931396
### com.amazonaws.services.kms.model.AWSKMSException: User: <User_ARN> is not authorized to perform : kms :GenerateDataKey on resource: <KEY_ID>
13941397

1395-
User doesn't have authorisation to the specific AWS KMS Key ID.
1398+
User doesn't have authorization to the specific AWS KMS Key ID.
13961399
```
1397-
Caused by: com.amazonaws.services.kms.model.AWSKMSException: User: arn:aws
1398-
:iam::152813717728:user/<user> is not authorized to perform: kms
1399-
:GenerateDataKey on resource: <key_ID> (Service: AWSKMS; Status Code: 400
1400-
; Error Code: AccessDeniedException; Request ID: 4ded9f1f-b245-4213-87fc-16cba7a1c4b9; Proxy: null)
1400+
Caused by: com.amazonaws.services.kms.model.AWSKMSException:
1401+
User: arn:aws:iam::152813717728:user/<user> is not authorized to perform: kms:GenerateDataKey on resource: <key_ID>
1402+
(Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: 4ded9f1f-b245-4213-87fc-16cba7a1c4b9; Proxy: null)
14011403
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1819)
14021404
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1403)
14031405
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1372)
@@ -1431,8 +1433,8 @@ Caused by: com.amazonaws.services.kms.model.AWSKMSException: User: arn:aws
14311433
The user trying to use the KMS Key ID should have the right permissions to access
14321434
(encrypt/decrypt) using the AWS KMS Key used via `fs.s3a.server-side-encryption.key`.
14331435
If not, then add permission(or IAM role) in "Key users" section by selecting the
1434-
AWS-KMS CMK Key on AWS console.
1435-
1436+
AWS-KMS CMK Key on AWS console.
1437+
14361438
### <a name="not_all_bytes_were_read"></a> Message appears in logs "Not all bytes were read from the S3ObjectInputStream"
14371439

14381440

0 commit comments

Comments
 (0)