Hadoop S3A access connects Hadoop filesystem commands and jobs to Amazon S3 through the hadoop-aws module. A missing connector JAR, mismatched Hadoop version, or unsafe credential placement usually appears as a classpath or authentication failure.
Hadoop 3.5 uses AWS SDK v2 through the shaded bundle JAR. Keep hadoop-aws at the same version as hadoop-common and place the AWS SDK bundle on the client and job classpaths before testing s3a:// URIs.
Do not put long-lived access keys directly in shared XML files. Prefer instance roles, environment credentials, or a Hadoop credential provider that keeps secrets outside readable configuration files.
Related: How to copy data with Hadoop DistCp
Related: How to enable Kerberos for Hadoop
$ hadoop version Hadoop 3.5.0 Source code repository https://github.com/apache/hadoop -r 000000000000
hadoop_add_to_classpath_tools hadoop-aws
$ hadoop classpath --glob /opt/hadoop/share/hadoop/tools/lib/hadoop-aws-3.5.0.jar /opt/hadoop/share/hadoop/common/lib/bundle-2.35.4.jar ##### snipped #####
<property> <name>fs.s3a.aws.credentials.provider</name> <value>org.apache.hadoop.fs.s3a.auth.IAMInstanceCredentialsProvider</value> </property>
<property> <name>fs.s3a.endpoint.region</name> <value>us-east-1</value> </property>
$ hadoop fs -ls s3a://data-lake-example/raw/ Found 2 items drwxrwx--- s3a://data-lake-example/raw/events drwxrwx--- s3a://data-lake-example/raw/reference
$ hadoop fs -touchz s3a://data-lake-example/tmp/hadoop-s3a-check
Use a dedicated temporary prefix and sanitize bucket names in saved transcripts.