首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hdfs到s3远程访问密钥

Hdfs到s3远程访问密钥
EN

Stack Overflow用户
提问于 2016-07-22 12:01:50
回答 5查看 8.2K关注 0票数 4

为了将文件从HDFS复制到S3桶,我使用了以下命令

代码语言:javascript
复制
hadoop distcp -Dfs.s3a.access.key=ACCESS_KEY_HERE\
-Dfs.s3a.secret.key=SECRET_KEY_HERE /path/in/hdfs s3a:/BUCKET NAME

但是访问密钥和安全密钥在这里是可见的,这是不安全的。是否有任何方法从文件中提供凭据。我不想编辑配置文件,这是我遇到的方法之一。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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在凭据提供者列表中。它比其他的要慢一点(而且可以节流),所以最好靠近终点。

票数 2
EN

Stack Overflow用户

发布于 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)

最后的命令如下所示

代码语言:javascript
复制
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
票数 5
EN

Stack Overflow用户

发布于 2016-07-22 12:25:05

亚马逊允许生成可以从http://169.254.169.254/latest/meta-data/iam/security-credentials/检索的临时凭据。

你可以读从那里开始

实例上的应用程序从实例元数据项iam/ security -凭据/角色名称中检索角色提供的安全凭据。应用程序被授予通过与角色关联的安全凭据为角色定义的操作和资源的权限。这些安全凭据是临时的,我们会自动旋转它们。我们至少在旧凭据到期前五分钟提供新的凭据。

以下命令检索名为s3access的IAM角色的安全凭据。

代码语言:javascript
复制
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access

下面是示例输出。

代码语言:javascript
复制
{
  "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资源的访问

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38525938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档