我希望我的 AWS Lambda 函数能够访问 Amazon Simple Storage Service (Amazon S3) 存储桶。该如何操作?
简短描述
要向您的 Lambda 函数授予对同一 AWS 账户中 Amazon S3 存储桶的访问权限,请执行以下操作:
1. 为 Lambda 函数创建 AWS Identity and Access Management (IAM) 角色,它还将授予对 S3 存储桶的访问权限。
2. 将 IAM 角色配置为 Lambda 函数的执行角色。
3. 验证 S3 存储桶策略没有明确拒绝对 Lambda 函数或其执行角色的访问。
**重要提示:**如果您的 S3 存储桶和函数的 IAM 角色位于不同的账户中,则还必须在 S3 存储桶策略中授予所需的权限。有关更多信息,请参阅如何提供对 Amazon S3 存储桶中的对象的跨账户存取权限?
解决方法
为 Lambda 函数创建 IAM 角色,同时授予对 S3 存储桶的访问权限
1. 按照在 IAM 控制台中创建执行角色中的步骤进行操作。
2. 从 IAM 角色列表中,选择您刚刚创建的角色。
3. 从权限选项卡中,选择添加内联策略。
4. 选择 JSON 选项卡。
5. 输入基于资源的 IAM 策略,该策略授予对 S3 存储桶的访问权限。有关更多信息,请参阅将基于资源的策略用于 AWS Lambda。
授予对特定 S3 存储桶的访问权限的 IAM 策略示例
**重要提示:**用 "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*" 替换您 S3 存储桶的 Amazon Resource Name (ARN)。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
]
}
]
}
6. 选择查看策略。
7. 在名称字段中输入策略名称。
8. 选择 Create policy(创建策略)。
将 IAM 角色配置为 Lambda 函数的执行角色
1. 打开 Lambda 控制台。
2. 选择 Lambda 函数。
3. 在执行角色下,对于现有角色,选择您创建的 IAM 角色。
4. 选择 Save(保存)。
验证 S3 存储桶策略没有明确拒绝对 Lambda 函数或其执行角色的访问
要查看或编辑 S3 存储桶策略,请按照使用 Amazon S3 控制台添加存储桶策略中的说明进行操作。
**重要提示:**如果您的 S3 存储桶和函数的 IAM 角色位于不同的账户中,则还必须在 S3 存储桶策略中明确授予所需的权限。有关更多信息,请参阅如何提供对 Amazon S3 存储桶中的对象的跨账户存取权限?
IAM S3 存储桶策略示例,该策略向 Lambda 执行角色授予跨账户访问 S3 存储桶的权限
**重要提示:**将 "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*" 替换为您 S3 存储桶的 ARN。将 "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012" 替换为您 Lambda 执行角色的 ARN。
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
]
}
}
]
}
相关信息
AWS Policy Generator