Добавлен пример на .NET 10#3
Open
axtox wants to merge 26 commits into
Open
Conversation
This includes only basic S3 setup
…tion functionalities
…ning Docker images, and add .dockerignore
…cker section formatting
…hod and improve validation in CreateS3Client
There was a compile errors in case of using Required fields in this particular case
There was a problem hiding this comment.
Pull request overview
This PR adds a new .NET 10 example to the repository, demonstrating core Amazon S3 (Timeweb Cloud S3-compatible) operations via the AWS SDK, along with run instructions for CLI, Docker, and VS Code tasks.
Changes:
- Added a C# direct-file sample (
dotnet/src/sample.cs) covering bucket/object operations, tagging, and lifecycle rules with JSON-formatted output. - Added .NET-specific documentation and environment configuration templates (
dotnet/README.md,.env.example), plus VS Code tasks and ignore files. - Added a root README link to the new
.NETexample folder.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Adds a link to the new .NET example section. |
| dotnet/src/sample.cs | Implements the .NET S3 sample showcasing common API operations and formatted output. |
| dotnet/src/.env.example | Provides an example .env template for S3 credentials/config. |
| dotnet/README.md | Documents how to run the sample via CLI, Docker, and VS Code tasks. |
| dotnet/Dockerfile | Adds a multi-stage Docker build for the sample. |
| dotnet/.gitignore | Ensures build artifacts and .env are not committed. |
| dotnet/.dockerignore | Attempts to exclude .env from Docker build context. |
| .vscode/tasks.json | Adds tasks to run locally and build/run via Docker from VS Code. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+284
to
+286
| var response = await action; | ||
| using var reader = new StreamReader(response.ResponseStream); | ||
| // Исключительно для текстовых файлов |
| using System.Text.Json.Serialization.Metadata; | ||
|
|
||
| var settings = LoadS3Settings(); | ||
| var s3Client = CreateS3Client(settings); |
Comment on lines
+43
to
+44
| // флаг для обратной совместимостью с Timeweb S3, убрать когда Timeweb S3 актуализируется | ||
| DisableDefaultChecksumValidation = true |
Comment on lines
+56
to
+57
| // флаг для обратной совместимостью с Timeweb S3, убрать когда Timeweb S3 актуализируется | ||
| DisableDefaultChecksumValidation = true |
| # Использование dotnet-sdk Для Работы с S3 Хранилищем Timeweb Cloud | ||
| ## Описание | ||
| > [!WARNING] | ||
| > Версия NuGet пакета `AWS.SDK` в примере `<=4.0.2`, однако, на Июнь 2025 года она не работает полноценно с методами `PutObject` (для работы `PutObject` необходимо либо установить флаг `DisableDefaultChecksumValidation` в `true` во время создания запроса `PutObjectRequest`, либо использовать версию SDK `<=3.5.10.2`), поскольку Timeweb S3 пока что не поддерживает самые последние версии .NET клиентов. Предположительно, это связано с обновлением не самого S3 API, который так и остался в версии `2006-03-01`, но с новыми требованиями к сети (HTTP/2), валидацией checksum (DefaultChecksumValidation), `nullable` поля и др. |
| > Версия NuGet пакета `AWS.SDK` в примере `<=4.0.2`, однако, на Июнь 2025 года она не работает полноценно с методами `PutObject` (для работы `PutObject` необходимо либо установить флаг `DisableDefaultChecksumValidation` в `true` во время создания запроса `PutObjectRequest`, либо использовать версию SDK `<=3.5.10.2`), поскольку Timeweb S3 пока что не поддерживает самые последние версии .NET клиентов. Предположительно, это связано с обновлением не самого S3 API, который так и остался в версии `2006-03-01`, но с новыми требованиями к сети (HTTP/2), валидацией checksum (DefaultChecksumValidation), `nullable` поля и др. | ||
|
|
||
| Приложение показывает использование S3 хранилища Timeweb Cloud в `dotnet`, при запуске будут выполнены следующие команды: | ||
| 1. Создание бакета (если уже существует - вернет детали существующего бакета) |
| 1. Список бакетов | ||
| 1. Отправка текста в файл | ||
| 1. Отправка файла | ||
| 1. Получение списка файловы |
Comment on lines
+55
to
+56
| ```console | ||
| docker build -t dotnet-s3-example:latest ./src |
Comment on lines
+21
to
+24
| "dockerBuild": { | ||
| "context": "${workspaceFolder}/dotnet/src", | ||
| "dockerfile": "${workspaceFolder}/dotnet/Dockerfile", | ||
| "tag": "dotnet-s3-example:latest" |
| # можно найти во вкладке `Дашборд` в разделе `Хранилище S3` | ||
| # в личном кабинете Timeweb Cloud. | ||
|
|
||
| # Ковычки в значениях использовать не следует, так как они плохо распознаются командой docker run. |
Which means that the bug is fixed!
…S3Settings for AOT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание
Добавлен пример использования Amazon S3 SDK для работы с S3-хранилищем Timeweb Cloud на платформе .NET. Пример демонстрирует основные операции с объектным хранилищем, включая создание и удаление бакетов, загрузку и скачивание файлов, а также работу с метаданными объектов. Проект сопровождается подробной инструкцией по запуску через CLI, Docker и Visual Studio Code.
Мотивация
Особенности работы TimeWeb S3 с новыми версиями AWS SDK (как выяснилось, PutObject с latest 4.x AWS.SDK не работают с TimeWeb S3) которые могут вызвать трудности в подключении на современных стеках (предположительно влияющие на интеграцию с разными языками, а не только .NET)
Этот репозиторий призван показать работающие версии AWS SDK, чтобы сократить время внедрения TimeWeb S3 в проекты.
Что сделано
<=3.5.10.2) для корректной работы с Timeweb Cloud S3, также найден способ работать с последней 4.0.2 через использование флагаDisableDefaultChecksumValidation.env(используется DotNetEnv).Тикет
#4