1
resposta

Estou recebendo um erro ao tentar subir uma instância com terraform

Eu estou tentando subir uma instância com terraform e estou recebendo o seguinte erro

Error: configuring Terraform AWS Provider: error validating provider credentials: error calling sts:GetCallerIdentity: operation error STS: GetCallerIdentity, https response error StatusCode: 403, RequestID: 287ab0df-31e2-4982-83ad-fbc7c560a9a8, api error InvalidClientTokenId: The security token included in the request is invalid.
│ 
│   with provider["registry.terraform.io/hashicorp/aws"],
│   on main.tf line 12, in provider "aws":
│   12: provider "aws" {

Já verifiquei o login e a senha mas continuo recebendo o mesmo erro

1 resposta

Oi, Carlos. Tudo bem?

Você está tentando usar as credenciais de logar na conta no terraform? (Email + senha). As credenciais que devemos usar são as que a AWS fornece pelo console dela, você pode ver mais detalhes neste link: https://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey

As chaves de acesso consistem em duas partes: um ID de chave de acesso (por exemplo, AKIAIOSFODNN7EXAMPLE) e uma chave de acesso secreta (por exemplo, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY).

Com possa das chaves, você pode declarar no seu terraform da seguinte forma no bloco do provider:

provider "aws" {
  region     = "us-west-2"
  access_key = "AKIAIOSFODNN7EXAMPLE"
  secret_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}

Funciona, porém não é recomendado, pois suas credenciais ficam expostas e caso você esqueça de remover e você coloque o código no github, outras pessoas terão acesso.

Você pode usar a AWS CLI para configurar sua chave de forma que você não precisa passá-las em texto claro no Terraform. Você pode pegar o link de download e a documentaçhttps://aws.amazon.com/pt/cli/

Tendo a ferramenta instalada, você pode executar aws configure e vai ser solicitado o ID da sua chave, depois a chave em si, a região padrão que você quer usar e o formato de saída dos comandos. Apenas as duas primeiras você precisa preencher.

$ aws configure
AWS Access Key ID [****************5G6E]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [****************RQ9+]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [us-east-1]: 
Default output format [None]: 

Vai ser criado um profile default pra você. Você pode visualizar executando cat ~/.aws/credentials.

$ cat ~/.aws/credentials 
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

E você pode declarar no seu terraform o perfil, ao invés de passar as credenciais.

provider "aws" {
  region     = "us-west-2"
  profile    = "default"
}

Espero ter ajudado. Bons estudos!