Python 如何在AWS上创建临时安全凭据
我正在尝试使用ApacheLibCloud,并阅读了如何将其与AmazonEC2结合使用的指南。我在开始时还停留在一个步骤上 关于这一步骤:Python 如何在AWS上创建临时安全凭据,python,amazon-web-services,amazon-ec2,libcloud,Python,Amazon Web Services,Amazon Ec2,Libcloud,我正在尝试使用ApacheLibCloud,并阅读了如何将其与AmazonEC2结合使用的指南。我在开始时还停留在一个步骤上 关于这一步骤: from libcloud.compute.types import Provider from libcloud.compute.providers import get_driver cls = get_driver(Provider.EC2) driver = cls('temporary access key', 'temporary secre
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
cls = get_driver(Provider.EC2)
driver = cls('temporary access key', 'temporary secret key',
token='temporary session token', region="us-west-1")
您需要传递临时访问数据,并告诉您阅读,但我也阅读了文档,我不太清楚要获得临时凭据必须做什么
在文档上说您可以与AWS STS API交互以连接到端点,但我不明白您如何获得凭据。此外,在Libcloud Web示例中,他们使用个人凭据:
ACCESS_ID = 'your access id'
SECRET_KEY = 'your secret key'
ACCESS_ID = 'your access id'
SECRET_KEY = 'your secret key'
cls = get_driver(Provider.EC2)
driver = cls(ACCESS_ID, SECRET_KEY, region="us-west-1")
所以我有点迷路了。如何获取临时凭据以在代码中使用它
感谢和问候。如果此代码未在EC2实例上运行,我建议您使用静态凭据:
ACCESS_ID = 'your access id'
SECRET_KEY = 'your secret key'
ACCESS_ID = 'your access id'
SECRET_KEY = 'your secret key'
cls = get_driver(Provider.EC2)
driver = cls(ACCESS_ID, SECRET_KEY, region="us-west-1")
要创建访问凭据,请执行以下操作:
ACCESS_ID = 'your access id'
SECRET_KEY = 'your secret key'
ACCESS_ID = 'your access id'
SECRET_KEY = 'your secret key'
cls = get_driver(Provider.EC2)
driver = cls(ACCESS_ID, SECRET_KEY, region="us-west-1")
登录到位于的身份和访问管理IAM控制台。
在导航窗格中,选择用户。
选择所需用户的名称,然后选择安全凭据选项卡。
如果需要,展开“访问密钥”部分并执行以下任一操作:
选择“创建访问密钥”,然后选择“下载凭据”,将访问密钥ID和机密访问密钥保存到计算机上的CSV文件中。将文件存储在安全位置。关闭此对话框后,您将无法再次访问密钥。下载CSV文件后,选择“关闭”
如果你想从EC2机器上运行你的代码,你可以通过使用AWS SDK for Python通过调用STS服务上的Associate_role来获得临时凭证,我在web上找到了,你仍然需要使用常规的AWS api来获得这些信息 适用于我的基本代码片段是:
import boto3
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
boto3.setup_default_session(aws_access_key_id='somekey',aws_secret_access_key='somesecret',region_name="eu-west-1")
sts_client = boto3.client('sts')
assumed_role_object = sts_client.assume_role(
RoleArn="arn:aws:iam::701********:role/iTerm_RO_from_TGT",
RoleSessionName='update-cloud-hosts.aviadraviv@Aviads-MacBook-Pro.local'
)
cls = get_driver(Provider.EC2)
driver = cls(assumed_role_object['Credentials']['AccessKeyId'], assumed_role_object['Credentials']['SecretAccessKey'],
token=assumed_role_object['Credentials']['SessionToken'], region="eu-west-1")
nodes = driver.list_nodes()
print(nodes)
希望这对任何人都有帮助。非常感谢。现在我明白我必须怎么做了!你好@aviad raviv,谢谢你的最新答案。我也希望这能帮助别人。