1
resposta

Credenciais com erro?

terraform {
    required_providers{
        aws = {
            source = "hashicorp/aws"
            version = "~> 3.27"
        }
    }

    required_version = ">= 0.14.9"
}

provider "aws" {
    profile = "default"  
    region = "us-east-2"
    access_key = "email@email"
    secret_key = "senha"
}

resource "aws_instance" "app_server" {
  ami = "ami-0283a57753b18025" 
  instance_type = "t2.micro" 

  tags = {
    "Name" = "Primeira Instancia"
  }
}

Quando executo "..\terraform.exe plan" dá a mensagem abaixo.

Error: error configuring Terraform AWS Provider: error validating provider credentials: error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid. │ status code: 403, request id: 7017d558-3582-44bd-aa19-49c6ab915df0 │ │ with provider["registry.terraform.io/hashicorp/aws"], │ on main.tf line 12, in provider "aws": │ 12: provider "aws" {

Eu já verifiquei e o e-mail e senha estão inseridos corretamente. O que pode ser? Uma outra dúvida, na aula não ensina como inserir as credenciais. Há alguma razão para isto?

1 resposta

Oi, Eduardo. Tudo bem?

Você chegou a fazer o passo de instalação do AWS CLI e configurou passando as credenciais de acesso? (executando o comando aws configure e seguindo com o preenchimento das informações)

Se sim, a aws-cli vai criar um perfil default nas configurações dela e colocar suas credenciais, então se você está passando aquela linha profile = "default" no seu main.tf é pra isso que serve, e você nem precisa passar as credenciais embaixo.

Se não, para instalar o AWS CLI você pode usar o tutorial oficial neste link

As credenciais você pode criar nesse [link]((https://us-east-1.console.aws.amazon.com/iamv2/home#/security_credentials?section=IAM_credentials) e para criar basta procurar por "Chaves de acesso" e clicar em "Criar chave de acesso": Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Depois de criar a chave de acesso, você baixa o arquivo csv que contem elas, e executa o comando aws configure, passando o ID e depois a SECRET contida no arquivo csv, dessa forma vai ser criado o profile default e você nem precisará passar as senhas no arquivo. Insira aqui a descrição dessa imagem para ajudar na acessibilidadeEsse comando vai criar um arquivo no diretório ~/.aws chamado credentials contendo o nome do perfil e as credenciais que você passou no comando: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

É daí que o terraform vai buscar as informações quando você passar o profile = default. Se você não quiser usar o profile = "default" executa os seguintes comandos no terminal passando os valores da sua chave:

export AWS_ACCESS_KEY_ID=seu-id-da-chave
export AWS_SECRET_ACCESS_KEY=seu-segrego-da-chave

Esses comandos vão criar variáveis de ambiente contendo o valor das credenciais, assim você não precisa nem passar no seu arquivo, pois o terraform vai detectá-las. Mas caso queira pode passar elas diretamente no arquivo também.

provider "aws" {
    region = "us-east-2"
    access_key = "o_id_da_sua_chave"
    secret_key = "o_seguredo_da_sua_chave"
}

Você estava passando email e senha, mas não são essas as credenciais que devem ser usadas.

Na documentação indicada pelo curso tem algumas dessas informações neste link

Espero ter ajudado. Bons estudos!