如何在Terraform中获取AWS账号ID并配置IAM用户的STS策略
解决Terraform中IAM策略填入AWS账号ID的方法
获取AWS账号ID的常用方式
- 推荐方式:使用
aws_caller_identity数据源:自动获取当前Terraform执行环境对应的AWS账号ID,无需硬编码,适配多环境复用场景。 - 不推荐方式:直接硬编码账号ID,灵活性差且存在泄露风险。
修改后的完整代码示例
# 添加数据源获取当前AWS账号ID data "aws_caller_identity" "current" {} resource "aws_iam_user" "product_upload_user" { name = "cc-${terraform.workspace}-product-upload-user" } resource "aws_iam_user_policy" "allow_upload" { user = aws_iam_user.product_upload_user.name policy = data.aws_iam_policy_document.allow_upload.json } data "aws_iam_policy_document" "allow_upload" { statement { sid = "STSToken" effect = "Allow" actions = ["sts:GetFederationToken"] # 用数据源返回的账号ID填充ARN resources = ["arn:aws:sts::${data.aws_caller_identity.current.account_id}:federated-user/S3UploadWebToken"] } }
对应教程策略的中文说明
你参考的英文教程是用于配置Next.js S3上传功能的设置指南,核心策略要求授权IAM用户调用sts:GetFederationToken接口,生成前端上传文件所需的临时凭证。该策略的作用是允许用户获取联邦令牌,后续可通过此令牌生成具备S3上传权限的临时凭证,实现安全的前端直传S3功能。完整配置通常还需补充对应S3桶的操作权限(如s3:PutObject等),可根据教程后续步骤添加到策略文档中。
内容的提问来源于stack exchange,提问作者Bunker
相关产品推荐
相关产品推荐

