要使用AWS SAM Lambda来访问DynamoDB,您需要为Lambda函数分配适当的IAM角色,并将必要的权限授予该角色。以下是一个解决方法,其中包含了代码示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:PutItem",
"dynamodb:GetItem"
],
"Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/YourTableName"
}
]
}
请将us-east-1
替换为您的DynamoDB表所在的区域,123456789012
替换为您的AWS账号ID,以及YourTableName
替换为您的DynamoDB表的名称。
Role
属性,并将IAM角色的ARN分配给它。示例:Resources:
YourFunctionName:
Type: AWS::Serverless::Function
Properties:
CodeUri: your-code-location
Handler: your-handler-function
Runtime: python3.8
Role: arn:aws:iam::123456789012:role/YourIAMRoleName
请将123456789012
替换为您的AWS账号ID,YourIAMRoleName
替换为您创建的IAM角色的名称。
import boto3
def your_handler(event, context):
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('YourTableName')
# 进行DynamoDB操作
response = table.get_item(
Key={
'id': 'your-item-id'
}
)
# 处理返回结果
item = response['Item']
# ...
return {
'statusCode': 200,
'body': 'Success'
}
请将YourTableName
替换为您的DynamoDB表的名称,并根据您的需求进行其他DynamoDB操作。
以上是一种解决方法,您可以根据您的具体情况进行调整和修改。