Última atualização: 2020-06-17
O que é o Cloud SQL?
O Cloud SQL é um serviço de banco de dados totalmente gerenciado que facilita a configuração, a manutenção, o gerenciamento e a administração de bancos de dados relacionais no Google Cloud Platform.
O que é o Cloud Functions?
O Cloud Functions é uma solução de computação leve para desenvolvedores. Ele cria funções autônomas e de finalidade única que respondem a eventos do Cloud sem a necessidade de gerenciar um servidor ou um ambiente de execução.
O que você criará
Neste codelab, você escreverá uma Função do Cloud em Python. A função:
- Conecta-se a uma instância de banco de dados do Cloud SQL.
- Envia uma instrução de inserção para uma tabela no banco de dados.
O que você aprenderá
- Como acessar a IU da Web do Cloud Functions no Console do Google Cloud.
- Como criar uma Função do Cloud
- Como testar uma Função do Cloud
- Como se conectar a uma instância de banco de dados do Cloud SQL (MySQL ou PostgreSQL) usando Python.
- Como gravar em um banco de dados do Cloud SQL usando o Python.
- Um navegador, como o Chrome ou o Firefox
- Um projeto do Google Cloud Platform que contém a instância do Cloud SQL.
- Se você ainda não tiver um, temos um tutorial para isso. Siga todas as etapas, exceto para excluir a instância.
- A instância contém um banco de dados MySQL ou PostgreSQL com uma tabela.
- O nome da conexão da instância, do banco de dados e da tabela, o nome de usuário do banco de dados e a senha do usuário.
- Uma conta de serviço com o papel de cliente do Cloud SQL.
O código da Função do Cloud para se conectar a um banco de dados do Cloud SQL está aqui. Alguns dos valores de variáveis dependem de seu banco de dados do Cloud SQL ser MySQL ou PostgreSQL e depende das suas próprias informações de banco de dados.
A IU do Cloud Functions no Console do Cloud inclui um editor de texto. É possível copiar/colar e editar o código na IU. Se preferir, edite o código localmente primeiro para depois copiá-lo/colá-lo na IU.
requirements.txt
# This file tells Python which modules it needs to import
SQLAlchemy==1.3.12
# If your database is MySQL, uncomment the following line:
#PyMySQL==0.9.3
# If your database is PostgreSQL, uncomment the following line:
#pg8000==1.13.2
main.py
# This file contains all the code used in the codelab.
import sqlalchemy
# Depending on which database you are using, you'll set some variables differently.
# In this code we are inserting only one field with one value.
# Feel free to change the insert statement as needed for your own table's requirements.
# Uncomment and set the following variables depending on your specific instance and database:
#connection_name = ""
#table_name = ""
#table_field = ""
#table_field_value = ""
#db_name = ""
#db_user = ""
#db_password = ""
# If your database is MySQL, uncomment the following two lines:
#driver_name = 'mysql+pymysql'
#query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
# If your database is PostgreSQL, uncomment the following two lines:
#driver_name = 'postgres+pg8000'
#query_string = dict({"unix_sock": "/cloudsql/{}/.s.PGSQL.5432".format(connection_name)})
# If the type of your table_field value is a string, surround it with double quotes.
def insert(request):
request_json = request.get_json()
stmt = sqlalchemy.text('insert into table_name (table_field) values (table_field_value)')
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name,
query=query_string,
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
try:
with db.connect() as conn:
conn.execute(stmt)
except Exception as e:
return 'Error: {}'.format(str(e))
return 'ok'
- Em um navegador, acesse a IU do Console do Google Cloud Platform.
- Selecione Cloud Functions no menu de navegação.
- Clique em CRIAR FUNÇÃO na barra de botões.
- Insira um nome para a função.
- Selecione o gatilho HTTP. Anote o URL exibido abaixo do item do acionador. Ele terá este formato: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME.
- Selecione Editor in-line para a opção de código-fonte.
- Selecione Python 3.7 para a opção de ambiente de execução.
- Nas janelas do editor de código-fonte, exclua o conteúdo existente para requirements.txt e main.py e substitua-o pelas versões editadas do código acima.
- Digite insert como o nome da Função a ser executada.
- Em Opções avançadas, selecione uma conta de serviço que tenha o papel de cliente do Cloud SQL.
- Clique em Criar e aguarde até que o ícone de carregamento pare. Uma marca de seleção verde aparecerá quando a função estiver pronta para uso.
- Em um navegador, acesse a IU do Console do Google Cloud Platform.
- Selecione Cloud Functions no menu de navegação.
- Clique no nome da função que você criou anteriormente.
- Selecione o link TESTE no meio da página.
- Selecione TESTAR A FUNÇÃO.
- O resultado deve aparecer: ok. Se o teste falhar, você verá um stack trace para ajudar na depuração.
- Em um navegador, acesse o URL que você salvou anteriormente quando criou a função.
- O resultado ok também deve aparecer no navegador.
Parabéns, você criou uma Função do Cloud que funciona com o Cloud SQL.
Você criou uma Função do Cloud que se conecta e grava em uma instância de banco de dados do Cloud SQL.