Asp.net 使IIS工作进程假定已登录用户的AWS凭据

Asp.net 使IIS工作进程假定已登录用户的AWS凭据,asp.net,amazon-web-services,iis,aws-secrets-manager,aws-credentials,Asp.net,Amazon Web Services,Iis,Aws Secrets Manager,Aws Credentials,我有一个在IIS上运行的ASP.NET应用程序。应用程序访问AWS Secrets manager,我希望开发人员能够在本地运行该应用程序并使用其本地AWS登录 IIS工作进程在IIS APPPOOL\MyApp下运行 应用程序尝试如下方式访问AWS Secrets Manager: var config = new AmazonSecretsManagerConfig { RegionEndpoint = RegionEndpoint.MyRegion }; var client = new

我有一个在IIS上运行的ASP.NET应用程序。应用程序访问AWS Secrets manager,我希望开发人员能够在本地运行该应用程序并使用其本地AWS登录

IIS工作进程在IIS APPPOOL\MyApp下运行

应用程序尝试如下方式访问AWS Secrets Manager:

var config = new AmazonSecretsManagerConfig { RegionEndpoint = RegionEndpoint.MyRegion };
var client = new AmazonSecretsManagerClient(config);

var request = new GetSecretValueRequest
{
    SecretId = "my-secret-id"
};

var response = Task.Run(async () => await client.GetSecretValueAsync(request)).Result;
虽然我已登录AWS,并且这将作为控制台应用程序使用,但由于ASP.NET以未登录的IIS APPPOOL\MyApp运行,因此它无法访问它

如果我将C:\Users\MyLogin.aws\credentials复制到C:\Users\MyApp.aws\credentials,那么它就可以工作了,但显然这只是一个概念证明,不是一个长期的解决方案

如果我尝试这样做:

var sharedFile = new SharedCredentialsFile("C:/Users/MyLogin/.aws/credentials");

if (!sharedFile.TryGetProfile("default", out var profile))
{
    throw new Exception("Cannot access shared credentials file");
}

if (!AWSCredentialsFactory.TryGetAWSCredentials(profile, sharedFile, out var credentials))
{
    throw new Exception("Cannot get credentials from shared file");
}

var config = new AmazonSecretsManagerConfig { RegionEndpoint = RegionEndpoint.MyRegion };
var client = new AmazonSecretsManagerClient(credentials, config);

var request = new GetSecretValueRequest
{
    SecretId = "my-secret-id"
};

var response = Task.Run(async () => await client.GetSecretValueAsync(request)).Result;
但它无法访问该文件夹,因为它没有权限,并且希望避免这种情况,因为我希望设置尽可能简单

或者我必须通过访问/密钥设置一个新的IAM用户来使用它吗?同样,我希望避免这种情况,因为这将涉及到将密钥存储在某个地方。我真的想使用用户的登录