Google gsutil auth 没有提示
Google gsutil auth without prompt
我想在 Docker 容器中使用 gsutil。我创建了一个 O2Auth 服务帐户 JSON 文件。
如何设置 gsutil auth 以使用 JSON 配置文件并在没有提示的情况下执行命令?
目前我得到这样的东西:
$ gsutil config -e
It looks like you are trying to run "/.../google-cloud-sdk/bin/bootstrapping/gsutil.py config".
The "config" command is no longer needed with the Cloud SDK.
To authenticate, run: gcloud auth login
Really run this command? (y/N) y
This command will create a boto config file at /.../.boto
containing your credentials, based on your responses to the following questions.
What is the full path to your private key file?
我必须使用什么 command/parameters/setup 环境提示?
通过执行解决了这个问题:
gcloud auth activate-service-account --key-file=/opt/gcloud/auth.json
完整示例和成品容器可在此处找到:blacklabelops/gcloud
如果您只需要 gsutil 并绕过提示,您可以使用 expect 脚本轻松完成:
#!/usr/bin/expect
spawn gsutil config -e
expect "What is the full path to your private key file?" { send "/path/your.key\r" }
expect "Would you like gsutil to change the file permissions for you? (y/N)" { send "y\r" }
expect "What is your project-id?" { send "your-projet-42\r" }
interact
仅使用 gsutil:
首先运行这条命令手动配置身份验证
gsutil config -a
这将使用所需的凭据创建 /root/.boto 文件。
将 path/file 复制到您的 docker 图片中。
gsutil 现在将使用这些凭据。
-o Credentials:gs_service_key_file=<path to JSON file>
做得很好,使用 https://cloud.google.com/storage/docs/gsutil/addlhelp/TopLevelCommandLineOptions
中记录的 boto 配置覆盖参数
$ gsutil -v
gsutil version: 4.57
$ gsutil -o Credentials:gs_service_key_file=key.json ls -al gs://bucket/filename
79948 2021-05-24T02:12:25Z gs://bucket/filename#1111111145678393 metageneration=2
以上解决方案对我不起作用。
为我解决这个问题的方法如下
- 在 boto 配置文件的
[Credentials]
部分设置 gs_service_key_file
(参见 here)
- 使用
gcloud auth activate-service-account
激活您的服务帐户
- 在
gcloud config
中设置默认项目
Dockerfile 被截断:
ENV GOOGLE_APPLICATION_CREDENTIALS /.gcp/your_service_account_key.json
ENV GOOGLE_PROJECT_ID your-project-id
RUN echo '[Credentials]\ngs_service_key_file = /.gcp/your_service_account_key.json' \
> /etc/boto.cfg
RUN mkdir /.gcp
COPY your_service_account_key.json $GOOGLE_APPLICATION_CREDENTIALS
RUN gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS --project $GOOGLE_PROJECT_ID
RUN gcloud config set project $GOOGLE_PROJECT_ID
我想在 Docker 容器中使用 gsutil。我创建了一个 O2Auth 服务帐户 JSON 文件。
如何设置 gsutil auth 以使用 JSON 配置文件并在没有提示的情况下执行命令?
目前我得到这样的东西:
$ gsutil config -e
It looks like you are trying to run "/.../google-cloud-sdk/bin/bootstrapping/gsutil.py config".
The "config" command is no longer needed with the Cloud SDK.
To authenticate, run: gcloud auth login
Really run this command? (y/N) y
This command will create a boto config file at /.../.boto
containing your credentials, based on your responses to the following questions.
What is the full path to your private key file?
我必须使用什么 command/parameters/setup 环境提示?
通过执行解决了这个问题:
gcloud auth activate-service-account --key-file=/opt/gcloud/auth.json
完整示例和成品容器可在此处找到:blacklabelops/gcloud
如果您只需要 gsutil 并绕过提示,您可以使用 expect 脚本轻松完成:
#!/usr/bin/expect
spawn gsutil config -e
expect "What is the full path to your private key file?" { send "/path/your.key\r" }
expect "Would you like gsutil to change the file permissions for you? (y/N)" { send "y\r" }
expect "What is your project-id?" { send "your-projet-42\r" }
interact
仅使用 gsutil:
首先运行这条命令手动配置身份验证
gsutil config -a
这将使用所需的凭据创建 /root/.boto 文件。 将 path/file 复制到您的 docker 图片中。
gsutil 现在将使用这些凭据。
-o Credentials:gs_service_key_file=<path to JSON file>
做得很好,使用 https://cloud.google.com/storage/docs/gsutil/addlhelp/TopLevelCommandLineOptions
$ gsutil -v
gsutil version: 4.57
$ gsutil -o Credentials:gs_service_key_file=key.json ls -al gs://bucket/filename
79948 2021-05-24T02:12:25Z gs://bucket/filename#1111111145678393 metageneration=2
以上解决方案对我不起作用。
为我解决这个问题的方法如下
- 在 boto 配置文件的
[Credentials]
部分设置gs_service_key_file
(参见 here) - 使用
gcloud auth activate-service-account
激活您的服务帐户
- 在
gcloud config
中设置默认项目
Dockerfile 被截断:
ENV GOOGLE_APPLICATION_CREDENTIALS /.gcp/your_service_account_key.json
ENV GOOGLE_PROJECT_ID your-project-id
RUN echo '[Credentials]\ngs_service_key_file = /.gcp/your_service_account_key.json' \
> /etc/boto.cfg
RUN mkdir /.gcp
COPY your_service_account_key.json $GOOGLE_APPLICATION_CREDENTIALS
RUN gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS --project $GOOGLE_PROJECT_ID
RUN gcloud config set project $GOOGLE_PROJECT_ID