Upload em bucket s3 utilizando api gateway

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”: “2012–10–17”,
“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 em “Create Resource”.
— Em “Resource Name”, insira `{bucket}`.
B. Dentro de `{bucket}`, crie um recurso chamado `{item}`:
— Clique em “Create Resource”.
— Em “Resource 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.