Saya memiliki infrastruktur yang ada di Terraform dan telah menggunakannya untuk sementara waktu. Baru-baru ini saya menukar kredensial AWS laptop lokal saya (kredit yang disimpan ~/.aws/credentials
) dan berhenti bekerja sampai saya mengatur kembali kredensial tersebut.
Masalahnya adalah bahwa saya mendeklarasikan kredit dalam sumber Terraform itu sendiri tetapi tampaknya tidak menggunakannya sama sekali.
terraform {
backend "s3" {
bucket = "example_tf_states"
key = "global/vpc/us_east_1/example_state.tfstate"
encrypt = true
region = "us-east-1"
}
}
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}
variable "access_key" {
default = "<hidden_for_stack_exchange_post>"
}
variable "secret_key" {
default = "<hidden_for_stack_exchange_post>"
}
variable "region" {
default = "us-east-1"
}
Izin ID akses 100% baik. Saya menggunakan ID akun yang sama dan kunci rahasia baik untuk aws configure
pengaturan yang masuk ~/.aws/credentials
seperti saya dalam deklarasi variabel Terraform di atas.
Semuanya berfungsi dengan baik selama kredibilitas ada ~/.aws/credentials
tetapi segera setelah kredensial tingkat OS hilang (yaitu rm ~/.aws/credentials
) saya mendapatkan yang berikut ketika mencoba menjalankan operasi Terraform, seperti terraform plan
:
Failed to load backend:
Error configuring the backend "s3": No valid credential sources found for AWS Provider.
Please see https://terraform.io/docs/providers/aws/index.html for more information on
providing credentials for the AWS Provider
Please update the configuration in your Terraform files to fix this error.
If you'd like to update the configuration interactively without storing
the values in your configuration, run "terraform init".
Jika saya mengisi kembali ~/.aws/credentials
dengan menjalankannya aws configure
akan berfungsi dengan baik lagi.
Saya tidak mengerti - jika provider
pengaturan saya secara eksplisit mendeklarasikan kredensial untuk digunakan di dalam kode sumber Terraform, mengapa konfigurasi AWS tingkat OS sama sekali?
Bagaimana saya bisa membuat Terraform hanya menggunakan kredit yang ditentukan dalam konfigurasi Terraform saya dan mengabaikan apa yang ada di profil pengguna OS saya?
Edit, ini Terraform v0.11.7
Sunting: Harap dicatat bahwa saya mencoba menyelesaikan masalah tentang mengapa kredit yang dinyatakan secara statis tidak digunakan dalam deklarasi penyedia. Tidak mencari metode atau solusi alternatif. Terima kasih.
AWS_PROFILE
atauAWS_DEFAULT_PROFILE
tidak ditetapkan karena mereka adalah petunjuk untuk AWS SDK bahwa itu harus terlihat dalam file kredensial.