Acessando o Amazon S3 a partir de uma sub-rede VPC privada

12

Se eu tiver uma VPC em execução e alguns servidores localizados na parte privada dessa rede que processam o back-end baixando arquivos do amazon s3, posso acessar o S3 internamente para obter esses arquivos? Ou tenho que acessar a Internet pública via NAT, baixar arquivos s3 por https e processar dessa maneira?

A Internet
fonte
Veja minha resposta em stackoverflow.com/questions/25539057/… para uma maneira de fazer isso, embora minha resposta esteja mais relacionada à configuração de um bucket S3 para que ele possa ser acessado SOMENTE a partir de uma VPC específica, portanto, ele pode responder parcialmente questão.
Eddie

Respostas:

29

Com um nome de usuário como "A Internet", espero que você saiba disso. Mas desde que você perguntou ...

:)

As VPCs são verdadeiramente privadas. Somente o tráfego que você permite explicitamente pode transitar pelas fronteiras da VPC.

Portanto, dentro de uma VPC, as instâncias que precisam acessar recursos externos precisam receber um EIP (nesse caso, podem acessar recursos externos usando a infraestrutura da AWS) ou você precisa fornecer um host NAT (nesse caso, todo o tráfego sai o VPC via seu próprio NAT).

Se você optar por fornecer seu próprio host NAT, lembre-se de que será necessário desativar a verificação de origem / destino nessa instância, além de adicionar uma rota padrão à sua sub-rede privada, apontando para o host NAT.

ATUALIZAÇÃO (10-05-2015): em 11 de maio de 2015, a AWS lançou um "VPC Endpoint" para S3 , que permite o acesso ao S3 diretamente de uma VPC sem precisar passar por um host proxy ou instância NAT. Felizmente, por respeito à natureza verdadeiramente privada da VPC, esse recurso está desativado por padrão, mas pode ser facilmente ativado usando o Console da AWS ou por meio de sua API.

EEAA
fonte
E quanto ao controle de acesso? Quando o tráfego chega pela instância NAT, como as políticas de bucket do S3 funcionam (como a origem é NATted, como o S3 pode saber qual função ou usuário está solicitando os dados)?
Tuukka Mustonen
@TuukkaMustonen A única preocupação é se você tiver políticas baseadas no IP de origem. Nesse caso, você precisará usar o IP público da instância NAT como o IP de origem.
Filipenf
2

Se sua instância estiver na sub-rede pública da VPC, então:

  • Você deve ter um endereço IP público atribuído à sua instância
  • OU você deve ter um IP elástico atribuído à sua instância

Se sua instância estiver na sub-rede privada da VPC, então:

  • Você precisa ter um dispositivo NAT executando na sub-rede pública. Para que a instância na sub-rede privada da VPC possa acessar a Internet via NAT e acessar o S3. Você pode usar o AWS VPC NAT ou configurar o seu próprio (google para isso, caso deseje configurar seu próprio NAT)

Bottom line, para acessar S3, você deve poder acessar a Internet.

slayedbylucifer
fonte
FYI: de acordo com minha atualização acima, o acesso à Internet não é mais necessário.
EEAA
-3

Você não precisa "sair" e voltar "entrar" ou alterar nada sobre a maneira como transfere dados nas regiões da AWS. Não há taxa para transferência de / para baldes na mesma região . Você precisa pagar pelo armazenamento.

quadruplebucky
fonte
Isso não responde à pergunta do OP.
EEAA 26/02
Não está claro se ele está se referindo a uma rede fora da AWS. Obrigado pelo dv!
Quadruplebucky
Você está perdendo o ponto. Ele tem instâncias EC2 em uma sub-rede VPC privada. Por padrão, eles não têm acesso a nada fora dessa VPC. Portanto, como afirmei na minha resposta, ele precisará usar uma das duas opções para dar acesso ao S3. Não tem nada a ver com o fato de as redes estarem dentro ou fora da AWS, mas sim com o acesso fora de sua VPC.
EEAA 26/02
@quadruplebucky, deixo claro que estou acessando a "Internet pública" para obter arquivos por HTTPS.
Internet
Vou me curvar aqui, não tenho cachorro nessa luta. A AEAA respondeu à sua pergunta. Você paga se cruzar regiões.
Quadruplebucky