【发布时间】:2021-01-25 18:57:48
【问题描述】:
我使用 Terraform 使用通过 shell 调用 terraform 的 python 脚本预置 AWS 资源
os.system('terraform apply')
在启用 MFA 并担任角色后,我发现启用 terraform 身份验证的唯一方法是发布这些环境变量:
os.system('export ASSUMED_ROLE="<>:botocore-session-123";
export AWS_ACCESS_KEY_ID="vfdgdsfg";
export AWS_SECRET_ACCESS_KEY="fgbdzf";
export AWS_SESSION_TOKEN="fsrfserfgs";
export AWS_SECURITY_TOKEN="fsrfserfgs"; terraform apply')
这工作正常,直到我将 s3 配置为后端,执行 terraform 操作,但在状态可以存储在存储桶中之前,我得到标准(非常混乱)异常:
Error: error configuring S3 Backend: Error creating AWS session: AssumeRoleTokenProviderNotSetError: assume role with MFA enabled, but AssumeRoleTokenProvider session option not set.
我读到这个excellent answer 解释说出于安全和其他原因后端配置是分开的。
由于我不想将实际密钥添加到源代码(如帖子所建议的那样),我尝试添加对配置文件的引用,当失败时,我添加了实际密钥只是为了查看它是否可以工作,这它没有。
我的工作理论是,terraform 在幕后启动另一个进程,该进程不访问或继承凭证 e 环境变量。
如何使用 s3 后端,并承担 MFA 角色?
【问题讨论】:
-
这是否也会在
init期间引起问题? -
@MattSchuchard 没有
标签: amazon-web-services terraform multi-factor-authentication