# AWS Provider
provider "aws" {
version = "~> 2.0"
region = "us-east-1"
}
provider "aws" {
region = "us-west-2"
access_key = "my-access-key"
secret_key = "my-secret-key"
}
provider "aws" {}
E para chamar o terraform você faz:
$ export AWS_ACCESS_KEY_ID="anaccesskey"
$ export AWS_SECRET_ACCESS_KEY="asecretkey"
$ export AWS_DEFAULT_REGION="sa-east-1"
$ terraform apply
3 – A terceira opção, e talvez a mais comum, é ter um arquivo de credentials compartilhado, com AccessKey e SecretKey separados por profiles (um profile para cada projeto).
Seu arquivo de credenciais (~/.aws/credentials) fica parecido com:
[accounting]
aws_access_key_id = AAWWVXXXXXXXOKAASS
aws_secret_access_key = abclkjiwjASJDFWskadfiw
[customer-xp]
aws_access_key_id = ASDFKJWIWKKKKKKKSOK
aws_secret_access_key = 123KJHGSUUwwsjisjiajsdkfj123KKKK
provider "aws" {
region = "sa-east-1"
shared_credentials_file = "~/.aws/credentials"
profile = "accounting"
}
4 – E por último, você pode fazer a entrega de sua infra a partir de um resource AWS, como uma instância EC2, que pode ter attachado um Role que permite a criação de outros resources. Neste caso, no seu provider é necessário informar a Role a ser utilizada.
provider "aws" {
assume_role {
role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
}
}
Se quiser dar uma olhada na documentação, basta clicar aqui (https://www.terraform.io/docs/providers/aws/index.html).
Tag:AWS, infra as code, terraform