我尝试使用Apache Libcloud
(Web)并阅读Documentation如何将其与Amazon EC2一起使用我在开头就坚持了一步。
在这一步:
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")
您需要传递临时访问数据并告诉您阅读Amazon Documentation,但我也阅读了文档,但我并不清楚我必须做些什么才能获得我的时态凭据
在文档中说您可以与AWS STS API
进行交互以连接到终端,但我不了解您如何获得凭据。此外,在Libcloud Web的例子中,他们使用个人凭证:
ACCESS_ID = 'your access id'
SECRET_KEY = 'your secret key'
所以我有点迷失了。如何获取我的临时凭证以在我的代码中使用它?
谢谢和问候。
答案 0 :(得分:1)
如果此代码未在EC2实例上运行,我建议您使用静态凭据:
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")
创建访问凭据:
如果需要,请展开“访问密钥”部分,然后执行以下任一操作:
选择“创建访问密钥”,然后选择“下载凭据”以将访问密钥ID和秘密访问密钥保存到计算机上的CSV文件中。将文件存储在安全的位置。关闭此对话框后,您将无法再次访问秘密访问密钥。下载CSV文件后,选择关闭。
如果要从EC2计算机运行代码,可以通过在STS服务https://boto3.readthedocs.io/en/latest/guide/quickstart.html上调用assume_role()来使用AWS SDK for Python https://boto3.readthedocs.io/en/latest/reference/services/sts.html假定IAM角色来获取临时凭证。 / p>
答案 1 :(得分:1)
@ Aker666从我在网上发现的信息来看,仍然希望您使用常规的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)
希望这对任何人都有帮助。