Jer*_*hoy 2 google-cloud-storage google-cloud-platform google-cloud-build
我是谷歌云服务的新手,我正在尝试设置我的产品的自动构建,需要下载大量文件。
我想从 Docker 构建过程中的专用 Google Storage 存储桶下载文件。为此,我已将以下行添加到我的Dockerfile
:
RUN curl https://storage.cloud.google.com/[bucketname]/[filename] -o [filename]
Run Code Online (Sandbox Code Playgroud)
由于此存储桶中的文件不应公开访问,因此我禁用了对象级别权限并将权限添加到成员[ProjectID]@cloudbuild.gserviceaccount.com
中Storage Object Viewer
。
但是当docker文件脚本运行时,下载的文件是空的
Step 7/9 : RUN curl https://storage.cloud.google.com/[bucketname]/[filename] -o [filename]
---> Running in 5d1a5a1bbe87
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Removing intermediate container 5d1a5a1bbe87
---> 42938a9cc8d1
Step 8/9 : RUN ls -l [filename]
---> Running in 34ac112051a1
-rw-r--r-- 1 root root 0 Jun 15 00:37 [filename]
Run Code Online (Sandbox Code Playgroud)
如果我登录 google.console 并通过我的导航器访问它,则此链接非常有效。
我尝试更改权限设置,最终将cloud build account
, storage legacy bucket reader
, storage legacy object reader
, 加storage object viewer
在一起,但没有取得多大成功。
我显然做错了什么。但我不清楚如果:
谢谢你的帮助 :)
经过长时间的研究、尝试和错误,我设法找到了一个很好的方法。这是那些可能需要重现类似设置的人以及我未来的我的食谱。
gcloud iam service-accounts keys create ~/key.json --iam-account [SA-NAME]@[PROJECT-ID].iam.gserviceaccount.com
在Cloud Shell 中输入 (https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-键-创建-gcloud )RUN curl https://sdk.cloud.google.com | bash > /dev/null
ENV PATH="${PATH}:/root/google-cloud-sdk/bin"
Run Code Online (Sandbox Code Playgroud)
RUN ./myscript.sh
从您的 docker 文件运行的 shell 脚本中,您将添加:
gcloud auth activate-service-account [ACCOUNT] --key-file=~/key.json
( https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account )激活您的服务帐户 )TOKEN=`gcloud auth print-access-token [ACCOUNT]`
( https://cloud.google.com/sdk/gcloud/reference/auth/print-access-token )生成与此帐户关联的身份验证令牌RUN curl -L -H "Authorization: Bearer [TOKEN]" https://www.googleapis.com/storage/v1/b/[bucketname]/o/[objectname]?alt=media -o filename
Run Code Online (Sandbox Code Playgroud)
我没有使用,gcloud cp gs://bucketname/bucketfile ./
因为python2
在我的 Docker 映像中不可用,而且 google 不支持 python3。用巧克力蛋糕或甜食来祝贺自己。(:
奖励:如果像我一样你的 docker 构建超时,你必须cloudbuild.yaml
在你的Dockerfile
. 这是我用于构建的通用文件:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME:$BUILD_ID', '.' ]
images:
- 'gcr.io/$PROJECT_ID/$REPO_NAME:$BUILD_ID'
timeout: 900s
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
746 次 |
最近记录: |