如果您在Lambda中使用IAM角色,但Python代码尝试使用Access Key ID和Secret Access Key连接到S3存储桶,则会导致上述问题。为了解决这个问题,您可以通过访问权限策略将S3存储桶的访问权限授予Lambda角色。您还可以通过添加以下代码行来确保角色已正确加载:
import boto3 session = boto3.Session() credentials = session.get_credentials() current_credentials = credentials.get_frozen_credentials() print(current_credentials.access_key) print(current_credentials.secret_key)
如果您仍然遇到问题,可能是IAM角色没有正确的权限。在这种情况下,您应该检查角色的权限并确保它具有与S3存储桶的访问权。
您可以使用以下代码行将访问S3存储桶的权限授予Lambda角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your_bucket_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::your_bucket_name/*" ] } ] }
将“your_bucket_name”替换为您的S3存储桶名称。
一旦IAM角色已正确配置,Lambda函数就能够使用该角色连接到S3存储桶。