目前我们正在使用AWS s3服务。我们通过与用户共享 access_key_id 和 Secret_access_key 来向用户授予存储桶的访问权限。下面是我们生成这些密钥的流程。示例 https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/IAM/Client.html#create_access_key-instance_method
我们现在计划切换到谷歌云存储。我已经浏览了谷歌云存储 ruby 文档,但找不到有关如何以编程方式生成 access_key_id 和 Secret_access_key 的文档,以便用户可以使用它来访问 gcs 存储桶。 GCS 支持类似的功能吗? GCS 是否为此提供替代选项?
HMAC 密钥是传统密钥,用于互操作性,例如 Amazon S3。 HMAC 密钥需要使用 XML API。
当前的存储 API 是 Cloud Storage JSON API。 JSON API 添加了新功能。
我不知道有 Ruby API 可以创建 HMAC 密钥。您可以使用 Ruby HTTP 客户端直接调用 XML 或 JSON API。
以下示例使用 CLI
curl
演示如何调用 API。使用它们翻译成您的 Ruby 代码。
使用 XML API 的 Curl 示例:
curl -X POST \
-H "Authorization: Bearer OAUTH2_TOKEN" \
"https://storage.googleapis.com/?Action=CreateAccessKey&UserName=SERVICE_ACCOUNT_EMAIL"
curl -X POST \
-H "Authorization: Bearer OAUTH2_TOKEN" \
"https://storage.googleapis.com/storage/v1/projects/PROJECT_IDENTIFIER/hmacKeys?serviceAccountEmail=SERVICE_ACCOUNT_EMAIL"
开发人员命令获取所需的OAuth访问令牌,仅用于测试目的:
gcloud auth application-default print-access-token
Google OAuth 的 Ruby 文档: