Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Lista de buckets no S3, conta AWS produção:

Caso de uso: Ingestão de dados vindos de ferramentas de automação de integração/extração/ETL.

Nome do bucket: DEXCO-DATA-IN

Características:

  • Processo automático que é executado periodicamente por uma ferramenta externa

  • Armazenamento separado em pastas YYYY/MM/DD

  • Não necessita archiving, pois o arquivos são separados por pasta, para evitar sobrescrita. Em caso de reprocessamento, basta acessar a pasta do dia desejado.

  • Cada ACCESS_KEY da acesso a uma única pasta de origem dentro deste bucket

  • Permissões somente de escrita (arquivos não podem ser excluídos)

Regras:

  • Este bucket não pode ser acessado pelas contas antigas da AWS

  • É necessário termos 2 ACCESS_KEY no IAM da AWS:
    1. Publisher Key (public): Será usada pela ferramenta de ETL para fazer o upload (renovação a cada 6 meses). Essa chave será divulgada para o terceiro que fará o upload dos arquivos (criada um para cada pasta root (origem)
    2. Consumer Key (private): Será usada pelo pipeline de injestão de dados (renovado a cada 3 meses). Essa chave será usada internamente, no secrets do Databricks (criada um única vez, da acesso a todos as origem (pastas root) neste bucket)

  • Nenhuma dessas chaves terá acesso para exclusão de arquivos

Pastas de origem (Root):

Pastas de origem identificam a pasta ROOT onde serão armazenados os arquivos. Cada origem tem a sua própria ACCESS_KEY:

...

Origem (ROOT)

...

Descrição

...

Periodicidade

...

/sdi

...

Extrações do SAP ECC e S4 pela ferramenta do SAP Data Intelligence

...

Diário e Streaming

...

/datastage

...

Extrações do SAP ECC pela ferramenta do IBM Datastage

...

Diário

...

/marketdata

...

Arquivos do portal Marketdata

...

Diário

Criação da Chave Privada (criada uma única vez):

Nome do usuário: svc-dexco-prd-data-in

Code Block
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowRootAndHomeListingOfDexcoBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::dexco-data-in"
            ]
        }
        {
            "Sid": "AllowAllS3ActionsInUserFolder",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObjectAcl",
                "s3:ListBucket",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::dexco-data-in/*"
            ]
        }
    ]
}

Criação da Chave Publica:

Nome do usuário: bucket-access-dexco-prd-data-in

Parametros: <origem>

Code Block
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowRootAndHomeListingOfDexcoBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::dexco-data-in"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "",
                        "/",
                        "<origem>/"
                    ],
                    "s3:delimiter": [
                        "/"
                    ]
                }
            }
        },
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::dexco-data-in"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "<origem>/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInUserFolder",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObjectAcl",
                "s3:ListBucket",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::dexco-data-in/<origem>/*"
            ]
        }
    ]
}

Importante: Ferramentas de upload de arquivos como CyberDuck e WinSCP precisa configurar a pasta inicial para /<origem> pois essa key não tem acesso para listagem as pastas do bucket a partir da pasta raiz:

Configurando diretório inicial no WinSCP:

Image Removed

Exemplos:

Para efeito de exemplificação vamos considerar o cenário da empresa parceira chamada “marketdata” que nos envia diariamente um arquivo atualizado com cadastro de usuários da sua plataforma:

Nome do bucket padrão: /dexco-data-in

Pasta inicial: /marketdata (***importante***) 

Os arquivos devem ser separados por pasta no formato YYYY/MM/DD, por exemplo:

/marketdata/2022/03/10/<nome do arquivo>_HHMMSS.csv

Exemplo de caminho completo do arquivo incluindo o nome do bucket:

/dexco-data-in/marketdata/2022/03/10/<nome do arquivo>_HHMMSS.csv

Sendo HH = hora, MM = minuto, SS = segundos, todos com zeros a esquerda.

Os formatos permitidos para o arquivo são CSV ou PARQUET.

 

Importante: Para acesso via aplicativo de transferência de arquivo, como cyberduck e WinSCP por exemplo, é necessário configurar a pasta inicial, tendo em vista que a raiz do bucket não está acessível.

 

Observações: Permissões somente leitura/escrita, ou seja, sem permissão de exclusão de arquivo para manter o histórico.

Casos de uso: Upload manual de arquivos.

Casos de uso: Arquivamento de dados, backup, unload de tabelas do Redshift.

Casos de uso: Envio de arquivo para terceiros.

Casos de uso: Transferência de dados entre ambientes (DEV, STG, PRD) ou entre serviços, por exemplo do Databricks para o Redshift. Arquivos temporários