首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用openstacksdk或boto3创建ec2凭证?

如何使用openstacksdk或boto3创建ec2凭证?
EN

Stack Overflow用户
提问于 2021-06-18 16:51:22
回答 1查看 85关注 0票数 0

我需要创建ec2凭据,类似于CLI命令:

应该返回访问权限和密钥的openstack ec2 credentials create

我浏览过https://docs.openstack.org/openstacksdk/latest/user/connection.html文档,只找到了密钥对方法,但它们都是关于公钥/私钥的。

我已经运行了文档,并找到了一个处理秘密的API,但它不是我正在寻找的。

有没有实现或者只是来自OpenStack (Openstack Swift)的REST API方法,我可以自己封装在请求中?

我需要这些凭据才能使用S3存储桶之类的东西。基本上,就是这样:

代码语言:javascript
复制
import boto3

s3 = boto3.resource(
    's3',
    region_name='us-east-1',
    aws_access_key_id=KEY_ID,
    aws_secret_access_key=ACCESS_KEY
)
content="String content to write to a new S3 file"
s3.Object('my-bucket-name', 'newfile.txt').put(Body=content)

所以我寻找的方法应该会返回给我:

access_key (32个字符长度)

密码(32个字符)

可选链接、user_id、trust_id

EN

回答 1

Stack Overflow用户

发布于 2021-09-22 17:50:16

Openstack有一个关于他的Identity API的完整页面。您需要的是Openstack中的凭据,正如您所说的,它需要EC2凭据才能连接到任何使用Swift的S3浏览器。

url是"v3/credentials“,您需要将POST请求与令牌一起发送。

因此,在简历中,您首先要创建令牌(您可以在标题中找到名为X-Subject-Token的令牌,这就是为什么我们使用curl的-i标志):

代码语言:javascript
复制
curl -i \
  -H "Content-Type: application/json" \
  -d '
{ "auth": {
    "identity": {
      "methods": ["password"],
      "password": {
        "user": {
          "name": "YOUR_ADMIN_NAME (YOU ALSO HAVE AND ATTRIBUTE CALLED ID)",
          "domain": { "id": "YOUR_DOMAIN_ID" },
          "password": "YOUR_ADMIN_PASSWORD"
        }
      }
    }
  }
}' \
  "YOUR_KEYSTONE_URL/v3/auth/tokens" ; echo

然后,创建EC2凭证,如下所示:

代码语言:javascript
复制
curl -i -X POST "YOUR_KEYSTONE_URL/v3/credentials" -H "Content-Type: application/json" -H "X-Auth-Token: YOUR_TOKEN_PREVIOUS_FETCHED" -d '{
    "credential": {
        "blob": "{\"access\":\"123456\",\"secret\":\"SOME_SECRET_KEY\"}",
        "project_id": "THE_PROJECT_ID_OF_USER",
        "type": "ec2",
        "user_id": "THE_USER_WHO_NEEDS_CREDENTIALS"
    }
}'

得到的回应类似于:

代码语言:javascript
复制
{"token": {"methods": ["password"], "user": {"domain": {"id": "DOMAIN_ID", "name": "DOMAIN_NAME"}, "id": "USER_ID", "name": "USER_NAME", "password_expires_at": null}, "audit_ids": ["3S7UdvgpQS-rhD4eqD7xMQ"], "expires_at": "2021-09-23T17:43:58.000000Z", "issued_at": "2021-09-22T17:43:58.000000Z"}}

理想情况下,您应该查找此响应,以创建状态201。

如果您想查看Keystone API,请访问以下链接:https://docs.openstack.org/api-ref/identity/v3/index.html?expanded=create-credential-detail#credentials

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68032183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档