为了将文件从HDFS复制到S3桶,我使用了以下命令
hadoop distcp -Dfs.s3a.access.key=ACCESS_KEY_HERE\
-Dfs.s3a.secret.key=SECRET_KEY_HERE /path/in/hdfs s3a:/BUCKET NAME但是访问密钥和安全密钥在这里是可见的,这是不安全的。是否有任何方法从文件中提供凭据。我不想编辑配置文件,这是我遇到的方法之一。
发布于 2017-12-06 10:26:30
最近(2.8+)版本允许您将凭据隐藏在jceks文件中;在Hadoop s3页面上有一些文档。这样:根本不需要在命令行上放置任何秘密;只需跨集群共享它们,然后在distcp命令中将hadoop.security.credential.provider.path设置为路径,就像jceks://hdfs@nn1.example.com:9001/user/backup/s3.jceks一样。
扇:如果您在EC2中运行,则应该从默认的凭据提供程序链中自动获取IAM角色凭据:在查找配置选项& env之后,它将尝试获取EC2 http端点,该端点提供会话凭据。如果没有发生这种情况,请确保com.amazonaws.auth.InstanceProfileCredentialsProvider在凭据提供者列表中。它比其他的要慢一点(而且可以节流),所以最好靠近终点。
发布于 2017-12-01 07:13:33
我也面临着同样的情况,并且在获得了matadata实例的临时凭据之后。(如果您使用的是IAM用户证书,请注意这里提到的临时凭据是IAM角色,它附加到EC2服务器而不是人工服务器,请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)
我发现仅指定hadoop distcp cmd中的凭据无效。您还必须指定一个配置fs.s3a.aws.credentials.provider。(参见http://hortonworks.github.io/hdp-aws/s3-security/index.html#using-temporary-session-credentials)
最后的命令如下所示
hadoop distcp -Dfs.s3a.aws.credentials.provider="org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" -Dfs.s3a.access.key="{AccessKeyId}" -Dfs.s3a.secret.key="{SecretAccessKey}" -Dfs.s3a.session.token="{SessionToken}" s3a://bucket/prefix/file /path/on/hdfs发布于 2016-07-22 12:25:05
亚马逊允许生成可以从http://169.254.169.254/latest/meta-data/iam/security-credentials/检索的临时凭据。
你可以读从那里开始
实例上的应用程序从实例元数据项iam/ security -凭据/角色名称中检索角色提供的安全凭据。应用程序被授予通过与角色关联的安全凭据为角色定义的操作和资源的权限。这些安全凭据是临时的,我们会自动旋转它们。我们至少在旧凭据到期前五分钟提供新的凭据。
以下命令检索名为s3access的IAM角色的安全凭据。
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access下面是示例输出。
{
"Code" : "Success",
"LastUpdated" : "2012-04-26T16:39:16Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"Token" : "token",
"Expiration" : "2012-04-27T22:39:16Z"
}对于运行在实例上的应用程序、AWS和Windows命令,您不必显式地获取临时安全凭据-- AWS、AWS和PowerShell工具--它们会自动从EC2实例元数据服务中获取凭据并使用它们。若要使用临时安全凭据(例如,测试IAM策略)在实例外部进行调用,必须提供访问密钥、秘密密钥和会话令牌。有关更多信息,请参见IAM用户指南中的使用临时安全凭据请求对AWS资源的访问。
https://stackoverflow.com/questions/38525938
复制相似问题