0

我需要创建 ec2 凭据,类似于 CLI 命令:
openstack ec2 credentials create 它应该返回我的访问和密钥。
我浏览了https://docs.openstack.org/openstacksdk/latest/user/connection.html文档,只找到了密钥对方法,但它们是关于公钥/私钥的。
我翻阅了文档并找到了一个用于处理机密的 API,但这不是我想要的。
是否有来自 OpenStack(Openstack Swift)的实现或者只是一个 REST API 方法,我可以自己将其包装在请求中?
我需要这些凭据才能使用 S3 存储桶和其他东西。基本上,为此:

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 char long)
secret (32 char long)
optionable links, user_id, trust_id

4

1 回答 1

0

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

url 是“v3/credentials”,您需要发送一个 POST 请求以及您的令牌。

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

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 凭证,如下所示:

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"
    }
}'

响应类似于:

{"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

于 2021-09-22T17:50:16.037 回答