我需要创建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个字符长度)
密码(32个字符)
可选链接、user_id、trust_id
发布于 2021-09-22 17:50:16
Openstack有一个关于他的Identity API的完整页面。您需要的是Openstack中的凭据,正如您所说的,它需要EC2凭据才能连接到任何使用Swift的S3浏览器。
url是"v3/credentials“,您需要将POST请求与令牌一起发送。
因此,在简历中,您首先要创建令牌(您可以在标题中找到名为X-Subject-Token的令牌,这就是为什么我们使用curl的-i标志):
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
https://stackoverflow.com/questions/68032183
复制相似问题