Skip to content

ohsawa0515/automate-lifecycle-delete-rule-of-cloud-storage

Repository files navigation

Automate lifecycle delete rule of Google Cloud Storage

This repository creates architecture which add automatically lifecycle delete of rules of Google Cloud Storage (GCS)'s bucket when it is created.

Installtion

The architecture is created by Cloud Deployment Manager (CDM).

1. Enable necessary services.

gcloud services enable compute.googleapis.com \
  deploymentmanager.googleapis.com \
  cloudbuild.googleapis.com \
  cloudresourcemanager.googleapis.com \
  cloudfunctions.googleapis.com \
  iam.googleapis.com

2. Add the required permissions in the CDM.

PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)")

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member serviceAccount:${PROJECT_NUMBER}@cloudservices.gserviceaccount.com \
  --role roles/editor

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member serviceAccount:${PROJECT_NUMBER}@cloudservices.gserviceaccount.com \
  --role roles/logging.configWriter

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member serviceAccount:${PROJECT_NUMBER}@cloudservices.gserviceaccount.com \
  --role roles/resourcemanager.organizationAdmin

3. Change the properties in deployment.yml as needed.

# copy
cp deployment.yml.example deployment.yml
properties:
  location: us-east1
  bucketLocation: US
  lifecycleExpire: 365
  ignorePatterns:
    - ".*.appspot.com"  # Container Registry, App Engine etc
    - "gcf-sources*"    # Cloud Functions

location

Location where Cloud Functions are deployed. Default is us-east1.

bucketLocation

GCS bucket location required for Cloud Functions to deploy. Default is US (Multi regions).

lifecycleExpire

The number of days a GCS object is held. It will be automatically deleted after this number of days. Default is 365 days.

ignorePatterns

Bucket name patterns that do not apply lifecycle policies. The default is a pattern for buckets created by Google Container Registry (GCR), Google App Engine (GAE), etc.

4. Deploy

DEPLOY_NAME='setting-gcs-bucket'

gcloud deployment-manager deployments create $DEPLOY_NAME --config deployment.yml --preview
gcloud deployment-manager deployments update $DEPLOY_NAME

If you failed, you can retry it.

# must be preview
gcloud deployment-manager deployments update $DEPLOY_NAME --config deployment.yml --preview
gcloud deployment-manager deployments update $DEPLOY_NAME

Deletion

gsutil rm -r gs://${DEPLOY_NAME}-for-cfn-deploying-${PROJECT_NUMBER}
gcloud deployment-manager deployments delete $DEPLOY_NAME

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published