.net - 如何在 .NET AWS SDK 中担任角色
问题描述
我正在尝试构建一个 .net 核心 mvc 应用程序,该应用程序允许用户将数据发送到 dynamodb,但我似乎无法承担描述我的表的权限角色。每次尝试时都会出现以下错误:
Unable to get IAM security credentials from EC2 Instance Metadata Service
首先我有我的控制器(索引是提交用户表单的地方):
public class RfiController : Controller
{
private readonly IDynamoDBClient capture;
public RfiController(IDynamoDBClient dynamodb)
{
capture = dynamodb;
}
. . .
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index(ViewModel Model)
{
. . .
///ASSUME THE role
ConfigProvider config = new ConfigProvider();
config.AWSRoleName = "rolename";
config.AWSRegion = "region";
config.Environment = "dev";
capture.DynamoDBClientService(config);
return View(Model);
}
}
}
这调用了我创建的一个库来处理我的 dynamodb 连接和东西。这是课程:
public class DynamoDBClient: IDynamoDBClient
{
private readonly IAmazonDynamoDB _client;
public DynamoDBClient(IAmazonDynamoDB dynamoDBClient)
{
_client = dynamoDBClient;
}
public void DynamoDBClientService(ConfigProvider config)
{
try
{
DescribeTableRequest request = new DescribeTableRequest
{
TableName = "tablename"
};
var result = _client.DescribeTableAsync(request);
var status = result.Result.Table.TableStatus;
}
catch (Exception ex) //I catch and error `Unable to get IAM security credentials from EC2 Instance Metadata Service` here
{
throw ex;
}
}
static AssumeRoleResponse GetAssumeRoleResponseAsync(AmazonSecurityTokenServiceClient client, AssumeRoleRequest request)
{
AssumeRoleResponse response;
try
{
response = client.AssumeRoleAsync(request).Result;
}
catch (Exception ex)
{
throw ex;
}
return response;
}
}
我当然在凭证文件中使用我的 aws 帐户。当我尝试运行该应用程序时,我在我指定的地方发现了一个错误。我怎么做错了?我对 aws sdk 很陌生,所以如果答案很明显,请原谅我。
解决方案
如果您可以创建一个 IAM 角色并将其附加到您正在运行 .Net 代码的实例,那就更好了。
IAM 角色:https ://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html
此外,请确保您可以从实例中访问元数据 URL:http: //169.254.169.254/latest/meta-data/
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
推荐阅读
- r - 使用 Rvest 搜索 Google 新闻获取关键字
- python - 对于 REST API,我可以使用 flask-login 提供的身份验证机制,还是必须明确使用基于令牌的身份验证,如 JWT?
- python - NoneType 对象不可调用(制作词法分析器)
- javascript - 有没有办法为我的命令添加全局冷却时间,这样当一个用户使用该命令时,所有用户都必须等待特定时间?
- ios - 测试飞行中的 IOS 应用程序崩溃(delphi10.4)
- c++ - C++ 升压系统::error_code 语言
- php - 无法使用 PHP 重命名文件
- reactjs - 我的笑话单元测试用例因 Material UI 多选而失败
- javascript - 未捕获的类型错误:尝试使用 jqxTabs 更改所选选项卡时无法读取未定义的属性“offsetWidth”
- javascript - 如何在打字稿中声明 getAttribute 函数类型