Baixei e instalei o NoSQL Workbench, habilitei uma instância local do DynamoDB e criei um Modelo de Dados de teste e uma tabela de teste nomeada Table1
na minha máquina local. Tenho um pequeno aplicativo de console e o código de exemplo abaixo nele.
AmazonDynamoDBConfig clientConfig = new AmazonDynamoDBConfig();
clientConfig.ServiceURL = "http://localhost:8000";
var client = new AmazonDynamoDBClient(clientConfig);
var table = Table.LoadTable(client, "Table1"); // <-- this line crashes
var newEntry = new Document();
newEntry["ID"] = Guid.NewGuid().ToString();
newEntry["TelephoneNumber"] = "15";
table.PutItemAsync(newEntry).GetAwaiter().GetResult();
A LoadTable
chamada falha com a exceção " Não foi possível obter credenciais de segurança do IAM do Serviço de Metadados da Instância do EC2 ". Esta é uma instância do DynamoDB recém-baixada e instalada, e eu não configurei nenhuma credencial. Apenas prossegui com as opções de instalação padrão. Este é um aplicativo de console .NET Core.
Pesquisar na internet não é útil neste caso. Alguém pode ajudar? Para este aplicativo de teste, não pretendo me conectar aos serviços da AWS, apenas à minha instância local.
Parece que seu SDK não possui credenciais, então está tentando procurá-las no Serviço de Metadados de Instância do EC2. Imagino que você não tenha configurado uma função de instância, então isso não está funcionando.
Para acessar um serviço local do DynamoDB na mesma instância, basta definir credenciais fictícias, como set
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
to something. Elas podem conter apenas letras (A–Z, a–z) e números (0–9). O DynamoDB local também exige que você configure a região.Use credenciais fictícias, já que você está executando o sistema localmente. As credenciais não serão usadas.
Inicialize o cliente e passe as credenciais assim: