我有一个scala jar,我正在从AWS胶水工作调用它。我的jar写入将数据帧写入另一个AWS帐户中的S3桶,该帐户已打开KMS加密。我可以写入桶,但我不能添加目标桶所有者访问文件的权限。我可以做到这一点,如果简单地使用胶水作家,但与直火花,它只是不工作。我已经阅读了所有文档,并且正在hadoop配置中设置以下bucket策略。
def writeDataFrameInTargetLocation(sparkcontext:sparkcontext=null,DataFrame:DataFrame,location:String,fileformat:String,savemode:String,encryptionkey:option[String]=option.empty,kms_region:option[String]=option(“us-west-2”)):Unit={
if(encryptionkey.isdefined){val region=if(kms_region.isdefined)kms_region.getorelse(“us-west-2”)else“us-west-2”
sparkContext.hadoopConfiguration.set("fs.s3.enableServerSideEncryption", "false")
sparkContext.hadoopConfiguration.set("fs.s3.cse.enabled", "true")
sparkContext.hadoopConfiguration.set("fs.s3.cse.encryptionMaterialsProvider", "com.amazon.ws.emr.hadoop.fs.cse.KMSEncryptionMaterialsProvider")
sparkContext.hadoopConfiguration.set("fs.s3.cse.kms.keyId", encryptionKey.get) // KMS key to encrypt the data with
sparkContext.hadoopConfiguration.set("fs.s3.cse.kms.region", region) // the region for the KMS key
sparkContext.hadoopConfiguration.set("fs.s3.canned.acl", "BucketOwnerFullControl")
sparkContext.hadoopConfiguration.set("fs.s3.acl.default", "BucketOwnerFullControl")
sparkContext.hadoopConfiguration.set("fs.s3.acl", "bucket-owner-full-control")
sparkContext.hadoopConfiguration.set("fs.s3.acl", "BucketOwnerFullControl")
}
else {
sparkContext.hadoopConfiguration.set("fs.s3.canned.acl", "BucketOwnerFullControl")
sparkContext.hadoopConfiguration.set("fs.s3.acl.default", "BucketOwnerFullControl")
sparkContext.hadoopConfiguration.set("fs.s3.acl", "bucket-owner-full-control")
sparkContext.hadoopConfiguration.set("fs.s3.acl", "BucketOwnerFullControl")
}
val writeDF = dataFrame
.repartition(5)
.write
writeDF
.mode(saveMode)
.option(Header, true)
.format(fileFormat)
.save(location)
}
您可能正在为“s3
”方案(即“s3:/...
”形式的URL)使用S3AFileSystem实现。您可以通过查看sparkcontext.hadoopconfiguration.get(“fs.s3.impl”)
进行检查。如果是这种情况,那么您实际上需要为“fs.s3a.*
”而不是“fs.s3.*
”设置hadoop属性。
则正确的设置为:
sparkContext.hadoopConfiguration.set("fs.s3a.canned.acl", "BucketOwnerFullControl")
sparkContext.hadoopConfiguration.set("fs.s3a.acl.default", "BucketOwnerFullControl")
s3afilesystem
实现没有使用“fs.s3
”下的任何属性。您可以通过调查与以下hadoop源代码链接相关的代码看到:https://github.com/apache/hadoop/blob/43e8ac60971323054753bb0b21e52581f7996ece/hadoop-tools/hadoop-aws/src/main/java.org/apache/hadoop/fs/s3a/constants.java#l268
我有2个AWS帐户。我试图复制文件从帐户1到帐户2在桶2在美国西部2地区。我有所有必要的IAM政策,相同的凭据适用于两个帐户。我使用python boto3库。 如图所示,复制函数在指向目标帐户2/us-west-2的客户端对象上执行。它是如何获取帐户1/us-east1中的源文件的?我应该提供作为复制函数的输入吗?
我有一个aws组织,有几个S3桶和成员帐户。我在其中一个S3 bucket中添加了bucket策略,允许根据aws在下面URL中提供的文档从成员帐户访问它。 但是在登录了特定的会员账号之后,我仍然无法在那里看到S3的bucket。所以请告诉我这里出了什么问题。
我正在尝试使用boto3将文件从一个S3存储桶传输到我的S3存储桶。我使用sts服务来承担访问供应商s3 bucket的角色。我能够连接到供应商bucket并获得bucket的列表。复制到我的存储桶时,我遇到
如果我能知道根本原因是什么就好了。
我已经用AWS创建了一个PREMIUM trail Databricks帐户。我已经用用户访问密钥设置了< code>AWS帐户。 对于配置,请在URL中遵循以下说明(在以下URL中设置存储桶策略如下)。 https://docs.databricks.com/administration-guide/account-settings/aws-storage.html 但是,我得到了如下的错误。
我是新来的aws cli,我花了相当多的时间在留档,但我不知道如何设置权限的文件后,我已经上传他们。所以如果我上传了一个文件: aws s3 cp资产/js/d3-4.3.0。js s3://示例。实例com/assets/js/ 没有设置访问权限,我需要一种方法来设置它们。aws cli中是否有与chmod 644相当的版本? 就这一点而言,有没有办法查看访问权限? 我知道我可以使用标志与但是如