sample_rdsをスナップショットから復元 - tetsuyaf1100/hello-world GitHub Wiki

  • sample script
#!/bin/bash

restore () {
  if [ -z "$1" ]; then
    exit
  fi
  db_new_instance=$1

  instance_class=db.t3.small
  subnet_group=subnet_group
  
  snapshot=$(aws rds describe-db-snapshots 2>/dev/null | \
             jq -rc .DBSnapshots[].DBSnapshotIdentifier | \
             grep rds:myrds- | tail -1)

  echo ${db_new_instance}
  echo ${instance_class}
  echo ${subnet_group}
  echo ${snapshot}

  aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier ${db_new_instance} \
  --db-snapshot-identifier ${snapshot} \
  --db-instance-class ${instance_class} \
  --db-subnet-group-name ${subnet_group} \
  --no-publicly-accessible \
  --no-multi-az
}



add_role () {
  if [ -z "$1" ]; then
    exit
  fi
  db_new_instance=$1

  count=0
  while true
  do
    rds_status=$(aws rds describe-db-instances \
                 --db-instance-identifier $db_new_instance | \
                 jq -r .DBInstances[].DBInstanceStatus)

    if [ "$rds_status" = "available" ]; then
        echo "rds status abailable"
        break;
    fi

    echo -n '.'
    sleep 6

    ((count++))
    if [ $count -ge 300 ]; then
      exit 1
    fi
  done

  aws rds add-role-to-db-instance \
  --db-instance-identifier $db_new_instance \
  --role-arn arn:aws:iam::xxxxxxxxxxxx:role/myrds-role \
  --feature-name S3_INTEGRATION
}



restore myrds
add_role myrds