我在從 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 策略也能正確應用。我是否缺少存盤桶配置的某些內容?我應該怎么做才能糾正這個問題(當然不要將我的存盤桶設定為完全公開)
uj5u.com熱心網友回復:
此 ARN 對于 S3 存盤桶是錯誤的:
"arn:aws:s3:::my-bucket/",
使其/與存盤桶 ARN 不匹配。 這組檔案是我所知道的準確確定給定資源的 ARN 外觀的最佳位置。
所以你應該把它改成
"arn:aws:s3:::my-bucket",
沒有斜線。也離開"arn:aws:s3:::my-bucket/*",因為這將匹配物件的獲取/放置物件的 arns。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/526584.html
