执行Terraform脚本遇IAM角色及S3对象未找到错误求助
Terraform部署AWS资源报错排查思路
针对IAM角色EXE-USE1-IAMROLE-SPLT-LOA-TEST的NoSuchEntity错误
- 核对脚本中
aws_iam_role资源的name字段,确保和报错角色名完全一致(AWS资源名称区分大小写),确认该角色已在脚本中定义且配置无语法错误。 - 直接验证AWS账户中是否存在该角色:执行
aws iam get-role --role-name EXE-USE1-IAMROLE-SPLT-LOA-TEST命令,或登录AWS控制台IAM角色页面搜索该名称,排除手动删除或未创建的情况。 - 检查资源依赖顺序:如果有其他资源(如Lambda、ECS任务)依赖该角色,确认角色创建优先于依赖资源,必要时通过
depends_on显式声明依赖,避免并行创建导致的时序问题。 - 确认Terraform使用的AWS凭证:检查当前凭证所属的AWS账户是否为目标账户,且凭证拥有
iam:GetRole权限,排除权限或账户上下文错误。
针对S3对象ADMoveTerminatedAccount-0.0.1-SNAPSHOT.jar的NotFound错误
- 核对桶名和对象键的拼写与大小写:S3桶名和对象键均区分大小写,确认脚本中配置的
bucket和key参数与实际S3中的完全匹配,包括对象所在的文件夹路径(如果有)。 - 验证对象实际存在:执行
aws s3 ls s3://exe-use1-s3-splt-loa-fix-test/ADMoveTerminatedAccount-0.0.1-SNAPSHOT.jar命令,或登录S3控制台查看目标桶内是否存在该文件,排除文件未上传或路径错误的情况。 - 检查权限配置:确认Terraform使用的AWS凭证拥有
s3:GetObject权限,同时检查S3桶和对象的访问策略,确保没有设置阻止读取的权限规则。 - 排查Terraform资源配置:如果是通过
data "aws_s3_object"引用该对象,确认数据源参数配置正确;如果是其他资源(如Lambda)引用该对象,检查引用的S3路径是否无误。
内容的提问来源于stack exchange,提问作者user2961454
相关产品推荐
相关产品推荐

