如何在AWS上创建临时安全证书

时间:2016-07-27 12:04:23

标签: python amazon-web-services amazon-ec2 libcloud

我尝试使用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'

所以我有点迷失了。如何获取我的临时凭证以在我的代码中使用它?

谢谢和问候。

2 个答案:

答案 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")

创建访问凭据:

  1. https://console.aws.amazon.com/iam/登录身份和访问管理(IAM)控制台。
  2. 在导航窗格中,选择用户。
  3. 选择所需用户的名称,然后选择Security Credentials选项卡。
  4. 如果需要,请展开“访问密钥”部分,然后执行以下任一操作:

    选择“创建访问密钥”,然后选择“下载凭据”以将访问密钥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)

希望这对任何人都有帮助。