Upload em bucket s3 utilizando api gateway

Diego Norman
3 min readJan 24, 2025

API de envio de objetos para S3

Step by Step

1. Criar um Bucket S3

No AWS Management Console, pressione `Alt + S` e pesquise por S3.
B. Clique em Create Bucket.
C. Em Bucket Name, insira “o nome do seu bucket”.
D. Deixe as configurações padrão e clique em “Create Bucket”.

2. Criar uma Role com Permissões

A. Pressione `Alt + S` e pesquise por “IAM”.
B. Vá até “Roles” e clique em “Create Role”.
Em “Trusted Entity Type”, selecione “AWS Service”.
Em “Use Case”, escolha “S3” e clique em “Next”.
— Busque por “AmazonAPIGatewayPushToCloudWatchLogs” e clique em “Next”.
Em “Role Name”, insira `api-gateway-s3-role-upload` e clique em “Next”.
— Clique em “Add Permissions”.
C. Clique em “Create Inline Policy” e selecione a aba “JSON”. Cole o seguinte código:
{ 
“Versão”: “20121017”,
“Declaração”: [
{
“Sid”: “VisualEditor0”,
“Efeito”: “Permitir”,
“Ação”: “s3:PutObject”,
“Recurso”: “arn:aws:s3:::upload-s3-norman/*
}
]
}

D. Clique em “Next”, insira `s3-uploadapi` como nome da policy e clique em “Create Policy”.

3. Criar a API no API Gateway

A. Crie um recurso chamado `{bucket}`:
Clique emCreate Resource”.
EmResource Name”, insira `{bucket}`.
B. Dentro de `{bucket}`, crie um recurso chamado `{item}`:
Clique emCreate Resource”.
EmResource Name”, insira `{item}`.
Configurar o Método POST
A. Dentro de `{item}`, clique em **Create Method** e selecione **POST**.
B. Configure os seguintes valores:
**AWS Region**: `us-east-1`
**AWS Service**: `Simple Storage Service (S3)`
**HTTP Method**: `PUT`
**Action Type**: `Use path override`
**Path Override**: `{bucket}/{item}`
**Execution Role**: ARN da função criada anteriormente.
C. Clique em **Save**.
Configurar Parâmetros de URL
A. No método POST, clique em **Integration Request** > **Edit**.
B. Na seção **URL Path Parameters**, adicione os parâmetros:
**Name**: `bucket` | **Mapped From**: `method.request.path.bucket`
**Name**: `item` | **Mapped From**: `method.request.path.item`
C. Salve as alterações.
### Configurar Tipos de Mídia Binários
A. Vá em **API Settings** > **Binary Media Types**.
B. Adicione `*/*` e clique em **Save Changes**.
### Deploy da API
A. Clique em **Deploy API** e crie um stage chamado `uploads3`.
B. Copie a **Invoke URL** gerada.

4. Testar a API com Postman

A. No Postman, crie uma nova requisição HTTP do tipo **POST**.
B. Insira a **Invoke URL**, seguida do nome do bucket e do nome do objeto desejado. Por exemplo:

https://example.execute-api.us-east-1.amazonaws.com/uploads3/upload-s3-norman/test-object

C. Em **Body**, selecione o tipo **binary** e anexe um arquivo.
## Observações
- O nome do arquivo na URL não precisa ser igual ao nome do anexo.
- Mesmo que o anexo tenha o nome `file.pdf`, você pode definir `test.pdf` na URL, e o arquivo será salvo como `test.pdf`.

## Conclusão
Seguindo os passos acima, você configurará uma API funcional para upload de objetos no S3 utilizando o API Gateway da AWS.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Diego Norman
Diego Norman

Written by Diego Norman

Como um Arquiteto de Infraestrutura Cloud, trago uma paixão inabalável pela tecnologia.

No responses yet

Write a response