Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在AWS上创建临时安全凭据_Python_Amazon Web Services_Amazon Ec2_Libcloud - Fatal编程技术网

Python 如何在AWS上创建临时安全凭据

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

我正在尝试使用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 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,谢谢你的最新答案。我也希望这能帮助别人。