Amazon web services 定义工作角色的困难
我正在尝试构造一个AWS Lambda函数,它可以下载一些数据并将其写入S3存储桶。我遇到的问题是,对S3的写入操作本身会引发Amazon web services 定义工作角色的困难,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我正在尝试构造一个AWS Lambda函数,它可以下载一些数据并将其写入S3存储桶。我遇到的问题是,对S3的写入操作本身会引发PermissionDenied错误 这反过来意味着我没有正确地编写角色。然而,我不确定我做错了什么 我有五个桶,都是mta-gtfs-N上的一些变体。我已将以下角色分配给Lambda函数: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action"
PermissionDenied
错误
这反过来意味着我没有正确地编写角色。然而,我不确定我做错了什么
我有五个桶,都是mta-gtfs-N上的一些变体。我已将以下角色分配给Lambda函数:
{ "Version": "2012-10-17", "Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"s3:*"
],
"Resource": [
"arn:aws:s3:::mta-gtfs-1",
"arn:aws:s3:::mta-gtfs-21",
"arn:aws:s3:::mta-gtfs-11",
"arn:aws:s3:::mta-gtfs-16",
"arn:aws:s3:::mta-gtfs-2"
]
}
] }
有人能发现我的错误吗?您需要在资源字符串的末尾添加一个
/*
,以便访问bucket中的操作。示例:arn:aws:s3::mta-gtfs-1/*
因此,您的资源
数组应该是
"Resource": [
"arn:aws:s3:::mta-gtfs-1/*",
"arn:aws:s3:::mta-gtfs-21/*",
"arn:aws:s3:::mta-gtfs-11/*",
"arn:aws:s3:::mta-gtfs-16/*",
"arn:aws:s3:::mta-gtfs-2/*"
]
上面资源部分的策略将允许像Get
,Put
对象这样的操作。如果要执行诸如S3:ListBucket
之类的bucket级操作,则需要省略/*
,并以当前使用的方式使用资源名称,但对于诸如S3:*Object:
之类的操作,则需要/*
(它也可以是/home/*
之类的“文件夹”前缀)
这是一个用于测试的存储桶。注意/*
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::test"]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::test/*"]
}
]
}
您需要在资源字符串的末尾添加一个/*
,以便访问bucket中的操作。示例:arn:aws:s3::mta-gtfs-1/*
因此,您的资源
数组应该是
"Resource": [
"arn:aws:s3:::mta-gtfs-1/*",
"arn:aws:s3:::mta-gtfs-21/*",
"arn:aws:s3:::mta-gtfs-11/*",
"arn:aws:s3:::mta-gtfs-16/*",
"arn:aws:s3:::mta-gtfs-2/*"
]
上面资源部分的策略将允许像Get
,Put
对象这样的操作。如果要执行诸如S3:ListBucket
之类的bucket级操作,则需要省略/*
,并以当前使用的方式使用资源名称,但对于诸如S3:*Object:
之类的操作,则需要/*
(它也可以是/home/*
之类的“文件夹”前缀)
这是一个用于测试的存储桶。注意/*
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::test"]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::test/*"]
}
]
}
您的政策应改写为:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mta-gtfs-*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::mta-gtfs-*/*"
]
}
]
}
您的政策应改写为:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mta-gtfs-*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::mta-gtfs-*/*"
]
}
]
}
接受这个答案是因为当哈立德的答案起作用时,这个解释了为什么它起作用。接受这个答案是因为当哈立德的答案起作用时,这个解释了为什么它起作用。