当前位置: 首页 > 面试题库 >

IAM角色的bo​​to问题

狄海
2023-03-14
问题内容

我正在尝试使用AWS最近宣布的“
EC2的IAM角色”功能,该功能可让安全凭证自动传递到EC2实例。(请参阅http://aws.amazon.com/about-aws/whats-
new/2012/06/11/Announcing-IAM-Roles-for-
EC2-instances/
)。

如上所述,我已经设置了一个具有IAM角色的实例。我还可以通过curl获得(貌似)正确的访问密钥/凭据。

但是,即使我已为该角色打开了ALL S3权限,boto也无法执行“ get_all_buckets”之类的简单调用。

我收到的错误是“您提供的AWS Access Key ID在我们的记录中不存在”

但是,错误中列出的访问密钥与我从curl获得的访问密钥相匹配。

以下是失败的脚本,该脚本在附加了IAM角色且具有所有S3权限的EC2实例上运行:

import urllib2
import ast
from boto.s3.connection import S3Connection

resp=urllib2.urlopen('http://169.254.169.254/latest/meta-data/iam/security-credentials/DatabaseApp').read()
resp=ast.literal_eval(resp)
print "access:" + resp['AccessKeyId']
print "secret:" + resp['SecretAccessKey']
conn = S3Connection(resp['AccessKeyId'], resp['SecretAccessKey'])
rs= conn.get_all_buckets()

问题答案:

如果您使用的是boto
2.5.1或更高版本,实际上比这要容易得多。只要在环境变量或boto配置文件中找不到其他凭据,Boto就会自动为您在实例元数据中找到凭据并使用它们。因此,您应该能够简单地在EC2实例上执行此操作:

>>> import boto
>>> c = boto.connect_s3()
>>> rs = c.get_all_buckets()

手动方法失败的原因是,与IAM角色关联的凭据是一个临时会话凭据,并且由access_key,asecret_key和a组成security_token,您需要将所有这三个值提供给S3Connection构造函数。



 类似资料:
  • 我正尝试使用IAM角色从spark读取s3桶中的csv文件,但在上获得 我安装了没有hadoop的Spark 2.4.4,安装了hadoop 3.2.1以及hadoop-aws-3.2.1.jar和aws-java-sdk-1.11.655.jar。我必须安装一个没有hadoop的spark版本,因为作为spark构建一部分的hadoop jars是来自2016年的2.7.3版本。 附加到角色的“

  • 我想知道PySpark是否支持使用IAM角色进行S3访问。具体来说,我有一个业务限制,我必须承担AWS角色才能访问给定的存储桶。使用boto时可以这样做(因为它是API的一部分),但我无法找到关于PySpark是否支持开箱即用的明确答案。 理想情况下,我希望能够在本地以独立模式运行时扮演一个角色,并将我的SparkContext指向该s3路径。我发现非IAM呼叫通常会随之而来: 是否存在提供IAM

  • 我使用这个脚本来填充dynamo db:https://docs . AWS . Amazon . com/Amazon DynamoDB/latest/developer guide/loaddataphp . html 我在使用AWS SDK时遇到了这个错误: PHP致命错误:未捕获的异常“Aws\exception\CredentialsException”,消息为“无法从/root/读取凭

  • null 根据AWS文档,您应该始终为EC2创建角色,并根据您的需求为角色分配策略。 向一个角色授予多个服务访问权限是否存在安全问题?我问这个问题的原因是,使用EC2元数据,您可以在此时使用该角色获得分配给EC2实例的accesskey信息。EC2经常刷新密钥。 任何反馈或输入。

  • 场景:我在同一个帐户下有一个EC2实例和一个S3 bucket,我在该EC2上的web应用程序希望访问该bucket中的资源。 在官方文档之后,我使用创建了一个IAM角色,并将其分配给EC2实例。根据我的理解,现在我的web应用程序应该可以访问桶。但是,经过试验,我似乎必须添加桶策略,如下所示: 否则我就被禁止进入。 但是,既然我已经向EC2实例授予了IAM角色,为什么还要使用这个桶策略呢?

  • 我已经启动了一个具有IAM角色“WebApp”的EC2实例。角色已附加,我可以使用 webapp角色具有S3的附加策略 我也需要更改bucket权限吗?或者我在Conf上做错了什么。EC2的?