如何使用IAM将文件从谷歌云实例上传到云存储?

时间:2016-08-28 04:46:27

标签: google-cloud-storage google-compute-engine devops

我希望文件从云VM自动上传到云端存储。如果不将谷歌访问密钥ID放到实例中,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

有一种巧妙的方法来处理GCE内部的身份验证。 GCE实例可以具有关联的服务帐户,该帐户代表在该GCE实例上运行的程序。该服务帐户可以像其他任何帐户一样被授予写入GCS存储桶的权限。

在部署的GCE实例上可以轻松使用充当此服务帐户的凭据。最简单的方法是使用支持Application Default Credentials的Google工具或库。如果您的身份验证代码完全是自定义的,则可以直接从网址“http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token”检索该服务帐户的访问令牌(如果您这样做,则还必须包含标题“Metadata-Flavor:Google”)。

GCS命令行实用程序gsutil已预先安装在GCE实例上,它可以使用应用程序默认凭据。如果您从脚本或shell调用它,它将上传文件到云存储,无需进一步配置。

使服务帐户与GCS协同工作有一个重要的技巧。 GCE要求您指定服务帐户具有哪些范围,默认情况下,GCS不包含在这些范围中,这意味着服务帐户最初不能与GCS一起使用。您需要将GCS添加到允许的范围并重新启动实例。

有关为GCE实例配置服务帐户的文档位于:https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances

有关如何使用应用程序默认凭据的文档,请访问:https://developers.google.com/identity/protocols/application-default-credentials