Google 云存储桶创建

问题描述 投票:0回答:4

如果 google 存储桶不存在,我想创建一个。否则,我想重用存储桶名称。怎么做? 相当于unix命令

mkdir -p 目录名称

我使用了该命令,但下次运行时我的 shell 脚本崩溃了。

gsutil mb -l ASIA gs://my_bucket_name_blah_blah

google-cloud-storage gsutil
4个回答
15
投票

您可以先检查桶是否存在。我认为这样的事情会起作用:

gsutil ls -b gs://my_bucket_name_blah_blah || gsutil mb -l ASIA gs://my_bucket_name_blah_blah

由于如果存储桶已存在,第一个命令将返回 0 错误代码,因此只有在存储桶不存在时才会执行第二个命令。

但请注意,如果出现错误(暂时错误或权限被拒绝),第一个命令还将返回非零退出代码。因此,您可能需要一种更强大的方式来创建存储桶。


2
投票

按照BoHuang的回答我可以想出这个:

# This function create a bucket
function create_bucket {

#PROJECT=$1
#BUCKET=$2
#REGION=$3
echo "Creating bucket [$2] in region [$3] for project [$1]"

if ! gsutil ls -p $1 gs://$2 &> /dev/null;
    then
        echo creating gs://$2 ... ;
        gsutil mb -p $1 -c regional -l $3 gs://$2;
        sleep 5;
    else
        echo "Bucket $2 already exists!"
        echo "Please revise the bucket and delete manually or rerun the code"
        exit 1
fi

}


1
投票

六年后....

我发现这个GitLab脚本可以作为参考来解决这个问题

关键部分是

if ! gsutil ls -p ${GCP_PROJECT_ID} gs://${BUCKET} &> /dev/null; \
    then \
        echo creating gs://${BUCKET} ... ; \
        gsutil mb -p ${GCP_PROJECT_ID} -c regional -l ${GCP_REGION} gs://${BUCKET}; \
        sleep 10; \
    fi

这是一块Makefile,但它几乎和一个shell脚本一样


0
投票

您也可以转发

gcloud

function ensure_gcp_bucket_exists {
  echo "Running "ensure_gcp_bucket_exists
  BUCKET_NAME="gs://test-bucket"
  if gcloud storage buckets describe "${BUCKET_NAME}" &> /dev/null ; then
     "GCP Bucket ${BUCKET_NAME} already exists"
  else
    echo "Creating GCP Bucket ${BUCKET_NAME}"
    gcloud storage buckets create "${BUCKET_NAME}" 
  fi
}
© www.soinside.com 2019 - 2024. All rights reserved.