Configuração de um volume externo para o Google Cloud Storage¶
Conceda acesso restrito do Snowflake a um bucket do Google Cloud Storage (GCS) usando um volume externo.
Pré-requisitos¶
Antes de configurar um volume externo, você precisa do seguinte:
- Um bucket do Google Cloud Storage. - Para usar o volume externo para tabelas Iceberg gerenciadas externamente, todos os dados da tabela e arquivos de metadados devem estar localizados no bucket. 
- Para oferecer suporte à recuperação de dados, ative o controle de versão para seu local de armazenamento em nuvem externo. 
 
- Permissões no Google Cloud para criar e gerenciar políticas e funções IAM. Se você não for administrador do Google Cloud, peça ao administrador do Google Cloud para realizar essas tarefas. 
Etapa 1: criar um volume externo no Snowflake¶
Crie um volume externo usando o comando CREATE EXTERNAL VOLUME.
Nota
Somente administradores de conta (usuários com a função ACCOUNTADMIN) podem executar este comando SQL.
O exemplo a seguir cria um volume externo que define um único local de armazenamento GCS com criptografia:
CREATE EXTERNAL VOLUME my_gcs_external_volume
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-us-west-2'
        STORAGE_PROVIDER = 'GCS'
        STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
        ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
      )
    );
Etapa 2: Recupere a conta de serviço GCS para sua conta Snowflake¶
Para recuperar o ID da conta de serviço GCS criado automaticamente para sua conta Snowflake, use o comando DESCRIBE EXTERNAL VOLUME. Especifique o nome do volume externo criado anteriormente.
Por exemplo:
DESC EXTERNAL VOLUME my_gcs_external_volume;
Registre o valor da propriedade STORAGE_GCP_SERVICE_ACCOUNT na saída (por exemplo, service-account-id@project1-123456.iam.gserviceaccount.com).
O Snowflake fornece uma única conta de serviço GCS para toda a sua conta Snowflake. Todos volumes externos GCS usam essa conta de serviço.
Etapa 3: conceder as permissões da conta de serviço para acessar os objetos do bucket¶
Nesta etapa, você configura as permissões de acesso IAM para o Snowflake em seu Google Cloud console.
Criação de uma função IAM personalizada¶
Crie uma função personalizada que tenha as permissões necessárias para acessar o bucket e obter objetos.
- Faça login no Google Cloud console como editor de projeto. 
- No painel inicial, selecione IAM & Admin » Roles. 
- Selecione Create Role. 
- Insira um Title e uma Description opcional para a função personalizada. 
- Selecione Add Permissions. 
- Em Filter, selecione Service e depois escolha storage. 
- Filtre a lista de permissões e adicione o seguinte da lista: - storage.buckets.get
- storage.objects.create
- storage.objects.delete
- storage.objects.get
- storage.objects.list
 
- Selecione Add. 
- Selecione Create. 
Atribuição da função personalizada à conta de serviço GCS¶
- Faça login no Google Cloud console como editor de projeto. 
- No painel inicial, selecione Cloud Storage » Buckets. 
- Filtre a lista de buckets e selecione o bucket que você especificou ao criar um volume externo. 
- Selecione Permissions » View by principals e depois selecione Grant access. 
- Em Add principals, cole o nome da conta de serviço da saída em Etapa 2: Recupere a conta de serviço GCS para sua conta Snowflake. 
- Em Assign roles, selecione a função IAM personalizada que você criou anteriormente e selecione Save. 
Concessão de permissões de conta de serviço do GCS nas chaves do Google Cloud Key Management Service¶
Nota
Esta etapa é necessária apenas se seu bucket GCS estiver criptografado usando uma chave armazenada no Google Cloud Key Management Service (Cloud KMS).
- Faça login no Google Cloud console como editor de projeto. 
- No painel inicial, pesquise e selecione Security » Key Management. 
- Selecione o chaveiro que é atribuído ao seu bucket GCS. 
- No canto superior direito, selecione SHOW INFO PANEL. O painel de informações do chaveiro é exibido. 
- No campo Add members, procure pelo nome da conta de serviço da saída DESCRIBE EXTERNAL VOLUME em Etapa 2: Recupere a conta de serviço GCS para sua conta Snowflake. 
- A partir do menu suspenso Select a role, selecione a função Cloud KMS CryptoKey Encrypter/Decrypter. 
- Selecione Add. O nome da conta de serviço é adicionado ao menu suspenso da função Cloud KMS CryptoKey Encrypter/Decrypter no painel de informações. 
Etapa 4: verificar o acesso ao armazenamento¶
Para verificar se o Snowflake pode se autenticar com sucesso no seu provedor de armazenamento, chame a função SYSTEM$VERIFY_EXTERNAL_VOLUME.
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_external_volume');
Nota
Se você receber o seguinte erro, o administrador da sua conta deverá ativar o AWS STS na região de implantação do Snowflake. Para obter instruções, consulte Gerenciamento do AWS STS em um região da AWS na documentação da AWS.
Error assuming AWS_ROLE:
STS is not activated in this region for account:<external volume id>. Your account administrator can activate STS in this region using the IAM Console.
Próximos passos¶
Depois de configurar um volume externo, você poderá criar uma tabela Iceberg.
- Para criar uma tabela Iceberg somente leitura que usa um catálogo externo, consulte Configurar uma integração de catálogo. 
- Para criar uma tabela Iceberg com suporte completo à plataforma Snowflake, consulte Criar uma tabela gerenciada pelo Snowflake.