Tôi có cơ sở hạ tầng hiện có trong Terraform và đã sử dụng nó được một thời gian. Gần đây tôi đã trao đổi thông tin đăng nhập AWS của máy tính xách tay địa phương của tôi (tín dụng được lưu trữ ~/.aws/credentials
) và nó đã ngừng hoạt động cho đến khi tôi đặt lại các thông tin đăng nhập đó.
Vấn đề là tôi đang tuyên bố các khoản tín dụng trong chính nguồn gốc Terraform nhưng dường như hoàn toàn không sử dụng chúng.
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"
}
Các quyền truy cập ID là 100% tốt. Tôi đang sử dụng cùng một ID tài khoản và khóa bí mật cho cả các aws configure
cài đặt đi vào ~/.aws/credentials
trong phần khai báo biến Terraform ở trên.
Mọi thứ đều hoạt động tốt miễn là có các khoản tín dụng ~/.aws/credentials
nhưng ngay sau khi thông tin cấp độ hệ điều hành không còn nữa (nghĩa là rm ~/.aws/credentials
) tôi nhận được những điều sau khi cố gắng chạy các hoạt động của Terraform, chẳng hạn như 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".
Nếu tôi nhập lại ~/.aws/credentials
bằng cách chạy aws configure
nó sẽ hoạt động tốt trở lại.
Tôi không hiểu - nếu provider
cài đặt của tôi tuyên bố rõ ràng thông tin đăng nhập sẽ sử dụng bên trong mã nguồn Terraform, tại sao cấu hình AWS cấp hệ điều hành của tôi lại có vấn đề?
Làm cách nào tôi có thể làm cho Terraform chỉ sử dụng các khoản tín dụng được xác định trong cấu hình Terraform của tôi và bỏ qua những gì trong hồ sơ người dùng hệ điều hành của tôi?
Chỉnh sửa, nó Terraform v0.11.7
Chỉnh sửa: Xin lưu ý rằng tôi đang cố gắng giải quyết vấn đề tại sao các khoản tín dụng được khai báo tĩnh không được sử dụng trong tuyên bố của nhà cung cấp. Không tìm kiếm các phương pháp thay thế hoặc giải pháp thay thế. Cảm ơn.
AWS_PROFILE
hoặcAWS_DEFAULT_PROFILE
các biến môi trường không được đặt vì đó là một gợi ý cho AWS SDK mà nó sẽ tìm trong tệp thông tin đăng nhập.