【发布时间】:2022-11-03 21:20:37
【问题描述】:
我在从 lambda 访问我的 AWS 存储桶时遇到了一些问题。我使用 terraform(此处为 terraform newbie)创建和配置我的存储桶/lambdas。
这是创建 S3 存储桶的模块:
module "create-my-bucket" {
source = "terraform-aws-modules/s3-bucket/aws"
bucket = "my-bucket"
acl = "private"
versioning = {
enabled = true
}
block_public_acls = true
block_public_policy = true
restrict_public_buckets = true
ignore_public_acls = true
attach_deny_insecure_transport_policy = true
server_side_encryption_configuration = {
rule = {
apply_server_side_encryption_by_default = {
sse_algorithm = "AES256"
}
}
}
}
这是为 lambda 配置策略的模块:
module "my_lambda_policy" {
source = "terraform-aws-modules/iam/aws//modules/iam-policy"
name = "validate_lambda_policy"
path = "/"
description = "Validate Policy"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"s3:Put*",
"s3:Get*",
"s3:List*",
"ses:SendEmail"
],
"Resource": [
"arn:aws:s3:::my-bucket/",
"arn:aws:s3:::my-bucket/*",
"arn:aws:ses:..."
]
}]
}
EOF
}
Terraform 正确地创建了我的存储桶并配置了我的 lambda,但是,当我的 lambda 尝试执行“ListObjectsV2”或“GetObject”操作时,它会得到“拒绝访问”。
我已经为我的政策制定了一些 SES 政策。这些策略已正确应用(我的 lambda 发送邮件),因此我希望我的 S3 策略也能正确应用。我是否缺少存储桶配置的某些内容?我应该怎么做才能纠正这个问题(当然不要将我的存储桶完全公开)
【问题讨论】:
标签: amazon-web-services amazon-s3 terraform