.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"、
NET CoreでAWS SDKに認証情報を設定する方法への回答に基づいていますか?/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は抽象クラスであるため、「新しい」ステートメントでは使用できません。
ダンパントリーの回答に基づいて、コードが強調表示された簡単な短い回答を次に示します(2行目の領域列挙に注意してください)。
var awsCredentials = new Amazon.Runtime.BasicAWSCredentials("myaccesskey", "mysecretkey");
var client = new Amazon.SimpleNotificationService.AmazonSimpleNotificationServiceClient(
awsCredentials, Amazon.RegionEndpoint.EUWest2);
可能な場合は役割を使用しますが、必要に応じて上記で機能します。次に問題は、アクセスキー/シークレットキーを格納する場所です。環境変数、設定ファイル、ユーザーへのプロンプト、または通常の容疑者のいずれかである可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加