amazon-web-services - 带有 AWS S3 开发工具包的 AWS 云地图
问题描述
AWS Cloud Map 表示它将与 S3 存储桶一起使用。我很难理解的是如何设置 AWS S3 开发工具包以在向 S3 存储桶发出请求时使用云地图命名空间和服务。是否有一个完整的示例涵盖设置和 S3 存储桶,将其添加到云地图,使用 AWS S3 开发工具包使用云地图访问 S3 存储桶。
为什么我需要这个:我目前正在尝试使用多个 aws 帐户设置开发、阶段和生产环境,并希望代码在应用程序中保持不变,但使用云地图来映射资源。我了解如何使用数据库和其他 url 进行这项工作。当我的代码使用 AWS 开发工具包访问 AWS 资源时,我遇到了困难。
解决方案
您必须使用 AWSSDK.ServiceDiscovery NuGet 包从您的 Cloud Map 命名空间解析服务。解析服务后,您可以将该值用于 S3 服务客户端。这是发现作为 S3 存储桶的 mystorage 服务然后将值与 S3 一起使用的简单示例。
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.ServiceDiscovery;
using Amazon.ServiceDiscovery.Model;
namespace ServiceDiscoveryTest
{
class Program
{
static async Task Main(string[] args)
{
using(var discoveryClient = new AmazonServiceDiscoveryClient(RegionEndpoint.USEast1))
using(var s3Client = new AmazonS3Client(RegionEndpoint.USEast1))
{
var discoveryResponse = await discoveryClient.DiscoverInstancesAsync(new DiscoverInstancesRequest
{
NamespaceName = "dev",
ServiceName = "mystorage",
QueryParameters = new Dictionary<string, string>
{
{ "Version", "1.0" }
}
});
var listResponse = await s3Client.ListObjectsAsync(new ListObjectsRequest
{
BucketName = discoveryResponse.Instances[0].InstanceId
});
foreach(var s3Object in listResponse.S3Objects)
{
Console.WriteLine(s3Object.Key);
}
}
}
}
}
推荐阅读
- python - 将烧瓶 Web 应用程序转换为独立的可执行桌面应用程序
- c# - IHttpClientFactory 单例 .NET 框架
- ios - 更新版本的 iOS 应用程序,以便在 Apple 商务管理或 Apple School Manage 上向特定组织私人分发
- php - 在 Docker 上启用 IMAP 但 Imap 未定义?
- android - Android Kotlin - 材质底部导航禁用 Shift 模式和选择菜单
- wikibase - 从 wikibase docker 容器发送外发电子邮件
- complexity-theory - 大 O 符号的定义
- sql - 将excel用作数据库时如何处理Excel列名中的点符号
- css - 材质 UI 展开选择以适合标签
- laravel - Laravel 7.x 雄辩的 addSelect 子查询来计数