【发布时间】:2021-11-26 23:58:54
【问题描述】:
我正在尝试测试 .NET 核心控制台程序以将消息发布到 SNS。由于我在尝试让它在 Lambda 中工作时遇到问题,我想在非 Lambda 环境中尝试它。在 Lambda 中,角色涵盖了安全性,但在控制台程序中,我认为我必须以某种方式指定我的访问密钥和秘密。
我已经阅读了这个页面:http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html#net-dg-config-creds-sdk-store,但仍然很困惑。
我在本地开发计算机上运行,而不是 EC2 实例。无意将其投入生产,只是尝试测试一些代码。
我使用的是 Visual Studio 2015,.NET Core 1.0。我使用 Nuget 获得以下信息: "AWSSDK.Extensions.NETCore.Setup": "3.3.3", "AWSSDK.SimpleNotificationService": "3.3.0.23",
根据对How to set credentials on AWS SDK on NET Core? 的回答,我创建了 /user/.aws/credentials 文件(假设凭据是文件名而不是目录名)。
但该问题/答案并未说明如何实际使用此文件。我正在运行的代码如下。
public static void Main(string[] args)
{
Console.WriteLine("Started");
//var awsCredentials = new Amazon.Runtime.AWSCredentials()
var client = new Amazon.SimpleNotificationService.AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.EUWest2);
//var client = new Amazon.SimpleNotificationService.AmazonSimpleNotificationServiceClient(awsCredentials, Amazon.RegionEndpoint.EUWest2);
//Amazon.SimpleNotificationService.Model.PublishResponse publishResp = null;
SendMessage(client).Wait();
Console.WriteLine("Completed call to SendMessage: Press enter to end:");
Console.ReadLine();
}
我在新客户端上遇到的错误是:
An unhandled exception of type 'Amazon.Runtime.AmazonServiceException' occurred in AWSSDK.Core.dll
Additional information: Unable to find credentials
我看到有一种方法可以将 AWSCredentials 对象传递给该构造函数,但我不明白如何构建它。 Amazon.Runtime.AWSCredentials 是一个抽象类,所以我不能在“新”语句中使用它。
【问题讨论】:
-
致downvoter:请提供一种方法来改善OP的问题,而不是downvoting和什么都不说
-
默认情况下,Amazon SDK 将使用标准位置作为凭证(如果已设置)。设置默认凭证的最简单方法是安装 AWS CLI。从命令提示符尝试此命令:“aws sns list-topics”。如果失败,请安装 AWS 命令行界面 aws.amazon.com/cli 并设置您的凭证。
-
@Dan Pantry。我同意。我们应该互相帮助改进问题和答案,不仅针对当前线程,而且针对已建立的知识库。然后,我们还可以对属于 downvote 的 cmets 进行投票。
-
我以前用过amazon-cli。因此,如果我从那里运行 .NET 控制台程序,那么它会“继承”这些凭据吗?我只是想在 Visual Studio 中运行。
标签: c# amazon-web-services aws-sdk